Init commit to do basic setting
This commit is contained in:
commit
bbdbc64bb4
|
@ -0,0 +1,22 @@
|
|||
Puppet::Type.type(:designate_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/designate/designate.conf'
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,19 @@
|
|||
Puppet::Type.newtype(:designate_config) do
|
||||
|
||||
ensurable
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Section/setting name to manage from designate.conf'
|
||||
newvalues(/\S+\/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:value) do
|
||||
desc 'The value of the setting to be defined.'
|
||||
munge do |value|
|
||||
value = value.to_s.strip
|
||||
value.capitalize! if value =~ /^(true|false)$/i
|
||||
value
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
class designate::api (
|
||||
$enabled = true,
|
||||
$auth_strategy = 'noauth',
|
||||
){
|
||||
include designate::params
|
||||
|
||||
package { 'designate-api':
|
||||
ensure => installed,
|
||||
name => $::designate::params::api_package_name,
|
||||
}
|
||||
|
||||
Package['designate-common'] -> Service['designate-api']
|
||||
|
||||
service { 'designate-api':
|
||||
ensure => $service_ensure,
|
||||
name => $::designate::params::api_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
require => Class['designate::db'],
|
||||
subscribe => Exec['designate-dbsync']
|
||||
}
|
||||
|
||||
designate_config {
|
||||
'service:api/auth_strategy' : value => $auth_strategy;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
class designate::central (
|
||||
$enabled = true,
|
||||
$backend_driver = 'bind9',
|
||||
) {
|
||||
include designate::params
|
||||
|
||||
package { 'designate-api':
|
||||
ensure => installed,
|
||||
name => $::designate::params::central_package_name,
|
||||
}
|
||||
|
||||
Package['designate-common'] -> Service['designate-api']
|
||||
|
||||
service { 'designate-api':
|
||||
ensure => $service_ensure,
|
||||
name => $::designate::params::central_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
require => Class['designate::db'],
|
||||
subscribe => Exec['designate-dbsync']
|
||||
}
|
||||
|
||||
designate_config {
|
||||
'service:central/backend_driver' : value => $backend_driver;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
# Configures the designate database
|
||||
# This class will install the required libraries depending on the driver
|
||||
# specified in the connection_string parameter
|
||||
#
|
||||
# == Parameters
|
||||
# [*database_connection*]
|
||||
# the connection string. format: [driver]://[user]:[password]@[host]/[database]
|
||||
#
|
||||
class designate::db (
|
||||
$database_connection = 'mysql://designate:designate@localhost/designate'
|
||||
) {
|
||||
|
||||
include designate::params
|
||||
|
||||
Package<| title == 'designate-common' |> -> Class['designate::db']
|
||||
|
||||
case $database_connection {
|
||||
/^mysql:\/\//: {
|
||||
$backend_package = false
|
||||
include mysql::python
|
||||
}
|
||||
default: {
|
||||
fail('Unsupported backend configured')
|
||||
}
|
||||
}
|
||||
|
||||
if $backend_package and !defined(Package[$backend_package]) {
|
||||
package {'designate-backend-package':
|
||||
ensure => present,
|
||||
name => $backend_package,
|
||||
}
|
||||
}
|
||||
|
||||
designate_config {
|
||||
'storage:sqlalchemy/database_connection': value => $database_connection;
|
||||
}
|
||||
|
||||
designate_config['storage:sqlalchemy/database_connection'] ~> Exec['designate-dbsync']
|
||||
|
||||
exec { 'designate-dbsync':
|
||||
command => $::designate::params::dbsync_command,
|
||||
path => '/usr/bin',
|
||||
user => 'root',
|
||||
refreshonly => true,
|
||||
logoutput => on_failure,
|
||||
subscribe => designate_config['storage:sqlalchemy/database_connection']
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
# The designate::db::mysql class creates a MySQL database for designate.
|
||||
# It must be used on the MySQL server
|
||||
#
|
||||
# == Parameters
|
||||
#
|
||||
# [*password*]
|
||||
# password to connect to the database. Mandatory.
|
||||
#
|
||||
# [*dbname*]
|
||||
# name of the database. Optional. Defaults to designate.
|
||||
#
|
||||
# [*user*]
|
||||
# user to connect to the database. Optional. Defaults to designate.
|
||||
#
|
||||
# [*host*]
|
||||
# the default source host user is allowed to connect from.
|
||||
# Optional. Defaults to 'localhost'
|
||||
#
|
||||
# [*allowed_hosts*]
|
||||
# other hosts the user is allowd to connect from.
|
||||
# Optional. Defaults to undef.
|
||||
#
|
||||
# [*charset*]
|
||||
# the database charset. Optional. Defaults to 'latin1'
|
||||
#
|
||||
class designate::db::mysql(
|
||||
$password = false,
|
||||
$dbname = 'designate',
|
||||
$user = 'designate',
|
||||
$host = 'localhost',
|
||||
$allowed_hosts = undef,
|
||||
$charset = 'latin1',
|
||||
) {
|
||||
|
||||
validate_string($password)
|
||||
|
||||
Class['mysql::server'] -> Class['designate::db::mysql']
|
||||
Class['designate::db::mysql'] -> Exec<| title == 'designate-dbsync' |>
|
||||
Mysql::Db[$dbname] ~> Exec<| title == 'designate-dbsync' |>
|
||||
|
||||
mysql::db { $dbname:
|
||||
user => $user,
|
||||
password => $password,
|
||||
host => $host,
|
||||
charset => $charset,
|
||||
require => Class['mysql::config'],
|
||||
}
|
||||
|
||||
# Check allowed_hosts to avoid duplicate resource declarations
|
||||
if is_array($allowed_hosts) and delete($allowed_hosts,$host) != [] {
|
||||
$real_allowed_hosts = delete($allowed_hosts,$host)
|
||||
} elsif is_string($allowed_hosts) and ($allowed_hosts != $host) {
|
||||
$real_allowed_hosts = $allowed_hosts
|
||||
}
|
||||
|
||||
if $real_allowed_hosts {
|
||||
designate::db::mysql::host_access { $real_allowed_hosts:
|
||||
user => $user,
|
||||
password => $password,
|
||||
database => $dbname,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
# Allow a user to access the designate database
|
||||
#
|
||||
# == Namevar
|
||||
# The host to allow
|
||||
#
|
||||
# == Parameters
|
||||
# [*user*]
|
||||
# username to allow
|
||||
#
|
||||
# [*password*]
|
||||
# user password
|
||||
#
|
||||
# [*database*]
|
||||
# the database name
|
||||
#
|
||||
define designate::db::mysql::host_access ($user, $password, $database) {
|
||||
|
||||
database_user { "${user}@${name}":
|
||||
password_hash => mysql_password($password),
|
||||
provider => 'mysql',
|
||||
require => Database[$database],
|
||||
}
|
||||
|
||||
database_grant { "${user}@${name}/${database}":
|
||||
# TODO figure out which privileges to grant.
|
||||
privileges => 'all',
|
||||
provider => 'mysql',
|
||||
require => Database_user["${user}@${name}"]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
class designate(
|
||||
$package_ensure = present,
|
||||
$verbose = false,
|
||||
$debug = false,
|
||||
$rabbit_host = '127.0.0.1',
|
||||
$rabbit_port = '5672',
|
||||
$rabbit_userid = 'guest',
|
||||
$rabbit_password = '',
|
||||
$rabbit_virtualhost = '/',
|
||||
) {
|
||||
|
||||
package { 'openstack-designate':
|
||||
ensure => $package_ensure,
|
||||
name => $::designate::params::common_package_name,
|
||||
}
|
||||
|
||||
user { 'desginate':
|
||||
name => 'desginate',
|
||||
gid => 'desginate',
|
||||
groups => ['nova'],
|
||||
system => true,
|
||||
require => Package['openstack-designate'],
|
||||
}
|
||||
|
||||
group { 'desginate':
|
||||
name => 'desginate',
|
||||
require => Package['openstack-designate'],
|
||||
}
|
||||
|
||||
file { '/etc/desginate/':
|
||||
ensure => directory,
|
||||
owner => 'desginate',
|
||||
group => 'desginate',
|
||||
mode => '0750',
|
||||
}
|
||||
|
||||
file { '/etc/desginate/desginate.conf':
|
||||
owner => 'desginate',
|
||||
group => 'desginate',
|
||||
mode => '0640',
|
||||
}
|
||||
|
||||
Package['openstack-designate'] -> desginate_config<||>
|
||||
|
||||
designate_config {
|
||||
'DEFAULT/rabbit_host' : value => $rabbit_host;
|
||||
'DEFAULT/rabbit_port' : value => $rabbit_port;
|
||||
'DEFAULT/rabbit_hosts' : value => "${rabbit_host}:${rabbit_port}";
|
||||
'DEFAULT/rabbit_userid' : value => $rabbit_userid;
|
||||
'DEFAULT/rabbit_password' : value => $rabbit_password;
|
||||
'DEFAULT/rabbit_virtualhost' : value => $rabbit_virtualhost;
|
||||
}
|
||||
|
||||
# default setting
|
||||
designate_config {
|
||||
'DEFAULT/debug' : value => $debug;
|
||||
'DEFAULT/verbose' : value => $verbose;
|
||||
'DEFAULT/log_dir' : value => $::designate::params::log_dir;
|
||||
'DEFAULT/state_path' : value => $::designate::params::state_path;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
# Params
|
||||
|
||||
class designate::params {
|
||||
|
||||
$dbsync_command = 'designate-manage database-init && designate-manage database-sync'
|
||||
$log_dir = '/var/named/data'
|
||||
|
||||
case $::osfamily {
|
||||
'RedHat': {
|
||||
#package name
|
||||
$common_package_name = 'openstack-designate'
|
||||
$api_package_name = 'openstack-designate-api'
|
||||
$central_package_name = 'openstack-designate-central'
|
||||
$sink_package_name = 'openstack-designate-sink'
|
||||
# service names
|
||||
$agent_service_name = 'openstack-designate-agent'
|
||||
$api_service_name = 'openstack-designate-api'
|
||||
$central_service_name = 'openstack-designate-central'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue