Skip to content

Commit 0864068

Browse files
committed
WIP - Add support for FreeBSD 10, 11 and 12
1 parent 38fe580 commit 0864068

File tree

4 files changed

+173
-51
lines changed

4 files changed

+173
-51
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ only), 1.9.3, 2.0.0, 2.1.0 and 2.3.1 (Puppet v4 only).
2727
* EL 5
2828
* EL 6
2929
* EL 7
30+
* FreeBSD 10
31+
* FreeBSD 11
32+
* FreeBSD 12
3033
* SLES 10
3134
* SLES 11
3235
* SLES 12
@@ -80,7 +83,7 @@ ssh_config_group
8083
----------------
8184
ssh_config's group.
8285

83-
- *Default*: 'root'
86+
- *Default*: 'USE_DEFAULTS'
8487

8588
ssh_config_mode
8689
---------------
@@ -194,7 +197,7 @@ sshd_config_group
194197
----------------
195198
sshd_config's group.
196199

197-
- *Default*: 'root'
200+
- *Default*: 'USE_DEFAULTS'
198201

199202
sshd_config_loglevel
200203
---------------------------
@@ -672,7 +675,7 @@ ssh_config_global_known_hosts_group
672675
----------------------------------
673676
Group of the global known_hosts file
674677

675-
- *Default*: 'root'
678+
- *Default*: 'USE_DEFAULTS'
676679

677680
ssh_config_global_known_hosts_mode
678681
----------------------------------

manifests/init.pp

Lines changed: 90 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
$ssh_config_hash_known_hosts = 'USE_DEFAULTS',
1414
$ssh_config_path = '/etc/ssh/ssh_config',
1515
$ssh_config_owner = 'root',
16-
$ssh_config_group = 'root',
16+
$ssh_config_group = 'USE_DEFAULTS',
1717
$ssh_config_mode = '0644',
1818
$ssh_config_forward_x11 = undef,
1919
$ssh_config_forward_x11_trusted = 'USE_DEFAULTS',
@@ -31,7 +31,7 @@
3131
$ssh_gssapidelegatecredentials = undef,
3232
$sshd_config_path = '/etc/ssh/sshd_config',
3333
$sshd_config_owner = 'root',
34-
$sshd_config_group = 'root',
34+
$sshd_config_group = 'USE_DEFAULTS',
3535
$sshd_config_loglevel = 'INFO',
3636
$sshd_config_mode = 'USE_DEFAULTS',
3737
$sshd_config_permitemptypasswords = undef,
@@ -99,15 +99,47 @@
9999
$ssh_config_global_known_hosts_file = '/etc/ssh/ssh_known_hosts',
100100
$ssh_config_global_known_hosts_list = undef,
101101
$ssh_config_global_known_hosts_owner = 'root',
102-
$ssh_config_global_known_hosts_group = 'root',
102+
$ssh_config_global_known_hosts_group = 'USE_DEFAULTS',
103103
$ssh_config_global_known_hosts_mode = '0644',
104104
$ssh_config_user_known_hosts_file = undef,
105105
$keys = undef,
106106
$manage_root_ssh_config = false,
107107
$root_ssh_config_content = "# This file is being maintained by Puppet.\n# DO NOT EDIT\n",
108108
) {
109109

110+
if $::osfamily == 'FreeBSD' {
111+
$default_ssh_config_group = 'wheel'
112+
$default_sshd_config_group = 'wheel'
113+
$default_ssh_config_global_known_hosts_group = 'wheel'
114+
} else {
115+
$default_ssh_config_group = 'root'
116+
$default_sshd_config_group = 'root'
117+
$default_ssh_config_global_known_hosts_group = 'root'
118+
}
119+
110120
case $::osfamily {
121+
'FreeBSD': {
122+
$default_packages = undef
123+
$default_service_name = 'sshd'
124+
$default_ssh_config_hash_known_hosts = 'no'
125+
$default_ssh_config_forward_x11_trusted = 'yes'
126+
$default_ssh_package_source = undef
127+
$default_ssh_package_adminfile = undef
128+
$default_ssh_sendenv = true
129+
$default_sshd_config_subsystem_sftp = '/usr/libexec/openssh/sftp-server'
130+
$default_sshd_config_mode = '0600'
131+
$default_sshd_config_use_dns = 'yes'
132+
$default_sshd_config_xauth_location = '/usr/bin/xauth'
133+
$default_sshd_use_pam = 'yes'
134+
$default_sshd_gssapikeyexchange = undef
135+
$default_sshd_pamauthenticationviakbdint = undef
136+
$default_sshd_gssapicleanupcredentials = 'yes'
137+
$default_sshd_acceptenv = true
138+
$default_service_hasstatus = true
139+
$default_sshd_config_serverkeybits = '1024'
140+
$default_sshd_config_hostkey = [ '/etc/ssh/ssh_host_rsa_key' ]
141+
$default_sshd_addressfamily = 'any'
142+
}
111143
'RedHat': {
112144
$default_packages = ['openssh-server',
113145
'openssh-clients']
@@ -242,7 +274,7 @@
242274
}
243275
}
244276
default: {
245-
fail("ssh supports osfamilies RedHat, Suse, Debian and Solaris. Detected osfamily is <${::osfamily}>.")
277+
fail("ssh supports osfamilies Debian, FreeBSD, RedHat, Solaris and Suse. Detected osfamily is <${::osfamily}>.")
246278
}
247279
}
248280

@@ -267,6 +299,27 @@
267299
$packages_real = $packages
268300
}
269301

302+
if $ssh_config_group == 'USE_DEFAULTS' {
303+
$ssh_config_group_real = $default_ssh_config_group
304+
} else {
305+
$ssh_config_group_real = $ssh_config_group
306+
}
307+
validate_string($ssh_config_group_real)
308+
309+
if $sshd_config_group == 'USE_DEFAULTS' {
310+
$sshd_config_group_real = $default_sshd_config_group
311+
} else {
312+
$sshd_config_group_real = $sshd_config_group
313+
}
314+
validate_string($sshd_config_group_real)
315+
316+
if $ssh_config_global_known_hosts_group == 'USE_DEFAULTS' {
317+
$ssh_config_global_known_hosts_group_real = $default_ssh_config_global_known_hosts_group
318+
} else {
319+
$ssh_config_global_known_hosts_group_real = $ssh_config_global_known_hosts_group
320+
}
321+
validate_string($ssh_config_global_known_hosts_group_real)
322+
270323
if $ssh_config_hash_known_hosts == 'USE_DEFAULTS' {
271324
$ssh_config_hash_known_hosts_real = $default_ssh_config_hash_known_hosts
272325
} else {
@@ -672,7 +725,6 @@
672725
}
673726

674727
validate_string($ssh_config_global_known_hosts_owner)
675-
validate_string($ssh_config_global_known_hosts_group)
676728
validate_re($ssh_config_global_known_hosts_mode, '^[0-7]{4}$',
677729
"ssh::ssh_config_global_known_hosts_mode must be a valid 4 digit mode in octal notation. Detected value is <${ssh_config_global_known_hosts_mode}>.")
678730

@@ -750,41 +802,57 @@
750802
validate_array($sshd_config_allowgroups_real)
751803
}
752804

753-
package { $packages_real:
754-
ensure => installed,
755-
source => $ssh_package_source_real,
756-
adminfile => $ssh_package_adminfile_real,
805+
if $packages_real != undef {
806+
package { $packages_real:
807+
ensure => installed,
808+
source => $ssh_package_source_real,
809+
adminfile => $ssh_package_adminfile_real,
810+
before => [
811+
File['ssh_config'],
812+
File['sshd_config'],
813+
],
814+
}
757815
}
758816

759817
file { 'ssh_config' :
760818
ensure => file,
761819
path => $ssh_config_path,
762820
owner => $ssh_config_owner,
763-
group => $ssh_config_group,
821+
group => $ssh_config_group_real,
764822
mode => $ssh_config_mode,
765823
content => template($ssh_config_template),
766-
require => Package[$packages_real],
767824
}
768825

769826
file { 'sshd_config' :
770827
ensure => file,
771828
path => $sshd_config_path,
772829
mode => $sshd_config_mode_real,
773830
owner => $sshd_config_owner,
774-
group => $sshd_config_group,
831+
group => $sshd_config_group_real,
775832
content => template($sshd_config_template),
776-
require => Package[$packages_real],
777833
}
778834

779835
if $sshd_config_banner != 'none' and $sshd_banner_content != undef {
780-
file { 'sshd_banner' :
781-
ensure => file,
782-
path => $sshd_config_banner,
783-
owner => $sshd_banner_owner,
784-
group => $sshd_banner_group,
785-
mode => $sshd_banner_mode,
786-
content => $sshd_banner_content,
787-
require => Package[$packages_real],
836+
if $packages_real == undef {
837+
file { 'sshd_banner' :
838+
ensure => file,
839+
path => $sshd_config_banner,
840+
owner => $sshd_banner_owner,
841+
group => $sshd_banner_group,
842+
mode => $sshd_banner_mode,
843+
content => $sshd_banner_content,
844+
require => undef,
845+
}
846+
} else {
847+
file { 'sshd_banner' :
848+
ensure => file,
849+
path => $sshd_config_banner,
850+
owner => $sshd_banner_owner,
851+
group => $sshd_banner_group,
852+
mode => $sshd_banner_mode,
853+
content => $sshd_banner_content,
854+
require => Package[$packages_real],
855+
}
788856
}
789857
}
790858

@@ -844,7 +912,7 @@
844912
ensure => file,
845913
path => $ssh_config_global_known_hosts_file,
846914
owner => $ssh_config_global_known_hosts_owner,
847-
group => $ssh_config_global_known_hosts_group,
915+
group => $ssh_config_global_known_hosts_group_real,
848916
mode => $ssh_config_global_known_hosts_mode,
849917
}
850918

metadata.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@
2424
"7"
2525
]
2626
},
27+
{
28+
"operatingsystem": "FreeBSD",
29+
"operatingsystemrelease": [
30+
"10",
31+
"11",
32+
"12"
33+
]
34+
},
2735
{
2836
"operatingsystem": "RedHat",
2937
"operatingsystemrelease": [

0 commit comments

Comments
 (0)