Re: [Puppet Users] Process hang on FreeBSD

Russell A. Jackson
Wed, 18 Dec 2013 01:24:45 -0000

On 12/17/2013 04:31 PM, Patrick Gibson wrote:
> Debug: Executing ''/usr/local/sbin/portupgrade -N -M BATCH=yes
devel/jsmin''

In short, out-of-the-box, puppet is broken on FreeBSD in regards to package
handling.

Portupgrade doesn''t like being run with stdin not being a terminal.
You''ll
probably find you have a `script` process taking 100% cpu when you see it hang.
This problem has been around for a long time and still hasn''t been
fixed as far
as I know.

The default (freebsd) pkg_add binary package provider is also broken mainly
because the of heuristics that pkg_add -r use. You''ll find this to a
problem
when the symlink name under /Latest doesn''t match the name that the
package
records in the pkgdb. This leads to puppet trying to install the package on
every run.

If you install puppet from ports, it applies a patch to address this problem but
requires using the ports origin (like with the ports provider) as the package
name. Instead of using pkg_add -r, it downloads the ports index and looks up the
package name for a given ports origin and then supplies the specific url of the
full package name as a argument to pkg_add.

I have an updated version of this provider that fixes a number of issues as well
as supporting ensure => latest.

https://bitbucket.org/csub/puppet-module-freebsd

Be aware, having this module in your module path will mask the default freebsd
provider distributed with puppet.

There are also third party puppet modules that implement a provider for pkgng
that work well. If you can migrate to pkgng, I would strongly suggest doing so.

--
Russell A. Jackson <raj@csub.edu>
Network/Datacenter Operations
California State University, Bakersfield