diff --git a/contrail/environment/modules/contrail/manifests/compute/config.pp b/contrail/environment/modules/contrail/manifests/compute/config.pp index 55e02416..63f7dd57 100644 --- a/contrail/environment/modules/contrail/manifests/compute/config.pp +++ b/contrail/environment/modules/contrail/manifests/compute/config.pp @@ -47,6 +47,7 @@ $nova_rabbit_hosts = $::contrail::params::nova_rabbit_hosts, $glance_management_address = $::contrail::params::os_glance_mgmt_address, $host_roles = $::contrail::params::host_roles, + $enable_ceilometer = $::contrail::params::enable_ceilometer, $neutron_ip_to_use = $::contrail::params::neutron_ip_to_use, $rabbit_use_ssl = $::contrail::params::contrail_amqp_ssl, $kombu_ssl_ca_certs = $::contrail::params::kombu_ssl_ca_certs, @@ -223,6 +224,13 @@ $nova_params['DEFAULT/vcpu_pin_set'] = { value => build_vcpu_pin_list($core_mask) } } + if ($enable_ceilometer) { + $nova_params['DEFAULT/instance_usage_audit'] = { value => 'True'} + $nova_params['DEFAULT/instance_usage_audit_period'] = { value => 'hour'} + $nova_params['DEFAULT/notify_on_state_change'] = { value => 'vm_and_task_state'} + $nova_params['DEFAULT/notification_driver'] = { value => "nova.openstack.common.notifier.rpc_notifier,ceilometer.compute.nova_notifier" } + } + if ($rabbit_use_ssl) { contrail::lib::rabbitmq_ssl{'compute_rabbitmq':rabbit_use_ssl => $rabbit_use_ssl} diff --git a/contrail/environment/modules/contrail/manifests/compute/service.pp b/contrail/environment/modules/contrail/manifests/compute/service.pp index 3a9e99de..523a8341 100644 --- a/contrail/environment/modules/contrail/manifests/compute/service.pp +++ b/contrail/environment/modules/contrail/manifests/compute/service.pp @@ -1,10 +1,11 @@ class contrail::compute::service( $nova_compute_status = $::contrail::compute::config::nova_compute_status, - $host_control_ip = $::contrail::params::host_ip, - $compute_ip_list = $::contrail::params::compute_ip_list, - $nfs_server = $::contrail::params::nfs_server, - $contrail_logoutput = $::contrail::params::contrail_logoutput, - $upgrade_needed = $::contrail::params::upgrade_needed, + $host_control_ip = $::contrail::params::host_ip, + $compute_ip_list = $::contrail::params::compute_ip_list, + $nfs_server = $::contrail::params::nfs_server, + $contrail_logoutput = $::contrail::params::contrail_logoutput, + $upgrade_needed = $::contrail::params::upgrade_needed, + $enable_ceilometer = $::contrail::params::enable_ceilometer, ) { if !('toragent' in $contrail::params::host_roles) { service { 'supervisor-vrouter': diff --git a/contrail/environment/modules/contrail/manifests/profile/compute.pp b/contrail/environment/modules/contrail/manifests/profile/compute.pp index e524c727..b352c40d 100644 --- a/contrail/environment/modules/contrail/manifests/profile/compute.pp +++ b/contrail/environment/modules/contrail/manifests/profile/compute.pp @@ -18,28 +18,66 @@ $metering_secret = $::contrail::params::os_metering_secret, $openstack_verbose = $::contrail::params::os_verbose, $openstack_debug = $::contrail::params::os_debug, + $keystone_version = $::contrail::params::keystone_version, + $keystone_ip_to_use = $::contrail::params::keystone_ip_to_use, + $metering_secret = $::contrail::params::os_metering_secret, + $ceilometer_password = $::contrail::params::os_ceilometer_password, $is_there_roles_to_delete = $::contrail::params::is_there_roles_to_delete, $openstack_rabbit_servers = $::contrail::params::openstack_rabbit_hosts, ) { - if ($enable_module and "compute" in $host_roles and $is_there_roles_to_delete == false) { - contain ::contrail::profile::nova::compute - if ($enable_ceilometer) { - #contain ::contrail::ceilometer::agent::auth - if !defined(Class['::ceilometer']) { - class { '::ceilometer': - metering_secret => $metering_secret, - debug => $openstack_verbose, - verbose => $openstack_debug, - rabbit_hosts => $openstack_rabbit_servers, - rpc_backend => 'rabbit', - } - } - class { '::ceilometer::agent::compute': } + if ($enable_module and "compute" in $host_roles and $is_there_roles_to_delete == false) { + contain ::contrail::profile::nova::compute + if ($enable_ceilometer and !("openstack" in $host_roles)) { + #follow code is not needed if openstack role is there in host_roles + #contain ::contrail::ceilometer::agent::auth + $auth_url = "http://${keystone_ip_to_use}:5000/${keystone_version}" + $identity_uri = "http://${keystone_ip_to_use}:35357/${keystone_version}" + $auth_password = $ceilometer_password + $auth_tenant_name = 'services' + $auth_username = 'ceilometer' + if ($keystone_version == "v3" ) { + $domain_name = 'Default' + } else { + $domain_name = '' + } + if !defined(Class['::ceilometer']) { + class { '::ceilometer': + metering_secret => $metering_secret, + debug => $openstack_verbose, + verbose => $openstack_debug, + rabbit_hosts => $openstack_rabbit_servers, + rpc_backend => 'rabbit', + rabbit_password => 'guest' } - } elsif ((!("compute" in $host_roles)) and ($contrail_roles["compute"] == true)) { - notify { "uninstalling compute":; } - contain ::contrail::uninstall_compute - Notify["uninstalling compute"]->Class['::contrail::uninstall_compute'] + } + class { '::ceilometer::agent::compute': } + class { '::ceilometer::agent::auth': + auth_url => $auth_url, + auth_password => $auth_password, + auth_tenant_name => $auth_tenant_name, + auth_user => $auth_username, + auth_project_domain_name => $domain_name, + auth_user_domain_name => $domain_name + } + ceilometer_config { + 'service_credentials/os_auth_url' : value => $auth_url; + 'service_credentials/os_username' : value => $auth_username; + 'service_credentials/os_password' : value => $auth_password; + 'service_credentials/os_tenant_name' : value => $auth_tenant_name; + 'keystone_authtoken/auth_uri' : value => $auth_url; + 'keystone_authtoken/identity_uri' : value => $identity_uri; + 'keystone_authtoken/admin_tenant_name' : value => $auth_tenant_name; + 'keystone_authtoken/admin_user' : value => $auth_username; + 'keystone_authtoken/admin_password' : value => $auth_password; + 'database/time_to_live' : value => '7200'; + 'publisher/telemetry_secret' : value => $metering_secret; + 'DEFAULT/auth_strategy' : value => 'keystone'; + } -> Service['ceilometer-agent-compute'] } + } elsif ((!("compute" in $host_roles)) and ($contrail_roles["compute"] == true)) { + notify { "uninstalling compute":; } + contain ::contrail::uninstall_compute + Notify["uninstalling compute"]->Class['::contrail::uninstall_compute'] + } } diff --git a/contrail/environment/modules/contrail/manifests/profile/openstack/ceilometer.pp b/contrail/environment/modules/contrail/manifests/profile/openstack/ceilometer.pp index 559751f4..5dcea90a 100644 --- a/contrail/environment/modules/contrail/manifests/profile/openstack/ceilometer.pp +++ b/contrail/environment/modules/contrail/manifests/profile/openstack/ceilometer.pp @@ -16,8 +16,7 @@ $sync_db = $::contrail::params::os_sync_db, $package_sku = $::contrail::params::package_sku, $ceilometer_password = $::contrail::params::os_ceilometer_password, - $openstack_rabbit_servers = $::contrail::params::openstack_rabbit_hosts, - $openstack_rabbit_server_to_use = $::contrail::params::openstack_rabbit_server_to_use, + $openstack_rabbit_hosts = $::contrail::params::openstack_rabbit_hosts, $openstack_rabbit_port = $::contrail::params::rabbit_port_real, $controller_mgmt_address = $::contrail::params::os_controller_mgmt_address, $keystone_ip_to_use = $::contrail::params::keystone_ip_to_use, @@ -25,7 +24,8 @@ $kombu_ssl_ca_certs = $::contrail::params::kombu_ssl_ca_certs, $kombu_ssl_certfile = $::contrail::params::kombu_ssl_certfile, $kombu_ssl_keyfile = $::contrail::params::kombu_ssl_keyfile, - $keystone_version = $::contrail::params::keystone_version + $keystone_version = $::contrail::params::keystone_version, + $host_roles = $::contrail::params::host_roles, ) { $database_ip_to_use = $database_ip_list[0] $mongo_connection = join([ "mongodb://ceilometer:", $mongo_password, "@", join($database_ip_list,':27017,') ,":27017/ceilometer?replicaSet=rs-ceilometer" ],'') @@ -62,8 +62,7 @@ metering_secret => $metering_secret, debug => $openstack_verbose, verbose => $openstack_debug, - rabbit_host => $openstack_rabbit_server_to_use, - rabbit_port => $openstack_rabbit_port, + rabbit_hosts => $openstack_rabbit_hosts, rabbit_use_ssl => $rabbit_use_ssl, kombu_ssl_ca_certs => $kombu_ssl_ca_certs, kombu_ssl_certfile => $kombu_ssl_certfile, @@ -71,6 +70,10 @@ rpc_backend => 'rabbit', rabbit_password => $rabbit_password } -> + file { '/etc/ceilometer/pipeline.yaml': + ensure => file, + content => template('contrail/pipeline.yaml.erb'), + } -> ceilometer_config { 'database/time_to_live' : value => '7200'; 'publisher/telemetry_secret' : value => $metering_secret; @@ -83,11 +86,7 @@ } # NOTE: Added a ordering here, creates dependcy cycle for HA case. - class { '::ceilometer::collector': } -> - file { '/etc/ceilometer/pipeline.yaml': - ensure => file, - content => template('contrail/pipeline.yaml.erb'), - } + class { '::ceilometer::collector': } case $package_sku { /13\.0/: { @@ -97,20 +96,23 @@ keystone_password => $ceilometer_password, keystone_tenant => $auth_tenant_name, } - class { '::ceilometer::agent::auth': - auth_url => $auth_url, - auth_password => $auth_password, - auth_tenant_name => $auth_tenant_name, - auth_user => $auth_username, - auth_project_domain_name => $domain_name, - auth_user_domain_name => $domain_name - } - ceilometer_config { - 'service_credentials/os_auth_url' : value => $auth_url; - 'service_credentials/os_username' : value => $auth_username; - 'service_credentials/os_password' : value => $auth_password; - 'service_credentials/os_tenant_name' : value => $auth_tenant_name; - } + class { '::ceilometer::agent::auth': + auth_url => $auth_url, + auth_password => $auth_password, + auth_tenant_name => $auth_tenant_name, + auth_user => $auth_username, + auth_project_domain_name => $domain_name, + auth_user_domain_name => $domain_name + } + ceilometer_config { + 'service_credentials/os_auth_url' : value => $auth_url; + 'service_credentials/os_username' : value => $auth_username; + 'service_credentials/os_password' : value => $auth_password; + 'service_credentials/os_tenant_name' : value => $auth_tenant_name; + } + if ('compute' in $host_roles) { + class { '::ceilometer::agent::compute': } + } } default: { @@ -121,12 +123,15 @@ keystone_password => $ceilometer_password, keystone_tenant => $auth_tenant_name, } - class { '::ceilometer::agent::auth': - auth_url => $auth_url, - auth_password => $auth_password, - auth_tenant_name => $auth_tenant_name, - auth_user => $auth_username, - } + class { '::ceilometer::agent::auth': + auth_url => $auth_url, + auth_password => $auth_password, + auth_tenant_name => $auth_tenant_name, + auth_user => $auth_username, + } + if ('compute' in $host_roles) { + class { '::ceilometer::agent::compute': } + } } } if $::osfamily != 'Debian' { diff --git a/contrail/environment/modules/contrail/manifests/profile/openstack_controller.pp b/contrail/environment/modules/contrail/manifests/profile/openstack_controller.pp index 0a98e958..6709e7c7 100644 --- a/contrail/environment/modules/contrail/manifests/profile/openstack_controller.pp +++ b/contrail/environment/modules/contrail/manifests/profile/openstack_controller.pp @@ -46,10 +46,18 @@ if ($enable_module and 'openstack' in $host_roles and $is_there_roles_to_delete == false) { if ($enable_ceilometer) { + if ('compute' in $host_roles) { + $ceilometer_compute = 'ceilometer-agent-compute' + } else { + $ceilometer_compute = "" + } $ceilometer_packages = ['ceilometer-common', 'ceilometer-backend-package', + 'ceilometer-collector', + 'ceilometer-agent-notification', 'ceilometer-agent-central', - 'ceilometer-api'] + 'ceilometer-api', + $ceilometer_compute ] } else { $ceilometer_packages = [] } @@ -57,6 +65,7 @@ "${glance::params::api_package_name}", "${glance::params::registry_package_name}", "${cinder::params::package_name}", + "${cinder::params::scheduler_package}", "${heat::params::api_package_name}", "${heat::params::engine_package_name}", "${heat::params::common_package_name}", @@ -65,7 +74,8 @@ "${nova::params::numpy_package_name}", "${mysql::params::python_package_name}", "python-nova", - "python-keystone", "python-cinderclient", + "python-keystone", + "python-cinderclient", $ceilometer_packages] # api_package is false in case of Centos if $::cinder::params::api_package {