Add puppet manifests to support fragments

This commit adds Puppet code to allow for keystone.conf
to be composed of fragments.
This commit is contained in:
Dan Bode 2012-03-29 14:39:59 -07:00
parent b4493112d9
commit f9894420de
6 changed files with 131 additions and 42 deletions

View File

@ -1,18 +0,0 @@
class keystone::db(
$password,
$dbname = 'keystone',
$user = 'keystone_admin',
$host = '127.0.0.1',
$allowed_hosts = undef
) {
require mysql::python
mysql::db { $dbname:
user => $user,
password => $password,
host => $host,
charset => 'latin1',
require => Class['mysql::server'],
}
}

View File

@ -2,17 +2,27 @@
# module for installing keystone
#
class keystone(
$package_ensure = 'present',
$log_verbose = 'False',
$log_debug = 'False',
$default_store = 'sqlite',
$bind_host = '0.0.0.0',
$bind_port = '5000',
$admin_bind_host = '0.0.0.0',
$admin_bind_port = '5001',
$db_type = 'sqlite',
$package_ensure = 'present',
$default_store = 'sqlite',
$bind_host = '0.0.0.0',
$public_port = '5000',
$admin_port = '35357',
$admin_token = 'service_token',
$compute_port = '3000',
$log_verbose = 'False',
$log_debug = 'False',
$use_syslog = 'False',
$db_type = 'sqlite',
$catalog_type = 'template'
) {
validate_re($catalog_type, 'template|sql')
if ( $use_syslog != 'False') {
fail('use syslog currently only accepts false')
}
include keystone::params
# this package dependency needs to be removed when it
# is added as a package dependency
# I filed the following ticket against the packages: 909941
@ -34,14 +44,6 @@ class keystone(
gid => 'keystone',
}
if($db_type != 'sqlite') {
file { '/var/lib/keystone/keystone.db':
ensure => absent,
subscribe => Package['keystone'],
before => Class['keystone::db'],
}
}
file { '/etc/keystone':
ensure => directory,
owner => 'keystone',
@ -50,14 +52,46 @@ class keystone(
require => Package['keystone']
}
file { 'keystone.conf':
path => '/etc/keystone/keystone.conf',
ensure => present,
owner => 'keystone',
mode => 0600,
content => template('keystone/keystone.conf.erb'),
concat { '/etc/keystone/keystone.conf':
owner => keystone,
group => keystone,
mode => 600,
require => Package['keystone'],
notify => Service['keystone'],
notify => Service['keystone'],
}
# config sections
keystone::config { 'DEFAULT':
config => {
'bind_host' => $bind_host,
'public_port' => $public_port,
'admin_port' => $admin_port,
'admin_token' => $admin_token,
'compute_port' => $compute_port,
'log_verbose' => $log_verbose,
'log_debug' => $log_debug,
'use_syslog' => $use_syslog
},
order => '00',
}
keystone::config { 'identity':
order => '03',
}
if($catalog_type == 'template') {
# if we are using a catalog, then I may want to manage the file
keystone::config { 'template_catalog':
order => '04',
}
} elsif($catalog_type == 'sql' ) {
keystone::config { 'sql_catalog':
order => '04',
}
}
keystone::config { 'footer':
order => '99'
}
service { 'keystone':
@ -65,6 +99,7 @@ class keystone(
enable => true,
hasstatus => true,
hasrestart => true,
provider => $::keystone::params::service_provider,
}
}

5
manifests/ldap.pp Normal file
View File

@ -0,0 +1,5 @@
class keystone::ldap {
keystone::config { 'ldap':
order => '01',
}
}

45
manifests/mysql.pp Normal file
View File

@ -0,0 +1,45 @@
#
# implements mysql backend for keystone
#
class keystone::mysql(
$password,
$dbname = 'keystone',
$user = 'keystone_admin',
$host = '127.0.0.1',
$idle_timeout = '300',
$min_pool_size = '5',
$max_pool_size = '10',
$pool_timeout = '200',
$allowed_hosts = undef
) {
require mysql::python
file { '/var/lib/keystone/keystone.db':
ensure => absent,
subscribe => Package['keystone'],
before => Class['keystone::db'],
}
mysql::db { $dbname:
user => $user,
password => $password,
host => $host,
charset => 'latin1',
require => Class['mysql::server'],
}
keystone::config { 'sql':
config => {
user => $user,
password => $password,
host => $host,
dbname => $dbname,
idle_timeout => $idle_timeout,
min_pool_size => $min_pool_size,
max_pool_size => $max_pool_size,
pool_timeout => $pool_timeout
},
order => '02',
}
}

10
manifests/params.pp Normal file
View File

@ -0,0 +1,10 @@
class keystone::params {
case $::osfamily {
'Debian': {
$service_provider = 'upstart'
}
'RedHat': {
$service_provider = undef
}
}
}

12
manifests/sqlite.pp Normal file
View File

@ -0,0 +1,12 @@
class keystone::sqlite(
$idle_timeout = 200
) {
keystone::config { 'sql':
content => inline_template('
[sql]
connection = sqlite:////var/lib/keystone/keystone.db
idle_timeout = <%= idle_timeout %>
'),
order => '02',
}
}