Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: modules/adblockplus/manifests/host.pp

Issue 29338046: Issue 3638 - Introduce type adblockplus::host (Closed)
Patch Set: Created March 9, 2016, 11:57 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(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 }
OLDNEW
« no previous file with comments | « modules/adblockplus/lib/puppet/parser/functions/manifest_exists.rb ('k') | modules/adblockplus/manifests/host/example.pp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld