--- /dev/null
+# == Definition: openstacklib::db::mysql
+#
+# This resource configures a mysql database for an OpenStack service
+#
+# == Parameters:
+#
+# [*password_hash*]
+# Password hash to use for the database user for this service;
+# string; required
+#
+# [*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'
+
+define openstacklib::db::mysql (
+ $password_hash,
+ $dbname = $title,
+ $user = $title,
+ $host = '127.0.0.1',
+ $charset = 'utf8',
+ $collate = 'utf8_general_ci',
+ $allowed_hosts = [],
+ $privileges = 'ALL',
+) {
+
+ include ::mysql::client
+
+ mysql_database { $dbname:
+ ensure => present,
+ charset => $charset,
+ collate => $collate,
+ require => [ Class['mysql::server'], Class['mysql::client'] ],
+ }
+
+ $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,
+ password_hash => $password_hash,
+ database => $dbname,
+ privileges => $privileges,
+ }
+}