abstract the tinc host part into its own define

This commit is contained in:
mh 2015-01-11 14:22:18 +01:00
parent ebf3a00ed1
commit 4e22ae9781
3 changed files with 46 additions and 11 deletions

36
manifests/host.pp Normal file
View file

@ -0,0 +1,36 @@
# a host for a certain network
# title must be:
# hostname@network
#
define tinc::host(
$public_key,
$ensure = present,
$port = 655,
$compression = 10,
) {
# if absent the net should
# clean it up by itself
if $ensure == 'present' {
validate_re($name,'.+@.+')
$sp_name = split($name,'@')
$fqdn_tinc = $sp_name[0]
$net = $sp_name[1]
include tinc
if $tinc::uses_systemd {
$service_name = "tincd@${net}"
} else {
$service_name = 'tinc'
}
file{"/etc/tinc/${net}/hosts/${fqdn_tinc}":
content => template('tinc/host.erb'),
# to be sure that we manage that net
require => File["/etc/tinc/${net}/hosts"],
notify => Service[$service_name],
owner => root,
group => 0,
mode => '0600';
}
}
}

View file

@ -112,15 +112,15 @@ define tinc::instance(
group => 0,
mode => '0600';
}
# export and collect all the keys of this net
@@file { "/etc/tinc/${name}/hosts/${fqdn_tinc}":
content => template('tinc/host.erb'),
tag => "tinc_host_for_${name}",
owner => root,
group => 0,
mode => '0600';
# export this host and collect all the other hosts
@@tinc::host{"${fqdn_tinc}@${name}":
port => $port,
compression => $compression,
address => $host_address,
public_key => $tinc_keys[1],
tag => "tinc::host_for_${name}",
}
File<<| tag == "tinc_host_for_${name}" |>>
Tinc::Host<<| tag == "tinc::host_for_${name}" |>>
concat::fragment{"tinc_conf_header_${name}":
target => $tinc_config,

View file

@ -1,6 +1,5 @@
Address = <%= @host_address %>
Address = <%= @address %>
Port = <%= @port %>
Compression = <%= @compression %> # 0=no,11=best lzo
#
<%= @tinc_keys[1] %>
<%= @public_key %>