Initial commit of new configuration

This commit is contained in:
Joe Topjian
2012-09-09 22:24:59 +00:00
commit eb60ddbfeb
9 changed files with 266 additions and 0 deletions

27
manifests/api.pp Normal file
View File

@@ -0,0 +1,27 @@
#
class cinder::api (
$package_ensure = 'latest',
$enabled = true
) {
include cinder::params
package { 'cinder-api':
name => $::cinder::params::api_package,
ensure => $package_ensure,
require => Class['cinder'],
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
}
service { $::cinder::params::api_service:
enable => $enabled,
ensure => $ensure,
require => Package[$::cinder::params::api_package],
subscribe => File[$::cinder::params::cinder_conf],
}
}

18
manifests/db/mysql.pp Normal file
View File

@@ -0,0 +1,18 @@
#
class cinder::db::mysql (
$password,
$dbname = 'cinder',
$user = 'cinder',
) {
include cinder::params
Class['cinder::db::mysql'] -> Class['cinder::db::sync']
Database[$dbname] ~> Exec<| title == 'cinder-manage db_sync' |>
mysql::db { $dbname:
host => '127.0.0.1',
user => $user,
password => $password,
}
}

13
manifests/db/sync.pp Normal file
View File

@@ -0,0 +1,13 @@
#
class cinder::db::sync {
include cinder::params
exec { 'cinder-manage db_sync':
command => $::cinder::params::db_sync_command,
path => '/usr/bin',
user => 'cinder',
refreshonly => true,
require => [File[$::cinder::params::cinder_conf], Class['cinder']],
}
}

52
manifests/init.pp Normal file
View File

@@ -0,0 +1,52 @@
#
class cinder (
$keystone_password,
$cinder_settings = false,
$keystone_enabled = true,
$keystone_tenant = 'services',
$keystone_user = 'cinder',
$keystone_auth_host = 'localhost',
$keystone_auth_port = '35357',
$keystone_auth_protocol = 'http',
$package_ensure = 'latest',
) {
include cinder::params
package { 'cinder':
name => $::cinder::params::package_name,
ensure => $package_ensure,
}
File {
ensure => present,
owner => 'cinder',
group => 'cinder',
mode => '0644',
require => Package[$::cinder::params::package_name],
}
file { $::cinder::params::cinder_conf: }
file { $::cinder::params::cinder_paste_api_ini: }
if $cinder_settings {
multini($::cinder::params::cinder_conf, $cinder_settings)
}
if $keystone_enabled {
multini($::cinder::params::cinder_conf, { 'DEFAULT' => { 'auth_strategy' => 'keystone' } })
$keystone_settings = {
'filter:authtoken' => {
'auth_host' => $keystone_auth_host,
'auth_port' => $keystone_auth_port,
'auth_protocol' => $keystone_auth_protocol,
'admin_user' => $keystone_user,
'admin_password' => $keystone_password,
'admin_tenant_name' => $keystone_tenant
}
}
multini($::cinder::params::cinder_paste_api_ini, $keystone_settings)
}
}

View File

@@ -0,0 +1,45 @@
class cinder::keystone::auth (
$password,
$auth_name = 'cinder',
$email = 'cinder@localhost',
$tenant = 'services',
$configure_endpoint = true,
$service_type = 'volume',
$public_address = '127.0.0.1',
$admin_address = '127.0.0.1',
$internal_address = '127.0.0.1',
$port = '8776',
$volume_version = 'v1',
$region = 'RegionOne'
) {
Class['keystone::db::sync'] -> Class['cinder::keystone::auth']
Keystone_user_role["${auth_name}@services"] ~> Service <| name == 'cinder-api' |>
keystone_user { $auth_name:
ensure => present,
password => $password,
email => $email,
tenant => $tenant,
}
keystone_user_role { "${auth_name}@services":
ensure => present,
roles => 'admin',
}
keystone_service { $auth_name:
ensure => present,
type => $service_type,
description => "Cinder Service",
}
if $configure_endpoint {
keystone_endpoint { $auth_name:
ensure => present,
region => $region,
public_url => "http://${public_address}:${port}/${volume_version}/%(tenant_id)s",
admin_url => "http://${admin_address}:${port}/${volume_version}/%(tenant_id)s",
internal_url => "http://${internal_address}:${port}/${volume_version}/%(tenant_id)s",
}
}
}

23
manifests/params.pp Normal file
View File

@@ -0,0 +1,23 @@
#
class cinder::params {
$cinder_conf = '/etc/cinder/cinder.conf'
$cinder_paste_api_ini = '/etc/cinder/api-paste.ini'
case $::osfamily {
'Debian': {
$package_name = 'cinder-common'
$api_package = 'cinder-api'
$api_service = 'cinder-api'
$scheduler_package = 'cinder-scheduler'
$scheduler_service = 'cinder-scheduler'
$volume_package = 'cinder-volume'
$volume_service = 'cinder-volume'
$db_sync_command = 'cinder-manage db sync'
$tgt_package_name = 'tgt'
$tgt_service_name = 'tgt'
}
}
}

27
manifests/scheduler.pp Normal file
View File

@@ -0,0 +1,27 @@
#
class cinder::scheduler (
$package_ensure = 'latest',
$enabled = true
) {
include cinder::params
package { 'cinder-scheduler':
name => $::cinder::params::scheduler_package,
ensure => $package_ensure,
require => Class['cinder'],
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
}
service { $::cinder::params::scheduler_service:
enable => $enabled,
ensure => $ensure,
require => Package[$::cinder::params::scheduler_package],
subscribe => File[$::cinder::params::cinder_conf],
}
}

27
manifests/volume.pp Normal file
View File

@@ -0,0 +1,27 @@
#
class cinder::volume (
$package_ensure = 'latest',
$enabled = true
) {
include cinder::params
package { 'cinder-volume':
name => $::cinder::params::volume_package,
ensure => $package_ensure,
require => Class['cinder'],
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
}
service { $::cinder::params::volume_service:
enable => $enabled,
ensure => $ensure,
require => Package[$::cinder::params::volume_package],
subscribe => File[$::cinder::params::cinder_conf],
}
}

34
manifests/volume/iscsi.pp Normal file
View File

@@ -0,0 +1,34 @@
#
class cinder::volume::iscsi (
$iscsi_settings = false,
$iscsi_helper = 'tgtadm'
) {
include cinder::params
if $iscsi_settings {
multini($::cinder::params::cinder_conf, $iscsi_settings)
}
case $iscsi_helper {
'tgtadm': {
package { 'tgt':
name => $::cinder::params::tgt_package_name,
ensure => present,
}
service { 'tgtd':
name => $::cinder::params::tgt_service_name,
ensure => running,
enable => true,
require => Class['cinder::volume'],
}
multini($::cinder::params::cinder_conf, { 'DEFAULT' => { 'iscsi_helper' => 'tgtadm' } } )
}
default: {
fail("Unsupported iscsi helper: ${iscsi_helper}.")
}
}
}