From eb995cb431c8afff8f31d6d6145fde2d1cf327c4 Mon Sep 17 00:00:00 2001 From: Kienan Stewart Date: Tue, 31 Jul 2018 23:59:41 -0400 Subject: [PATCH] Add resource type alternc::domain_type --- manifests/domain_type.pp | 73 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 manifests/domain_type.pp diff --git a/manifests/domain_type.pp b/manifests/domain_type.pp new file mode 100644 index 0000000..017e0c6 --- /dev/null +++ b/manifests/domain_type.pp @@ -0,0 +1,73 @@ +define alternc::domain_type ( + $ensure = 'present', + String $type_name = $name, + String $description = '', + String $target = 'DOMAIN', + String $entry = '%SUB% IN A @@PUBLIC_IP@@', + String $compatibility = 'txt,defmx,defmx2,mx,mx2', + String $enable_for = 'ALL', + Boolean $only_dns = false, + Boolean $need_dns = false, + Boolean $advanced = false, + Boolean $create_tmpdir = true, + Boolean $create_targetdir = true, + Boolean $has_https_option = false, + Boolean $manage_template = true, + String $template_path = '', + String $template_content = '', +) { + $mysql_command = '/usr/bin/mysql --defaults-file=/etc/alternc/my.cnf' + $command_set = "${mysql_command} -e \" +update domaines_type set name = '${type_name}', description = '${description}', +target = '${target}', entry = '${entry}', compatibility = '${compatibility}', +enable = '${enable_for}', only_dns = ${only_dns}, need_dns = ${need_dns}, +advanced = ${advanced}, create_tmpdir = ${create_tmpdir}, +create_targetdir = ${create_targetdir}, has_https_option = ${has_https_option} +where name = '${type_name}'; +\"" + + $command_exists = "${mysql_command} -e \"select name from domaines_type where name = '${type_name}'\\G;\" | grep -q 'name: ${type_name}'" + + $command_remove = "${mysql_command} -e \"delete from domaines_type where name = '${type_name}'\"" + + $command_is = "${mysql_command} -e \"select name from domaines_type where name = '${type_name}' and description = '${description}' and target = '${target}' and entry = '${entry}' and compatibility = '${compatibility}' and enable = '${enable_for}' and only_dns = ${only_dns} and need_dns = ${need_dns} and advanced = ${advanced} and create_tmpdir = ${create_tmpdir} and create_targetdir = ${create_targetdir} and has_https_option = ${has_https_option}\G;\" | grep -q 'name: ${type_name}'" + + $command_add = "${mysql_command} -e \"insert into domaines_type (name, description, target, entry, compatibility, enable, only_dns, need_dns, advanced, create_tmpdir, create_targetdir, has_https_option) VALUES ('${type_name}', '${description}', '${target}', '${entry}', '${compatibility}', '${enable_for}', ${only_dns}, ${need_dns}, ${advanced}, ${create_tmpdir}, ${create_targetdir}, ${has_https_option});\"" + + $real_ensure = $ensure ? { + 'absent' => 'absent', + default => 'present' + } + + if $real_ensure == 'present' { + exec { "alternc_domain_type_set_${name}": + command => $command_set, + unless => $command_is, + require => Package['alternc'], + } + exec { "alternc_domain_type_add_${name}": + command => $command_add, + unless => $command_exists, + require => Package['alternc'], + } + } + else { + # This could monstrously mess up AlternC if a domain type that is in use + # is removed. + exec { "alternc_domain_type_remove_${name}": + command => $command_remove, + onlyif => $command_exists, + require => Package['alternc'], + } + } + if $manage_template { + file { "alternc_domain_type_${name}": + ensure => $real_ensure, + path => $template_path, + content => $template_content, + owner => 'root', + group => 'root', + mode => '0644', + } + } +}