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

264 lines
8.9 KiB
Puppet

class openstack::ceilometer::params (
$api_port = 8777,
$region_name = undef,
$service_name = 'openstack-ceilometer',
$service_create = false,
) { }
class openstack::ceilometer {
include ::platform::amqp::params
include ::platform::params
include ::openstack::ceilometer::params
include ::platform::kubernetes::params
class { '::ceilometer':
rabbit_use_ssl => $::platform::amqp::params::ssl_enabled,
default_transport_url => $::platform::amqp::params::transport_url,
rabbit_qos_prefetch_count => 100,
}
if ($::openstack::ceilometer::params::service_create and
$::platform::params::init_keystone) {
include ::ceilometer::keystone::auth
if ($::platform::params::distributed_cloud_role != 'systemcontroller' and
$::platform::kubernetes::params::enabled != true) {
include ::openstack::gnocchi::params
class { '::ceilometer::db::sync':
extra_params => '--skip-metering-database',
require => [Keystone::Resource::Service_identity["ceilometer", "gnocchi"]]
}
if $::platform::params::vswitch_type !~ '^ovs' {
include ::gnocchi::keystone::authtoken
$os_auth_url = $::gnocchi::keystone::authtoken::auth_url
$os_username = $::gnocchi::keystone::authtoken::username
$os_user_domain = $::gnocchi::keystone::authtoken::user_domain_name
$os_project_name = $::gnocchi::keystone::authtoken::project_name
$os_project_domain = $::gnocchi::keystone::authtoken::project_domain_name
$os_region_name = $::gnocchi::keystone::authtoken::region_name
$os_auth_type = $::gnocchi::keystone::authtoken::auth_type
$os_password = $::gnocchi::keystone::authtoken::password
$os_interface = 'internalURL'
Class['::ceilometer::db::sync'] ->
exec { 'Creating vswitch resource types':
command => 'gnocchi resource-type create vswitch_engine \
-a cpu_id:number:true:min=0 \
-a host:string:true:max_length=64;
gnocchi resource-type create vswitch_interface_and_port \
-a host:string:false:max_length=64 \
-a network_uuid:string:false:max_length=255 \
-a network_id:string:false:max_length=255 \
-a link-speed:number:false:min=0',
environment => ["OS_AUTH_URL=${os_auth_url}",
"OS_USERNAME=${os_username}",
"OS_USER_DOMAIN_NAME=${os_user_domain}",
"OS_PROJECT_NAME=${os_project_name}",
"OS_PROJECT_DOMAIN_NAME=${os_project_domain}",
"OS_REGION_NAME=${os_region_name}",
"OS_INTERFACE=${os_interface}",
"OS_AUTH_TYPE=${os_auth_type}",
"OS_PASSWORD=${os_password}"],
}
}
}
}
include ::ceilometer::agent::auth
include ::openstack::cinder::params
include ::openstack::glance::params
# FIXME(mpeters): generic parameter can be moved to the puppet module
ceilometer_config {
'DEFAULT/executor_thread_pool_size': value => 16;
'DEFAULT/shuffle_time_before_polling_task': value => 30;
'DEFAULT/batch_polled_samples': value => true;
'oslo_messaging_rabbit/rpc_conn_pool_size': value => 10;
'oslo_messaging_rabbit/socket_timeout': value => 1.00;
'compute/resource_update_interval': value => 60;
'DEFAULT/region_name_for_services': value => $::openstack::ceilometer::params::region_name;
}
if $::personality == 'controller' {
include ::platform::memcached::params
$memcache_ip = $::platform::memcached::params::listen_ip
$memcache_port = $::platform::memcached::params::tcp_port
$memcache_ip_version = $::platform::memcached::params::listen_ip_version
$memcache_servers = $memcache_ip_version ? {
4 => "'$memcache_ip:$memcache_port'",
6 => "'inet6:[$memcache_ip]:$memcache_port'",
}
oslo::cache { 'ceilometer_config':
enabled => true,
backend => 'dogpile.cache.memcached',
memcache_servers => $memcache_servers,
expiration_time => 86400,
}
}
if $::platform::params::region_config {
if $::openstack::glance::params::region_name != $::platform::params::region_2_name {
$shared_service_glance = [$::openstack::glance::params::service_type]
} else {
$shared_service_glance = []
}
# skip the check if cinder region name has not been configured
if ($::openstack::cinder::params::region_name != undef and
$::openstack::cinder::params::region_name != $::platform::params::region_2_name) {
$shared_service_cinder = [$::openstack::cinder::params::service_type,
$::openstack::cinder::params::service_type_v2,
$::openstack::cinder::params::service_type_v3]
} else {
$shared_service_cinder = []
}
$shared_services = concat($shared_service_glance, $shared_service_cinder)
ceilometer_config {
'DEFAULT/region_name_for_shared_services': value => $::platform::params::region_1_name;
'DEFAULT/shared_services_types': value => join($shared_services,',');
}
}
}
class openstack::ceilometer::agent::notification {
include ::platform::params
$cgcs_fs_directory = '/opt/cgcs'
$ceilometer_directory = "${cgcs_fs_directory}/ceilometer"
$ceilometer_directory_csv = "${ceilometer_directory}/csv"
$ceilometer_directory_versioned = "${ceilometer_directory}/${::platform::params::software_version}"
file { "/etc/ceilometer/pipeline.yaml":
ensure => 'present',
content => template('openstack/pipeline.yaml.erb'),
mode => '0640',
owner => 'root',
group => 'ceilometer',
tag => 'ceilometer-yamls',
} ->
file { "${ceilometer_directory}":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
} ->
file { "${ceilometer_directory_csv}":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
} ->
file { "${ceilometer_directory_versioned}":
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
} ->
file { "${ceilometer_directory_versioned}/pipeline.yaml":
source => '/etc/ceilometer/pipeline.yaml',
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0640',
}
file { "/etc/ceilometer/gnocchi_resources.yaml":
ensure => 'present',
content => template('openstack/gnocchi_resources.yaml.erb'),
mode => '0640',
owner => 'root',
group => 'ceilometer',
tag => 'ceilometer-yamls',
}
# Limit the number of ceilometer agent notification workers to 10 max
$agent_workers_count = min($::platform::params::eng_workers_by_2, 10)
if $::platform::params::system_type == 'All-in-one' {
$batch_timeout = 25
} else {
$batch_timeout = 5
}
# FIXME(mpeters): generic parameter can be moved to the puppet module
ceilometer_config {
'DEFAULT/csv_location': value => "${ceilometer_directory_csv}";
'DEFAULT/csv_location_strict': value => true;
'notification/workers': value => $agent_workers_count;
'notification/batch_size': value => 100;
'notification/batch_timeout': value => $batch_timeout;
}
}
class openstack::ceilometer::polling (
$instance_polling_interval = 600,
$instance_cpu_polling_interval = 30,
$instance_disk_polling_interval = 600,
$ipmi_polling_interval = 600,
$ceph_polling_interval = 600,
$image_polling_interval = 600,
$volume_polling_interval = 600,
) {
include ::platform::params
include ::platform::kubernetes::params
file { "/etc/ceilometer/polling.yaml":
ensure => 'present',
content => template('openstack/polling.yaml.erb'),
mode => '0640',
owner => 'root',
group => 'ceilometer',
tag => 'ceilometer-yamls',
}
if $::personality == 'controller' {
$central_namespace = true
} else {
$central_namespace = false
}
if (str2bool($::disable_worker_services) or
$::platform::kubernetes::params::enabled) {
$agent_enable = false
$compute_namespace = false
file { '/etc/pmon.d/ceilometer-polling.conf':
ensure => absent,
}
} else {
$agent_enable = true
if str2bool($::is_worker_subfunction) {
$pmon_target = "/etc/ceilometer/ceilometer-polling-compute.conf.pmon"
$compute_namespace = true
} else {
$pmon_target = "/etc/ceilometer/ceilometer-polling.conf.pmon"
$compute_namespace = false
}
file { "/etc/pmon.d/ceilometer-polling.conf":
ensure => link,
target => $pmon_target,
owner => 'root',
group => 'root',
mode => '0640',
}
}
class { '::ceilometer::agent::polling':
enabled => $agent_enable,
central_namespace => $central_namespace,
compute_namespace => $compute_namespace,
}
}