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 ($authority='adblockplus.org') { |
stage {'pre': before => Stage['main']} |
stage {'post': require => Stage['main']} |
@@ -39,4 +39,45 @@ |
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) { |
+ |
+ if is_array($ip) { |
+ $internal_ip = $ip[0] |
+ } else { |
+ $internal_ip = $ip |
+ } |
+ |
+ $fqdn_name = join([$name, $base::authority], ".") |
+ |
+ 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, |
+ } |
+ } |
+ |
+ } |
} |
+ |