From 618384cf08340b34a4eaf1022d200c1acb8161f4 Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Wed, 19 Jan 2011 20:09:16 -0500 Subject: Support puppet client for FreeBSD Some pieces of the puzzle are missing for being able to manage puppet in FreeBSD. * Add a default puppet client config template for FreeBSD * In FreeBSD, puppet.conf is not in /etc/puppet/ so let's provide a value for this variable in init.pp. * The rc script for starting and stopping puppet is not located in /etc/rc.d so let's signify this to Service[puppet] Signed-off-by: Gabriel Filion --- manifests/freebsd.pp | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 manifests/freebsd.pp (limited to 'manifests/freebsd.pp') diff --git a/manifests/freebsd.pp b/manifests/freebsd.pp new file mode 100644 index 0000000..1fe28d0 --- /dev/null +++ b/manifests/freebsd.pp @@ -0,0 +1,7 @@ +class puppet::freebsd inherits puppet::base { + + Service['puppet'] { + path => '/usr/local/etc/rc.d', + } + +} -- cgit v1.2.3 From 2a13f8a56b2acac95c9f59f6957eb5ece386e76d Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Tue, 23 Aug 2011 16:11:16 -0400 Subject: FreeBSD: install packages via puppet itself The linux class installs puppet and facter via puppet itself. Chances are that they are already installed, since you need puppet before you can run puppet. _But_, it enables the $puppet_ensure_version and $facter_ensure_version features (forcing the installed version). So let's do the same in FreeBSD. Signed-off-by: Gabriel Filion --- manifests/freebsd.pp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'manifests/freebsd.pp') diff --git a/manifests/freebsd.pp b/manifests/freebsd.pp index 1fe28d0..3d0995d 100644 --- a/manifests/freebsd.pp +++ b/manifests/freebsd.pp @@ -1,7 +1,18 @@ class puppet::freebsd inherits puppet::base { - Service['puppet'] { - path => '/usr/local/etc/rc.d', - } + if !$puppet_ensure_version { $puppet_ensure_version = 'installed' } + package { 'puppet': + ensure => $puppet_ensure_version, + } + + if !$facter_ensure_version { $facter_ensure_version = 'installed' } + package { 'facter': + ensure => $facter_ensure_version, + } + + Service['puppet'] { + path => '/usr/local/etc/rc.d', + require => Package[puppet], + } } -- cgit v1.2.3 From 506767d73515f79e05057df928bf7baa94b0dfcc Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Sun, 8 Apr 2012 20:24:03 -0400 Subject: Fail when trying to ensure an installed version on FreeBSD The two package providers for FreeBSD are not able to ensure that a specific version of a package is installed because of how ports/pkg_add work. They can only ensure the version from the specified FreeBSD release is installed or absent. For more information, see: http://docs.puppetlabs.com/references/stable/type.html#features-4 To make the class easier to understand, let's not do something that users don't expect when they're requesting installation of a specific version. We'll explicitly fail and tell users why so that they can adjust how they use the class/module. Signed-off-by: Gabriel Filion --- manifests/freebsd.pp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'manifests/freebsd.pp') diff --git a/manifests/freebsd.pp b/manifests/freebsd.pp index 3d0995d..cdce989 100644 --- a/manifests/freebsd.pp +++ b/manifests/freebsd.pp @@ -1,11 +1,20 @@ class puppet::freebsd inherits puppet::base { - if !$puppet_ensure_version { $puppet_ensure_version = 'installed' } + case $puppet_ensure_version { + '': { $puppet_ensure_version = 'installed' } + 'removed','absent','installed', 'present': {} # those values are OK + default: { fail('Package providers for FreeBSD cannot ensure that a specific version is installed.') } + } + case $facter_ensure_version { + '': { $facter_ensure_version = 'installed' } + 'removed','absent','installed', 'present': {} # those values are OK + default: { fail('Package providers for FreeBSD cannot ensure that a specific version is installed.') } + } + package { 'puppet': ensure => $puppet_ensure_version, } - if !$facter_ensure_version { $facter_ensure_version = 'installed' } package { 'facter': ensure => $facter_ensure_version, } -- cgit v1.2.3