From 9ba1c7abf81179a110f154078acb062fe759989d Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Tue, 26 Nov 2013 23:16:40 +0200 Subject: [PATCH 1/4] puppet: Fixed puppet::client for OpenWRT. --- puppet/manifests/init.pp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/puppet/manifests/init.pp b/puppet/manifests/init.pp index d9d6614..b94c74f 100644 --- a/puppet/manifests/init.pp +++ b/puppet/manifests/init.pp @@ -25,8 +25,9 @@ class puppet::client { } case $::operatingsystem { - openbsd: { $vardir = "/var/puppet" } - default: { $vardir = "/var/lib/puppet" } + "openbsd": { $vardir = "/var/puppet" } + "openwrt": { $vardir = "/etc/puppet" } + default: { $vardir = "/var/lib/puppet" } } case $::operatingsystem { @@ -140,22 +141,29 @@ class puppet::client { file { "/usr/local/sbin/puppet-check": ensure => present, + name => $::operatingsystem ? { + "openwrt" => "/usr/sbin/puppet-check", + default => "/usr/local/sbin/puppet-check", + }, source => "puppet:///modules/puppet/puppet-check", mode => "0755", owner => "root", group => $::operatingsystem ? { - openbsd => "wheel", - default => "root", + "openbsd" => "wheel", + default => "root", }, } cron { "puppet-check": ensure => present, environment => $::operatingsystem ? { - openbsd => "PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin", - default => undef, + "openbsd" => "PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin", + default => undef, }, - command => "/usr/local/sbin/puppet-check", - user => root, + command => $::operatingsystem ? { + "openwrt" => "/usr/sbin/puppet-check", + default => "/usr/local/sbin/puppet-check", + }, + user => "root", hour => 5, minute => fqdn_rand(60), require => File["/usr/local/sbin/puppet-check"], From 76ddba55d8e3f9cf8a37dc121615c3b92b25f97e Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Tue, 26 Nov 2013 23:40:41 +0200 Subject: [PATCH 2/4] uci: Initial version. --- uci/manifests/init.pp | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 uci/manifests/init.pp diff --git a/uci/manifests/init.pp b/uci/manifests/init.pp new file mode 100644 index 0000000..48b5e2e --- /dev/null +++ b/uci/manifests/init.pp @@ -0,0 +1,44 @@ + +# Helper class for UCI commit +# +class uci { + + if $::operatingsystem != "OpenWRT" { + fail("uci not supported on ${::operatingsystem}") + } + + exec { "uci commit": + user => "root", + path => "/bin:/usr/bin:/sbin:/usr/sbin", + refreshonly => true, + } + +} + +# Set value using UCI +# +# === Parameters +# +# $name: +# UCI key to set +# $value: +# Value for given key +# +# === Sample usage +# +# uci::set { "uhttpd.main.listen_http": +# value => "8080", +# } +# +define uci::set($value) { + + include uci + + exec { "uci set ${name}=${value}": + user => "root", + path => "/bin:/usr/bin:/sbin:/usr/sbin", + unless => "uci get ${name} | egrep '^${value}\$'", + notify => Exec["uci commit"], + } + +} From 8a2f0b6e5b93687df87c790d4809b55c4b83f8c5 Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Tue, 26 Nov 2013 23:41:18 +0200 Subject: [PATCH 3/4] network: Added OpenWRT support to network::hostname. --- network/manifests/init.pp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/network/manifests/init.pp b/network/manifests/init.pp index 4d43543..7e5d7b5 100644 --- a/network/manifests/init.pp +++ b/network/manifests/init.pp @@ -67,7 +67,7 @@ class network::hostname { "debian","ubuntu": { file { "/etc/hostname": ensure => present, - content => "${homename}\n", + content => "${::homename}\n", mode => "0644", owner => "root", group => "root", @@ -77,7 +77,7 @@ class network::hostname { if versioncmp($::operatingsystemrelease, "17") == 1 { file { "/etc/hostname": ensure => present, - content => "${homename}\n", + content => "${::homename}\n", mode => "0644", owner => "root", group => "root", @@ -85,25 +85,30 @@ class network::hostname { } else { augeas { "set-hostname": context => "/files/etc/sysconfig/network", - changes => "set HOSTNAME ${homename}", + changes => "set HOSTNAME ${::homename}", } } } "centos","redhat": { augeas { "set-hostname": context => "/files/etc/sysconfig/network", - changes => "set HOSTNAME ${homename}", + changes => "set HOSTNAME ${::homename}", } } "openbsd": { file { "/etc/myname": ensure => present, - content => "${homename}\n", + content => "${::homename}\n", mode => "0644", owner => "root", group => "wheel", } } + "openwrt": { + uci::set { "system.@system[0].hostname": + value => $::homename, + } + } default: { fail("network::hostname not supported on ${::operatingsystem}") } From cc094e1696d458b6c9763945c615c6fde8ebfab0 Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Wed, 27 Nov 2013 12:57:55 +0200 Subject: [PATCH 4/4] ssh: Added OpenWRT support to ssh::server. --- ssh/manifests/init.pp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ssh/manifests/init.pp b/ssh/manifests/init.pp index 58f6292..cf8e78d 100644 --- a/ssh/manifests/init.pp +++ b/ssh/manifests/init.pp @@ -107,17 +107,22 @@ class ssh::hostkeys { class ssh::server { if $::operatingsystem != "OpenBSD" { - package { "openssh-server": + package { "ssh-server": ensure => installed, + name => $::operatingsystem ? { + "openwrt" => "dropbear", + default => "openssh-server", + }, before => Service["sshd"], } } service { "sshd": name => $::operatingsystem ? { - "debian" => "ssh", - "ubuntu" => "ssh", - default => "sshd", + "debian" => "ssh", + "openwrt" => "dropbear", + "ubuntu" => "ssh", + default => "sshd", }, ensure => running, enable => true,