Initial commit of new configuration
This commit is contained in:
27
manifests/api.pp
Normal file
27
manifests/api.pp
Normal 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
18
manifests/db/mysql.pp
Normal 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
13
manifests/db/sync.pp
Normal 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
52
manifests/init.pp
Normal 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)
|
||||
}
|
||||
|
||||
}
|
||||
45
manifests/keystone/auth.pp
Normal file
45
manifests/keystone/auth.pp
Normal 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
23
manifests/params.pp
Normal 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
27
manifests/scheduler.pp
Normal 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
27
manifests/volume.pp
Normal 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
34
manifests/volume/iscsi.pp
Normal 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}.")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user