7u83-ipsec/manifests/racoon.pp

258 lines
4.7 KiB
Puppet
Raw Permalink Normal View History

2018-02-21 15:31:53 +00:00
# Racoon IPSec
class ipsec::racoon (
$version = 'latest',
2018-02-21 15:31:53 +00:00
)inherits ipsec::racoon_params{
package {'racoon':
name => "$racoon_pkg",
ensure => "$version",
}
file {$racoon_certs:
ensure => directory,
require => Package['racoon']
} ->
exec {"/bin/ln -s ${ipsec::puppet_crl} $racoon_certs/`${ipsec::openssl_cmd} crl -noout -hash < ${ipsec::puppet_crl}`.r0 && touch /tmp/i":
creates => "/tmp/i"
}
2018-02-21 15:31:53 +00:00
service {'racoon':
name => "$racoon_service",
ensure => 'running',
2018-02-23 16:02:21 +00:00
require => Concat["$racoon_conf"],
2018-02-21 15:31:53 +00:00
subscribe => Concat["$racoon_conf"],
enable => true,
}
service {'ipsec':
name => "$ipsec_service",
enable => true,
}
exec { "$setkey_cmd -f $ipsec_conf":
subscribe => Concat[ "$ipsec_conf" ],
refreshonly => true
}
concat { "$racoon_conf":
ensure => present
}
concat::fragment { "$racoon_conf header":
target => "$racoon_conf",
order => '00',
content => template('ipsec/racoon/racoon.conf.header.erb'),
}
$default_proposals = $::ipsec::default_proposals
2018-02-21 15:31:53 +00:00
# concat::fragment { "$racoon_conf footer":
# target => "$racoon_conf",
# order => '99',
# content => template('ipsec/racoon/racoon.conf.footer.erb'),
# }
2018-02-21 15:31:53 +00:00
concat { "$ipsec_conf":
2018-03-07 13:40:57 +00:00
ensure => present,
require => Package['racoon']
2018-02-21 15:31:53 +00:00
}
concat::fragment { "ipsec_conf_header":
target => "$ipsec_conf",
order => '00',
2018-02-23 16:02:21 +00:00
content => template('ipsec/racoon/ipsec.conf.header.erb'),
2018-02-21 15:31:53 +00:00
}
concat { "$racoon_pskfile":
owner => "$racoon_usr",
group => "$racoon_grp",
mode => '0600',
2018-03-07 13:40:57 +00:00
ensure => present,
require => Package['racoon']
2018-02-21 15:31:53 +00:00
}
2019-11-21 22:12:51 +00:00
2018-02-21 15:31:53 +00:00
concat::fragment { "pskfile_header":
target => "$racoon_pskfile",
order => '00',
content => "# PSKs for Racoon managed by puppet\n",
2018-02-21 15:31:53 +00:00
}
if $ipsec::use_global {
ipsec::racoon::remote {"default":
remote_id => 'anonymous',
exchange_mode => $ipsec::exchange_mode,
client_cert => $ipsec::puppet_client_cert,
client_key => $ipsec::puppet_client_key,
ca_cert => $ipsec::puppet_ca_cert,
proposals => $ipsec::proposals,
}
ipsec::racoon::sainfo {"default":
saparam => "anonymous",
lifetime => 3600,
pfs_group => "modp2048",
encryption => ["3des"],
hash => ["md5"],
compression => "deflate",
}
}
2018-02-21 15:31:53 +00:00
}
define ipsec::racoon::remote
(
$remote_id,
$exchange_mode,
$generate_policy = "off",
$proposals,
$order = undef,
$ca_cert = undef,
$client_cert = undef,
$client_key = undef,
$crl = undef,
$psk = undef,
) {
concat::fragment { "p1_$title":
target => "$::ipsec::racoon_params::racoon_conf",
content => template('ipsec/racoon/remote.erb')
}
}
define ipsec::racoon::sainfo
(
$pfs_group,
$encryption,
$hash,
$compression,
$lifetime,
$saparam,
$order = undef
){
concat::fragment { "sainfo_$title":
target => "$::ipsec::racoon_params::racoon_conf",
content => template('ipsec/racoon/sainfo.erb')
}
2018-02-21 15:31:53 +00:00
}
2018-02-21 15:31:53 +00:00
define ipsec::racoon::tunnel (
$local_ip,
$remote_ip,
2018-02-23 16:02:21 +00:00
$encryption,
$hash,
$dh_group,
$lifetime,
2018-02-21 15:31:53 +00:00
$nets,
2018-02-23 16:02:21 +00:00
$proto,
2018-02-21 15:31:53 +00:00
$psk
)
{
concat::fragment { "$title":
target => "$::ipsec::racoon_params::ipsec_conf",
2018-02-23 16:02:21 +00:00
content => template('ipsec/racoon/ipsec.conf.tunnel.erb')
2018-02-21 15:31:53 +00:00
}
concat::fragment { "psk_$title":
target => "$::ipsec::racoon_params::racoon_pskfile",
content => "$remote_ip $psk\n"
}
concat::fragment { "racoon_conf_$title":
target => "$::ipsec::racoon_params::racoon_conf",
2019-11-21 22:12:51 +00:00
content => template('ipsec/racoon/racoon-tunnel.conf.erb')
2018-02-21 15:31:53 +00:00
}
}
define ipsec::racoon::transport (
$local_ip,
$local_port,
2018-02-21 15:31:53 +00:00
$remote_ip,
$remote_id,
$remote_port,
2018-02-23 16:02:21 +00:00
$proto,
2018-02-23 16:02:21 +00:00
$encryption,
$hash,
$dh_group,
2019-11-21 22:12:51 +00:00
$p2hash,
$lifetime,
$exchange_mode,
$psk,
$ca_cert,
$client_cert,
$client_key,
$crl,
$proposals,
2018-02-21 15:31:53 +00:00
)
{
if ! $ipsec::use_global {
ipsec::racoon::remote {"$title":
remote_id => $remote_id,
exchange_mode => $exchange_mode,
proposals => $proposals,
psk => $psk,
ca_cert => $ca_cert,
client_cert => $client_cert,
client_key => $client_key,
crl => $crl,
}
if ! $local_ip {
$arg_local_ip = "anonymous"
}
else{
$arg_local_ip= "address $local_ip[$local_port] $proto"
}
ipsec::racoon::sainfo {"$title":
saparam => "$arg_local_ip address $remote_ip[$remote_port] $proto ",
lifetime => 3600,
pfs_group => "modp2048",
encryption => ["aes256"],
hash => ["sha256"],
compression => "deflate",
}
}
2018-02-21 15:31:53 +00:00
concat::fragment { "$title":
target => "$::ipsec::racoon_params::ipsec_conf",
content => template('ipsec/racoon/ipsec.conf.transport.erb')
}
2019-11-21 22:12:51 +00:00
if $psk {
concat::fragment { "psk_$title":
target => "$::ipsec::racoon_params::racoon_pskfile",
content => "$remote_ip $psk\n"
}
2019-11-21 22:12:51 +00:00
}
# concat::fragment { "racoon_conf_$title":
# target => "$::ipsec::racoon_params::racoon_conf",
# content => template('ipsec/racoon/racoon-transport.conf.erb')
# }
2018-02-21 15:31:53 +00:00
}