74 lines
3.1 KiB
Puppet
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',
|
|
}
|
|
}
|
|
}
|