Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/voxpupuli/puppet-poudriere
A Puppet module for managing Poudriere, the PkgNG build system.
https://github.com/voxpupuli/puppet-poudriere
bsd-puppet-module freebsd-puppet-module hacktoberfest puppet
Last synced: 5 days ago
JSON representation
A Puppet module for managing Poudriere, the PkgNG build system.
- Host: GitHub
- URL: https://github.com/voxpupuli/puppet-poudriere
- Owner: voxpupuli
- Created: 2012-10-16T04:23:01.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T07:31:14.000Z (3 months ago)
- Last Synced: 2024-10-29T14:22:41.244Z (about 2 months ago)
- Topics: bsd-puppet-module, freebsd-puppet-module, hacktoberfest, puppet
- Language: Puppet
- Homepage: https://forge.puppet.com/puppet/poudriere
- Size: 276 KB
- Stars: 12
- Watchers: 42
- Forks: 15
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
Awesome Lists containing this project
README
# Puppet-poudriere
[![Build Status](https://travis-ci.org/voxpupuli/puppet-poudriere.svg?branch=master)](https://travis-ci.org/voxpupuli/puppet-poudriere)
[![Code Coverage](https://coveralls.io/repos/github/voxpupuli/puppet-poudriere/badge.svg?branch=master)](https://coveralls.io/github/voxpupuli/puppet-poudriere)
[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/poudriere.svg)](https://forge.puppetlabs.com/puppet/poudriere)
[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/poudriere.svg)](https://forge.puppetlabs.com/puppet/poudriere)
[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/poudriere.svg)](https://forge.puppetlabs.com/puppet/poudriere)
[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/poudriere.svg)](https://forge.puppetlabs.com/puppet/poudriere)
[![License](https://img.shields.io/github/license/voxpupuli/puppet-poudriere.svg)](https://github.com/voxpupuli/puppet-poudriere/blob/master/LICENSE)Manage the FreeBSD PkgNG build system with Puppet.
## Simple Implementation
```Puppet
poudriere::env { "90amd64":
makeopts => [
"WITH_PKGNG=yes",
"OPTIONS_SET+= SASL",
"OPTIONS_SET+= TLS",
"WITH_IPV6=TRUE",
"WITH_SSL=YES",
]
}nginx::vhost { "build.${domain}":
port => 80,
vhostroot => '/usr/local/poudriere/data/packages',
autoindex => true,
}@@pkgng::repo { "${::fqdn}-90amd64":
release => '9.0-RELEASE',
mirror_type => 'http',
repopath => '/90amd64-default/Latest/',
}
```## Changing default settings
The `poudriere` class has some default parameters for global settings, such as the ZFS pool, root filesystem, and the FreeBSD mirror site to use (see `init.pp` for details). To change these defaults, declare the `poudriere` class with your own parameters.
If you do not want to use ZFS, you can use:
```Puppet
class { 'poudriere':
zpool => false,
}
```## Using port-specific make options
You can pass port-specific make options as a hash in `pkg_makeopts`. For instance, if you want to build Apache 2.4 with the PHP 5.5 module, you can do the following:
```Puppet
poudriere::env { "90amd64":
makeopts => [
'WITH_PKGNG=yes',
'APACHE_VERSION=24',
'APACHE_PORT=www/apache24',
],
pkgs => [
'www/apache24',
'lang/php55',
],
pkg_makeopts => {
'lang/php55' => ['OPTIONS_SET+=APACHE'],
},
}
```Alternatively, a file containing make options for both global and port-specific use could be defined by setting `makefile`.
## Using port-specific build options
Ports often allow for enabling or disabling support for certain features. Such options can be manually set by issueing `poudriere options cat/port` but can also be defined in puppet by setting `pkg_optsdir`. This should point to a directory with files such as could be found in `/usr/local/etc/poudriere.d/${jail}-options/`:
```Puppet
poudriere::env { "90amd64":
pkg_optsdir => 'puppet:///path/to/dir/',
}
```## Managing seperate portstrees
The `default` portstreee is no longer configuered by this module. You should create this yourself like so:
```Puppet
poudriere::portstree { 'default': }
``````yaml
poudriere::portstrees:
default:
```By default environments use a portstree named `default`, which you should create as per the instructions above; however each build environment can be told which portstree to use:
```Puppet
poudriere::portstree { "custom-ports":
cron_enable => false,
fetch_method => 'portsnap',
}poudriere::env { "custom-build":
portstree => 'custom-ports',
}
``````yaml
poudriere::portstrees:
default:
custom-ports:
cron_enabled: false
fetch_method: portsnap
poudriere::environments:
custom-build:
portstree: custom-ports
```