Merge branch 'master' of github.com:enovance/puppet-ceilometer

This commit is contained in:
François Charlier 2012-12-07 16:07:35 +01:00
commit e081f9704a
11 changed files with 153 additions and 155 deletions

View File

@ -0,0 +1,22 @@
Puppet::Type.type(:ceilometer_config).provide(
:ini_setting,
:parent => Puppet::Type.type(:ini_setting).provider(:ruby)
) do
def section
resource[:name].split('/', 2).first
end
def setting
resource[:name].split('/', 2).last
end
def separator
'='
end
def file_path
'/etc/ceilometer/ceilometer.conf'
end
end

View File

@ -0,0 +1,18 @@
Puppet::Type.newtype(:ceilometer_config) do
ensurable
newparam(:name, :namevar => true) do
desc 'Section/setting name to manage from ceilometer.conf'
newvalues(/\S+\/\S+/)
end
newproperty(:value) do
desc 'The value of the setting to be defined.'
munge do |v|
v.to_s.strip
end
end
end

View File

@ -1,48 +1,19 @@
class ceilometer::collector(
$keystone_password,
$verbose = 'False',
$debug = 'False',
$rabbit_host = '127.0.0.1',
$rabbit_port = 5672,
$rabbit_userid = 'guest',
$rabbit_password = '',
$rabbit_virtualhost = '/',
$database_connection = 'mysql://ceilometer:ceilometer@127.0.0.1/ceilometer',
$keystone_host = '127.0.0.1',
$keystone_port = '35357',
$keystone_protocol = 'http',
$keystone_user = 'ceilometer',
class ceilometer::agent-central(
$enabled = true,
) {
package { 'ceilometer-collector':
package { 'ceilometer-agent-central':
ensure => installed
}
ceilometer_setting {
'DEFAULT/rabbit_host': value => $rabbit_host;
'DEFAULT/rabbit_port': value => $rabbit_port;
'DEFAULT/rabbit_userid': value => $rabbit_userid;
'DEFAULT/rabbit_password': value => $rabbit_password;
'DEFAULT/rabbit_virtualhost': value => $rabbit_virtualhost;
'DEFAULT/debug': value => $debug;
'DEFAULT/verbose': value => $verbose;
'DEFAULT/database_connection': value => $database_connection;
'keystone_authtoken/auth_host': value => $keystone_host;
'keystone_authtoken/auth_port': value => $keystone_port;
'keystone_authtoken/protocol': value => $keystone_protocol;
}
file { ['/etc/ceilometer/ceilometer.conf']:
}
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
service { 'ceilometer-collector':
name => $::ceilometer::params::collector_package_name
service { 'ceilometer-agent-central':
name => $::ceilometer::params::agent_central_name
enable => $enabled,
hasstatus => true,
hasrestart => true,

View File

@ -1,40 +1,11 @@
class ceilometer::agent-compute(
$keystone_password,
$verbose = 'False',
$debug = 'False',
$rabbit_host = '127.0.0.1',
$rabbit_port = 5672,
$rabbit_userid = 'guest',
$rabbit_password = '',
$rabbit_virtualhost = '/',
$database_connection = 'mysql://ceilometer:ceilometer@127.0.0.1/ceilometer',
$keystone_host = '127.0.0.1',
$keystone_port = '35357',
$keystone_protocol = 'http',
$keystone_user = 'ceilometer',
$enabled = true,
) {
package { 'ceilometer-agent-compute':
ensure => installed
}
ceilometer_setting {
'DEFAULT/rabbit_host': value => $rabbit_host;
'DEFAULT/rabbit_port': value => $rabbit_port;
'DEFAULT/rabbit_userid': value => $rabbit_userid;
'DEFAULT/rabbit_password': value => $rabbit_password;
'DEFAULT/rabbit_virtualhost': value => $rabbit_virtualhost;
'DEFAULT/debug': value => $debug;
'DEFAULT/verbose': value => $verbose;
'DEFAULT/database_connection': value => $database_connection;
'keystone_authtoken/auth_host': value => $keystone_host;
'keystone_authtoken/auth_port': value => $keystone_port;
'keystone_authtoken/protocol': value => $keystone_protocol;
}
file { ['/etc/ceilometer/ceilometer.conf']:
}
if $enabled {
$service_ensure = 'running'
} else {
@ -42,7 +13,7 @@ class ceilometer::agent-compute(
}
service { 'ceilometer-agent-compute':
name => $::ceilometer::params::agent-compute_package_name
name => $::ceilometer::params::agent_compute_service_name
enable => $enabled,
hasstatus => true,
hasrestart => true,

View File

@ -1,40 +1,11 @@
class ceilometer::api(
$keystone_password,
$verbose = 'False',
$debug = 'False',
$rabbit_host = '127.0.0.1',
$rabbit_port = 5672,
$rabbit_userid = 'guest',
$rabbit_password = '',
$rabbit_virtualhost = '/',
$database_connection = 'mysql://ceilometer:ceilometer@127.0.0.1/ceilometer',
$keystone_host = '127.0.0.1',
$keystone_port = '35357',
$keystone_protocol = 'http',
$keystone_user = 'ceilometer',
$enabled = true,
) {
package { 'ceilometer-api':
ensure => installed
}
ceilometer_setting {
'DEFAULT/rabbit_host': value => $rabbit_host;
'DEFAULT/rabbit_port': value => $rabbit_port;
'DEFAULT/rabbit_userid': value => $rabbit_userid;
'DEFAULT/rabbit_password': value => $rabbit_password;
'DEFAULT/rabbit_virtualhost': value => $rabbit_virtualhost;
'DEFAULT/debug': value => $debug;
'DEFAULT/verbose': value => $verbose;
'DEFAULT/database_connection': value => $database_connection;
'keystone_authtoken/auth_host': value => $keystone_host;
'keystone_authtoken/auth_port': value => $keystone_port;
'keystone_authtoken/protocol': value => $keystone_protocol;
}
file { ['/etc/ceilometer/ceilometer.conf']:
}
if $enabled {
$service_ensure = 'running'
} else {
@ -42,7 +13,7 @@ class ceilometer::api(
}
service { 'ceilometer-api':
name => $::ceilometer::params::api_package_name
name => $::ceilometer::params::api_service_name
enable => $enabled,
hasstatus => true,
hasrestart => true,

View File

@ -1,40 +1,11 @@
class ceilometer::collector(
$keystone_password,
$verbose = 'False',
$debug = 'False',
$rabbit_host = '127.0.0.1',
$rabbit_port = 5672,
$rabbit_userid = 'guest',
$rabbit_password = '',
$rabbit_virtualhost = '/',
$database_connection = 'mysql://ceilometer:ceilometer@127.0.0.1/ceilometer',
$keystone_host = '127.0.0.1',
$keystone_port = '35357',
$keystone_protocol = 'http',
$keystone_user = 'ceilometer',
$enabled = true,
) {
package { 'ceilometer-collector':
ensure => installed
}
ceilometer_setting {
'DEFAULT/rabbit_host': value => $rabbit_host;
'DEFAULT/rabbit_port': value => $rabbit_port;
'DEFAULT/rabbit_userid': value => $rabbit_userid;
'DEFAULT/rabbit_password': value => $rabbit_password;
'DEFAULT/rabbit_virtualhost': value => $rabbit_virtualhost;
'DEFAULT/debug': value => $debug;
'DEFAULT/verbose': value => $verbose;
'DEFAULT/database_connection': value => $database_connection;
'keystone_authtoken/auth_host': value => $keystone_host;
'keystone_authtoken/auth_port': value => $keystone_port;
'keystone_authtoken/protocol': value => $keystone_protocol;
}
file { ['/etc/ceilometer/ceilometer.conf']:
}
if $enabled {
$service_ensure = 'running'
} else {
@ -42,7 +13,7 @@ class ceilometer::collector(
}
service { 'ceilometer-collector':
name => $::ceilometer::params::collector_package_name
name => $::ceilometer::params::collector_service_name
enable => $enabled,
hasstatus => true,
hasrestart => true,

View File

@ -1,7 +1,3 @@
#
# I should change this to mysql
# for consistency
#
class ceilometer::db::mysql(
$password,
$dbname = 'ceilometer',
@ -9,26 +5,21 @@ class ceilometer::db::mysql(
$host = '127.0.0.1',
$allowed_hosts = undef,
$charset = 'latin1',
$cluster_id = 'localzone'
) {
Class['mysql::server'] -> Class['ceilometer::db::mysql']
Class['ceilometer::db::mysql'] -> Exec<| title == 'ceilometer-dbsync' |>
Database[$dbname] ~> Exec<| title == 'ceilometer-dbsync' |>
require 'mysql::python'
mysql::db { $dbname:
user => $user,
password => $password,
host => $host,
charset => $charset,
# I may want to inject some sql
require => Class['mysql::config'],
}
if $allowed_hosts {
# TODO this class should be in the mysql namespace
ceilometer::db::mysql::host_access { $allowed_hosts:
user => $user,
password => $password,

View File

@ -3,11 +3,29 @@
# * package_ensure - ensure state for package.
#
class ceilometer(
$package_ensure = 'present'
$package_ensure = 'present',
$keystone_password,
$verbose = 'False',
$debug = 'False',
$rabbit_host = '127.0.0.1',
$rabbit_port = 5672,
$rabbit_userid = 'guest',
$rabbit_password = '',
$rabbit_virtualhost = '/',
$database_connection = 'mysql://ceilometer:ceilometer@127.0.0.1/ceilometer',
$keystone_host = '127.0.0.1',
$keystone_port = '35357',
$keystone_protocol = 'http',
$keystone_user = 'ceilometer',
) {
include ceilometer::params
require 'mysql::python'
file { '/etc/ceilometer/ceilometer.conf':
}
file { '/etc/ceilometer/':
ensure => directory,
owner => 'ceilometer',
@ -15,9 +33,25 @@ class ceilometer(
mode => '0770',
require => Package['ceilometer']
}
package { 'ceilometer':
name => $::ceilometer::params::package_name,
package { 'ceilometer-common':
name => $::ceilometer::params::common_package_name,
ensure => $package_ensure,
}
ceilometer_setting {
'DEFAULT/rabbit_host': value => $rabbit_host;
'DEFAULT/rabbit_port': value => $rabbit_port;
'DEFAULT/rabbit_userid': value => $rabbit_userid;
'DEFAULT/rabbit_password': value => $rabbit_password;
'DEFAULT/rabbit_virtualhost': value => $rabbit_virtualhost;
'DEFAULT/debug': value => $debug;
'DEFAULT/verbose': value => $verbose;
'DEFAULT/database_connection': value => $database_connection;
'keystone_authtoken/auth_host': value => $keystone_host;
'keystone_authtoken/auth_port': value => $keystone_port;
'keystone_authtoken/protocol': value => $keystone_protocol;
}
}

View File

@ -0,0 +1,58 @@
#
# Sets up ceilometer users, service and endpoint
#
# == Parameters:
#
# $auth_name :: identifier used for all keystone objects related to ceilometer.
# Optional. Defaults to ceilometer.
# $password :: password for ceilometer user. Optional. Defaults to glance_password.
# $service_type :: type of service to create. Optional. Defaults to image.
# $public_address :: Public address for endpoint. Optional. Defaults to 127.0.0.1.
# $admin_address :: Admin address for endpoint. Optional. Defaults to 127.0.0.1.
# $inernal_address :: Internal address for endpoint. Optional. Defaults to 127.0.0.1.
# $port :: Port for endpoint. Needs to match ceilometer api service port. Optional.
# Defaults to 8777.
# $region :: Region where endpoint is set.
#
class ceilometer::keystone::auth(
$password,
$email = 'ceilometer@localhost',
$auth_name = 'ceilometer',
$configure_endpoint = true,
$service_type = 'metering',
$public_address = '127.0.0.1',
$admin_address = '127.0.0.1',
$internal_address = '127.0.0.1',
$port = '8777',
$region = 'RegionOne',
$tenant = 'services',
$public_protocol = 'http'
) {
Keystone_user_role["${auth_name}@${tenant}"] ~> Service <| name == 'ceilometer' |>
keystone_user { $auth_name:
ensure => present,
password => $password,
email => $email,
tenant => $tenant,
}
keystone_user_role { "${auth_name}@${tenant}":
ensure => present,
roles => 'admin',
}
keystone_service { $auth_name:
ensure => present,
type => $service_type,
description => "Openstack Metering Service",
}
if $configure_endpoint {
keystone_endpoint { "${region}/$auth_name":
ensure => present,
public_url => "${public_protocol}://${public_address}:${port}/v1",
admin_url => "http://${admin_address}:${port}/v1",
internal_url => "http://${internal_address}:${port}/v1",
}
}
}

View File

@ -1,14 +0,0 @@
class ceilometer::notify::rabbitmq(
$rabbit_password,
$rabbit_userid = 'guest',
$rabbit_host = 'localhost'
) inherits ceilometer::api {
ceilometer_api_config {
'DEFAULT/notifier_strategy': value => 'rabbit';
'DEFAULT/rabbit_host': value => $rabbit_host;
'DEFAULT/rabbit_password': value => $rabbit_password;
'DEFAULT/rabbit_userid': value => $rabbit_userid;
}
}

View File

@ -1,10 +1,15 @@
class ceilometer::params {
$central_agent_package_name = 'ceilometer-agent-central'
$compute_agent_package_name = 'ceilometer-agent-compute'
$agent_central_package_name = 'ceilometer-agent-central'
$agent_compute_package_name = 'ceilometer-agent-compute'
$api_package_name = 'ceilometer-api'
$collector_package_name = 'ceilometer-collector'
$common_package_name = 'ceilometer-common'
$client_package_name = 'python-ceilometer'
$agent_central_service_name = 'ceilometer-agent-central'
$agent_compute_service_name = 'ceilometer-agent-compute'
$api_service_name = 'ceilometer-api'
$collector_service_name = 'ceilometer-collector'
}