Index: modules/base/manifests/init.pp |
=================================================================== |
--- a/modules/base/manifests/init.pp |
+++ b/modules/base/manifests/init.pp |
@@ -1,4 +1,4 @@ |
-class base { |
+class base ($zone='adblockplus.org') { |
stage {'pre': before => Stage['main']} |
stage {'post': require => Stage['main']} |
@@ -39,4 +39,51 @@ |
class {'logrotate': |
stage => 'post' |
} |
+ |
+ $servers = hiera('servers') |
+ create_resources(base::explicit_host_record, $servers) |
+ |
+ define explicit_host_record( |
+ $ip, |
+ $ssh_public_key = undef, |
+ $role = undef, |
+ $dns = undef, |
+ $groups = undef, |
+ ) { |
+ |
+ if is_array($ip) { |
+ $internal_ip = $ip[0] |
+ } else { |
+ $internal_ip = $ip |
+ } |
+ |
+ $fqdn_name = join([$name, $base::zone], '.') |
+ |
+ host{$name: |
+ ensure => present, |
+ ip => $internal_ip, |
+ name => $fqdn_name, |
+ host_aliases => $dns ? { |
+ undef => [], |
+ default => $dns, |
+ } |
+ } |
+ |
+ if $ssh_public_key != undef { |
+ |
+ $name_key = $dns ? { |
+ undef => $fqdn_name, |
+ default => $dns, |
+ } |
+ |
+ @sshkey {$name: |
+ name => $name_key, |
+ key => $ssh_public_key, |
+ type => ssh-rsa, |
+ host_aliases => $ip, |
+ } |
+ } |
+ |
+ } |
} |
+ |