118 lines
3.8 KiB
Puppet
118 lines
3.8 KiB
Puppet
# == Definition: openstacklib::db::mysql
|
|
#
|
|
# This resource configures a mysql database for an OpenStack service
|
|
#
|
|
# == Parameters:
|
|
#
|
|
# [*password*]
|
|
# Password to use for the database user for this service;
|
|
# string; required
|
|
#
|
|
# [*plugin*]
|
|
# Authentication plugin to use when connecting to the MySQL server;
|
|
# string; optional; default to 'undef'
|
|
#
|
|
# [*dbname*]
|
|
# The name of the database
|
|
# string; optional; default to the $title of the resource, i.e. 'nova'
|
|
#
|
|
# [*user*]
|
|
# The database user to create;
|
|
# string; optional; default to the $title of the resource, i.e. 'nova'
|
|
#
|
|
# [*host*]
|
|
# The IP address or hostname of the user in mysql_grant;
|
|
# string; optional; default to '127.0.0.1'
|
|
#
|
|
# [*charset*]
|
|
# The charset to use for the database;
|
|
# string; optional; default to 'utf8'
|
|
#
|
|
# [*collate*]
|
|
# The collate to use for the database;
|
|
# string; optional; default to 'utf8_general_ci'
|
|
#
|
|
# [*allowed_hosts*]
|
|
# Additional hosts that are allowed to access this database;
|
|
# array or string; optional; default to undef
|
|
#
|
|
# [*privileges*]
|
|
# Privileges given to the database user;
|
|
# string or array of strings; optional; default to 'ALL'
|
|
#
|
|
# [*create_user*]
|
|
# Flag to allow for the skipping of the user as part of the database setup.
|
|
# Set to false to skip the user creation.
|
|
# Defaults to true.
|
|
#
|
|
# [*create_grant*]
|
|
# Flag to allow for the skipping of the user grants as part of the database
|
|
# setup. Set to false to skip the user creation.
|
|
# Defaults to true.
|
|
#
|
|
# [*tls_options*]
|
|
# The TLS options that the user will have
|
|
# Defaults to ['NONE']
|
|
#
|
|
# DEPRECATED PARAMETERS
|
|
#
|
|
# [*password_hash*]
|
|
# Password hash to use for the database user for this service;
|
|
# string; optional; default to undef
|
|
#
|
|
define openstacklib::db::mysql (
|
|
Optional[String] $password = undef,
|
|
Optional[String] $plugin = undef,
|
|
String[1] $dbname = $title,
|
|
String[1] $user = $title,
|
|
Stdlib::Host $host = '127.0.0.1',
|
|
String[1] $charset = 'utf8',
|
|
String[1] $collate = 'utf8_general_ci',
|
|
Variant[Stdlib::Host, Array[Stdlib::Host]] $allowed_hosts = [],
|
|
Variant[String, Array[String]] $privileges = 'ALL',
|
|
Boolean $create_user = true,
|
|
Boolean $create_grant = true,
|
|
Variant[String, Array[String]] $tls_options = ['NONE'],
|
|
# DEPRECATED PARAMETER
|
|
Optional[String] $password_hash = undef,
|
|
) {
|
|
|
|
include mysql::server
|
|
include mysql::client
|
|
|
|
if $password_hash != undef {
|
|
warning('The password_hash parameter was deprecated and will be removed
|
|
in a future release. Use password instead')
|
|
$password_hash_real = $password_hash
|
|
} elsif $password != undef {
|
|
$password_hash_real = mysql::password($password)
|
|
} else {
|
|
fail('password should be set')
|
|
}
|
|
|
|
mysql_database { $dbname:
|
|
ensure => present,
|
|
charset => $charset,
|
|
collate => $collate,
|
|
}
|
|
|
|
Class['mysql::server'] ~> Mysql_database<| title == $dbname |>
|
|
Class['mysql::client'] ~> Mysql_database<| title == $dbname |>
|
|
|
|
if $create_user or $create_grant {
|
|
$allowed_hosts_list = unique(concat(any2array($allowed_hosts), [$host]))
|
|
$real_allowed_hosts = prefix($allowed_hosts_list, "${dbname}_")
|
|
|
|
openstacklib::db::mysql::host_access { $real_allowed_hosts:
|
|
user => $user,
|
|
plugin => $plugin,
|
|
password_hash => $password_hash_real,
|
|
database => $dbname,
|
|
privileges => $privileges,
|
|
create_user => $create_user,
|
|
create_grant => $create_grant,
|
|
tls_options => $tls_options,
|
|
}
|
|
}
|
|
}
|