| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 # == Type: adblockplus::host | 
|  | 2 # | 
|  | 3 # Manage host information for any node within the Adblock Plus infrastructure. | 
|  | 4 # | 
|  | 5 # === Parameters: | 
|  | 6 # | 
|  | 7 # [*ensure*] | 
|  | 8 #   Whether to ensure any host-related resources being 'present' or 'absent'. | 
|  | 9 #   Note that implicit realization of embedded resources only takes place if | 
|  | 10 #   $ensure is 'absent'. | 
|  | 11 # | 
|  | 12 # [*fqdn*] | 
|  | 13 #   The fully qualified domain name associated with the host. See the examples | 
|  | 14 #   section below on how this piece of information is supposed to be re-used. | 
|  | 15 # | 
|  | 16 # [*groups*] | 
|  | 17 #   A list of logical groups the host is associated with, i.e. for direct or | 
|  | 18 #   indirect translation into nagios_hostgroup names or similar. This parameter | 
|  | 19 #   is considered meta-information and not processed by type adblockplus::host. | 
|  | 20 # | 
|  | 21 # [*ips*] | 
|  | 22 #   A list of one or more IPv4 and IPv6 addresses associated with the host, | 
|  | 23 #   the first one of which is considered the primary IP address, and each of | 
|  | 24 #   which is included as $alias in the (virtual) Sshkey[$title] resource. | 
|  | 25 # | 
|  | 26 # [*public_key*] | 
|  | 27 #   The host's public (SSH) key, i.e "ssh-rsa AA.... host1.example.com", for | 
|  | 28 #   use with the (virual) Sshkey[$title] resource. Note that this implies the | 
|  | 29 #   default public key of the host being used, namely the first one offered | 
|  | 30 #   during the SSL handshake. | 
|  | 31 # | 
|  | 32 # [*role*] | 
|  | 33 #   The name of the host's primary role, if any. This parameter is considered | 
|  | 34 #   meta-information and not processed by type adblockplus::host. | 
|  | 35 # | 
|  | 36 # === Examples: | 
|  | 37 # | 
|  | 38 #   # Hosts being 'present' do not imply realization of embedded resources | 
|  | 39 #   adblockplus::host {'node1': | 
|  | 40 #     ensure => 'present', | 
|  | 41 #     ips => ['10.8.0.1'], | 
|  | 42 #   } | 
|  | 43 # | 
|  | 44 #   # Explicit realization of /etc/hosts and /etc/ssh/ssh_known_hosts records | 
|  | 45 #   realize(Host['node1']) | 
|  | 46 #   realize(Sshkey['node1']) | 
|  | 47 # | 
|  | 48 #   # Global realization, i.e. when creating a node all others can access | 
|  | 49 #   realize(Host<|tag == 'adblockplus::host'|>) | 
|  | 50 #   realize(Sshkey<|tag == 'adblockplus::host'|>) | 
|  | 51 # | 
|  | 52 #   # Addressing (meta-) parameters for re-using their values | 
|  | 53 #   $fqdn = getparam(Adblockplus::Host['node1'], 'fqdn') | 
|  | 54 #   $primary_ip = getparam(Host['node1'], 'ip') | 
|  | 55 #   $key_type = getparam(Sshkey['node1'], 'type') | 
|  | 56 # | 
|  | 57 define adblockplus::host ( | 
|  | 58   $ensure = 'present', | 
|  | 59   $fqdn = "$name.$adblockplus::authority", | 
|  | 60   $groups = [], | 
|  | 61   $ips, | 
|  | 62   $public_key = undef, | 
|  | 63   $role = undef, | 
|  | 64 ) { | 
|  | 65 | 
|  | 66   include adblockplus | 
|  | 67   include stdlib | 
|  | 68 | 
|  | 69   case $public_key { | 
|  | 70 | 
|  | 71     undef: { | 
|  | 72       $sshkey_ensure = 'absent' | 
|  | 73       $sshkey_key = undef | 
|  | 74       $sshkey_type = undef | 
|  | 75     } | 
|  | 76 | 
|  | 77     default: { | 
|  | 78       $sshkey_ensure = $ensure | 
|  | 79       $sshkey = split($public_key, '\s+') | 
|  | 80       $sshkey_type = $sshkey[0] | 
|  | 81       $sshkey_key = $sshkey[1] | 
|  | 82     } | 
|  | 83   } | 
|  | 84 | 
|  | 85   @host {$title: | 
|  | 86     ensure => $ensure, | 
|  | 87     ip => pick($ips), | 
|  | 88     name => $fqdn, | 
|  | 89     tag => ['adblockplus::host'], | 
|  | 90   } | 
|  | 91 | 
|  | 92   @sshkey {$title: | 
|  | 93     ensure => $sshkey_ensure, | 
|  | 94     host_aliases => $ips, | 
|  | 95     key => $sshkey_key, | 
|  | 96     name => $fqdn, | 
|  | 97     require => File['/etc/ssh/ssh_known_hosts'], | 
|  | 98     tag => ['adblockplus::host'], | 
|  | 99     type => $sshkey_type, | 
|  | 100   } | 
|  | 101 | 
|  | 102   if $ensure == 'absent' { | 
|  | 103     realize(Host[$title]) | 
|  | 104     realize(Sshkey[$title]) | 
|  | 105   } | 
|  | 106 | 
|  | 107   if $::role != undef and manifest_exists("adblockplus::host::$::role") { | 
|  | 108     ensure_resource("adblockplus::host::$::role", $title, {name => $name}) | 
|  | 109   } | 
|  | 110 } | 
| OLD | NEW | 
|---|