puppet-alternc/manifests/domain_type.pp

74 lines
3.1 KiB
Puppet

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',
}
}
}