config/puppet-manifests/src/modules/openstack/manifests/glance.pp

201 lines
5.4 KiB
Puppet

class openstack::glance::params (
$service_enabled = true,
$api_port = 9292,
$api_host,
$region_name = undef,
$service_type = 'image',
$glance_directory = '/opt/cgcs/glance',
$glance_image_conversion_dir = '/opt/img-conversions/glance',
$enabled_backends = [],
$service_create = false,
$configured_registry_host = '0.0.0.0',
$glance_cached = false,
$glance_delete_interval = 6,
$rbd_store_pool = 'images',
$rbd_store_ceph_conf = '/etc/ceph/ceph.conf',
) { }
class openstack::glance
inherits ::openstack::glance::params {
if $service_enabled {
include ::platform::params
include ::platform::amqp::params
file { "${glance_directory}":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
} ->
file { "${glance_directory}/image-cache":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
} ->
file { "${glance_directory}/images":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
} ->
file { "${glance_image_conversion_dir}":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
}
$bind_host = $::platform::network::mgmt::params::subnet_version ? {
6 => '::',
default => '0.0.0.0',
}
if $::platform::params::init_database {
class { "::glance::db::postgresql":
encoding => 'UTF8',
}
}
include ::glance::api::authtoken
include ::glance::registry::authtoken
class { '::glance::registry':
bind_host => $bind_host,
workers => $::platform::params::eng_workers,
}
# Run glance-manage to purge deleted rows daily at the 45 minute mark
cron { 'glance-purge-deleted':
ensure => 'present',
command => '/usr/bin/glance-purge-deleted-active',
environment => 'PATH=/bin:/usr/bin:/usr/sbin',
minute => '45',
hour => '*/24',
user => 'root',
}
cron { 'glance-cleaner':
ensure => 'present',
command => "/usr/bin/glance-cleaner --config-file /etc/glance/glance-api.conf --delete-interval $glance_delete_interval",
environment => 'PATH=/bin:/usr/bin:/usr/sbin',
minute => '35',
hour => "*/$glance_delete_interval",
user => 'root',
}
# In glance cached mode run the pruner once every 6 hours to clean
# stale or orphaned images
if $::openstack::glance::params::glance_cached {
cron { 'glance-cache-pruner':
ensure => 'present',
command => '/usr/bin/glance-cache-pruner --config-file /etc/glance/glance-api.conf',
environment => 'PATH=/bin:/usr/bin:/usr/sbin',
minute => '15',
hour => '*/6',
user => 'root',
}
}
class { '::glance::notify::rabbitmq':
rabbit_use_ssl => $::platform::amqp::params::ssl_enabled,
default_transport_url => $::platform::amqp::params::transport_url,
}
if 'file' in $enabled_backends {
include ::glance::backend::file
}
}
}
class openstack::glance::firewall
inherits ::openstack::glance::params {
platform::firewall::rule { 'glance-api':
service_name => 'glance',
ports => $api_port,
}
}
class openstack::glance::haproxy
inherits ::openstack::glance::params {
platform::haproxy::proxy { 'glance-restapi':
server_name => 's-glance',
public_port => $api_port,
private_port => $api_port,
private_ip_address => $api_host,
}
}
class openstack::glance::api
inherits ::openstack::glance::params {
include ::platform::params
if $service_enabled {
if ($::openstack::glance::params::service_create and
$::platform::params::init_keystone) {
include ::glance::keystone::auth
}
include ::platform::params
$api_workers = $::platform::params::eng_workers
include ::platform::network::mgmt::params
# magical hack for magical config - glance option registry_host requires brackets
if $configured_registry_host == '0.0.0.0' {
$registry_host = $::platform::network::mgmt::params::subnet_version ? {
6 => '::0',
default => '0.0.0.0',
# TO-DO(mmagr): Add IPv6 support when hostnames are used
}
} else {
$registry_host = $configured_registry_host
}
# enable copy-on-write cloning from glance to cinder only for rbd
# this speeds up creation of volumes from images
$show_image_direct_url = ('rbd' in $enabled_backends)
class { '::glance::api':
bind_host => $api_host,
registry_host => $registry_host,
workers => $api_workers,
sync_db => $::platform::params::init_database,
show_image_direct_url => $show_image_direct_url,
}
if 'rbd' in $enabled_backends {
class { '::glance::backend::rbd':
rbd_store_pool => $rbd_store_pool,
rbd_store_ceph_conf => $rbd_store_ceph_conf,
}
}
include ::openstack::glance::firewall
include ::openstack::glance::haproxy
}
}
class openstack::glance::api::reload {
platform::sm::restart {'glance-api': }
}
class openstack::glance::api::runtime
inherits ::openstack::glance::params {
if $service_enabled {
include ::openstack::glance::api
class { '::openstack::glance::api::reload':
stage => post
}
}
}