| 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 |