summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Filion <gabster@lelutin.ca>2014-03-12 16:26:32 -0400
committerGabriel Filion <gabster@lelutin.ca>2014-03-12 16:26:32 -0400
commit102de3b0e7c6e2f1ace419e028ed1c3920735d42 (patch)
treed9c47802173c796013d08c7577edd8abd954bed0
parent84fba22bad4d2d0e88352c999cabe4de2a42c023 (diff)
parentb06570a940a705988360553446daa8ea52e60f27 (diff)
Merge branch 'conf_define'
-rw-r--r--README30
-rw-r--r--manifests/conf.pp37
-rw-r--r--manifests/server/base.pp8
-rw-r--r--templates/conf.erb9
4 files changed, 84 insertions, 0 deletions
diff --git a/README b/README
index 1b12c76..dde3203 100644
--- a/README
+++ b/README
@@ -46,6 +46,36 @@ grant tables.
The my.cnf file will installed from one of many possible places, see
manifests/server/base.pp for possible locations for managing this.
+Configuration snippets
+----------------------
+
+To make managing mysql configuration easier, you can use the define
+mysql::conf. Note, though that there currently is only the Debian default
+configuration file that includes files in /etc/mysql/conf.d/.
+
+For example:
+
+mysql::conf { 'test':
+ ensure => present,
+ section => 'mysqld',
+ config => {
+ table_cache => '15000',
+ skip_slave => '',
+ something => '""',
+ }
+}
+
+The above example shows two possibilities for empty values.
+
+ * If a value only has an empty value in the hash passed to the config
+ parameter, that will define a boolean option in mysql by simply mentioning
+ the option name with no equal sign. So in the above, you'd have a line that
+ contains only "skip_slave".
+
+ * If you need to declare a variable with an empty value (e.g. with the equal
+ sign), you can use two quotes as the option's value. In the above example,
+ you'd have a line that looks like "something=".
+
Backups
-------
diff --git a/manifests/conf.pp b/manifests/conf.pp
new file mode 100644
index 0000000..f9cbeb3
--- /dev/null
+++ b/manifests/conf.pp
@@ -0,0 +1,37 @@
+# $config needs to be a hash of key => value pairs.
+#
+# values in config are output as key = value, except when the value is empty;
+# then just key is output. if you need to output an empty value in the form
+# key = value, then you can specify empty quotes as the value (see example).
+#
+# mysql::conf { 'test':
+# ensure => present,
+# section => 'mysqld',
+# config => {
+# table_cache => '15000',
+# skip_slave => '',
+# something => '""',
+# }
+# }
+#
+# This will generate the following contents:
+# [mysqld]
+# skip_slave
+# something = ""
+# table_cache = 15000
+#
+define mysql::conf (
+ $section,
+ $config,
+ $ensure = present
+) {
+
+ include mysql::server::base
+
+ file { "/etc/mysql/conf.d/${name}.cnf":
+ ensure => $ensure,
+ content => template('mysql/conf.erb'),
+ notify => Service['mysql'],
+ }
+
+}
diff --git a/manifests/server/base.pp b/manifests/server/base.pp
index b379f5c..7bbf30d 100644
--- a/manifests/server/base.pp
+++ b/manifests/server/base.pp
@@ -92,4 +92,12 @@ class mysql::server::base {
Mysql_user<<| tag == "mysql_${::fqdn}" |>>
Mysql_grant<<| tag == "mysql_${::fqdn}" |>>
}
+
+ file { '/etc/mysql/conf.d':
+ ensure => directory,
+ owner => 'root',
+ group => 0,
+ mode => '0755',
+ }
+
}
diff --git a/templates/conf.erb b/templates/conf.erb
new file mode 100644
index 0000000..c7e332a
--- /dev/null
+++ b/templates/conf.erb
@@ -0,0 +1,9 @@
+# THIS FILE IS MANAGED BY PUPPET
+[<%= @section -%>]
+<% @config.each do |key, value| -%>
+<% if value != '' -%>
+<%= key -%> = <%= value %>
+<% else -%>
+<%= key %>
+<% end -%>
+<% end %>