264 lines
8.9 KiB
Puppet
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,
|
|
}
|
|
}
|