Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- Archlinux, Gentoo , , , , , , ,
Tasks:
- deploy
Start using this module
Add this module to your Puppetfile:
mod 'puppet-r10k', '13.0.0'
Learn more about managing modules with a PuppetfileDocumentation
r10k Configuration Module
Table of Contents
- Overview
- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with r10k
- Webhook Support
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Support
- Development - Guide for contributing to the module
- Running tests
Overview
This module was built to install and configure r10k. It has a base class to configure r10k to synchronize dynamic environments. It also has a series of lateral scripts and tools that assist in general workflow, that will be separated into their own modules into the future.
Module Description
This module is meant to manage the installation and configuration of r10k using multiple installation methods on multiple platforms.
Setup
Please refer to the official r10k docs for specific configuration patterns.
Prefix Example
Instead of passing a single remote
, you can pass a puppet hash as the sources
parameter. This allows you to configure r10k with prefix support. This often used when multiple teams use separate repos, or if hiera and puppet are distributed across two repos.
class { 'r10k':
sources => {
'webteam' => {
'remote' => 'ssh://git@github.com/webteam/somerepo.git',
'basedir' => "${::settings::codedir}/environments",
'prefix' => true,
},
'secteam' => {
'remote' => 'ssh://git@github.com/secteam/someotherrepo.git',
'basedir' => '/some/other/basedir',
'prefix' => true,
},
},
}
What r10k affects
- Installation of the r10k
gem
- Installation of ruby when not using an existing ruby stack i.e. when using
puppet_gem
- Management of the
r10k.yaml
in /etc - Installation and configuration of a sinatra app when using the webhook.
Version chart
Gem installation is pinned to a default version in this module, the following chart shows the gem installation tested with the respective module version.
You can override this by passing the version
parameter.
Module Version | r10k Version |
---|---|
v4.0.0+ | |
v3.0.x | 1.5.1 |
v2.8.2 | 1.5.1 |
v2.7.x | 1.5.1 |
v2.6.5 | 1.4.1 |
v2.5.4 | 1.4.0 |
v2.4.4 | 1.3.5 |
v2.3.1 | 1.3.4 |
v2.3.0 | 1.3.2 |
v2.2.8 | 1.3.1 |
v2.2.x | 1.1.0 |
Setup Requirements
r10k connects via ssh and does so silently in the background, this typically requires ssh keys to be deployed in advance of configuring r10k. This includes the known host ( public ) key of the respective git server, and the user running r10k's private key used to authenticate git/ssh during background runs. If you are going to use git repos to retrieve modules, you also need git installed.
Here is an example of deploying the git package and ssh keys needed for r10k to connect to a repo called puppet/control on a gitlab server. This is helpful when you need to automatically deploy new masters
package { 'git':
ensure => installed,
}
#https://docs.puppetlabs.com/references/latest/type.html#sshkey
sshkey { 'your.internal.gitlab.server.com':
ensure => present,
type => 'ssh-rsa',
target => '/root/.ssh/known_hosts',
key => '...+dffsfHQ==',
}
# Resource git_webhook is provided by https://github.com/bjvrielink/abrader-gms/tree/fixup
git_deploy_key { 'add_deploy_key_to_puppet_control':
ensure => present,
name => $facts['networking']['fqdn'],
path => '/root/.ssh/id_dsa.pub',
token => hiera('gitlab_api_token'),
project_name => 'puppet/control',
server_url => 'http://your.internal.gitlab.server.com',
provider => 'gitlab',
}
A simple example of creating an ssh private key would use an exec to call yes y | ssh-keygen -t dsa -C "r10k" -f /root/.ssh/id_dsa -q -N ''
.
The example above shows using git_deploy_key
which would deploy that key to the remote git server via its api. This is often required in the programtic creation of compile masters.
Given r10k will likely be downloading your modules, often on the first server
it's run on, you will have to puppet apply
this module to bootstrap this
configuration and allow for ongoing management from there.
Beginning with r10k
The simplest example of using it would be to declare a single remote that would be written to r10k.yaml.
class { 'r10k':
remote => 'git@github.com:someuser/puppet.git',
}
This will configure /etc/r10k.yaml
and install the r10k gem after installing
ruby using the puppetlabs/ruby module.
It also supports installation via multiple providers, such as installation in the puppet_enterprise ruby stack in versions less than 3.8
Installing into the Puppet Enterprise ruby stack in PE 2015.x
class { 'r10k':
remote => 'git@github.com:someuser/puppet.git',
provider => 'puppet_gem',
}
Note: It is recommended you migrate to using the pe_r10k
module which is basically
a clone of this modules features and file tickets for anything missing.
Using an internal gem server
Depending on implementation requirements, there are two ways to use alternate gem sources.
The gemrc approach
Create a global gemrc for Puppet Enterprise to add the local gem source. See http://projects.puppetlabs.com/issues/18053#note-12 for more information.
file { '/opt/puppet/etc':
ensure => 'directory',
owner => 'root',
group => '0',
mode => '0755',
}
file { 'gemrc':
ensure => 'file',
path => '/opt/puppet/etc/gemrc',
owner => 'root',
group => '0',
mode => '0644',
content => "---\nupdate_sources: true\n:sources:\n- http://your.internal.gem.server.com/rubygems/\n",
}
class { 'r10k':
remote => 'git@github.com:someuser/puppet.git',
provider => 'pe_gem',
require => File['gemrc'],
}
The parameter approach
Add gem_source to declaration.
class { 'r10k':
remote => 'git@github.com:someuser/puppet.git',
provider => 'gem',
gem_source => 'https://some.alternate.source.com/',
}
Mcollective Support
An mcollective agent is included in this module which can be used to do on demand synchronization. This mcollective application and agent can be installed on all masters using the following class Note: You must have mcollective already configured for this tool to work, Puppet Enterprise users will automatically have mcollective configured. This class does not restart the mcollective or pe-mcollective server on the nodes to which it is applied, so you may need to restart mcollective for it to see the newly installed r10k agent.
include r10k::mcollective
Using mco you can then trigger mcollective to call r10k using
mco r10k synchronize
You can sync an individual environment using:
mco r10k deploy <environment>
Note: This implies -p
You can sync an individual module using:
mco r10k deploy_module <module>
If you are required to run r10k
as a specific user, you can do so by passing
the user
parameter:
mco r10k synchronize user=r10k
To obtain the output of running the shell command, run the agent like this:
mco rpc r10k synchronize -v
An example post-receive hook is included in the files directory. This hook can automatically cause code to synchronize on your servers at time of push in git. More modern git systems use webhooks, for those see below.
Passing proxy info through mco
The mcollective agent can be configured to supply r10k/git environment http_proxy
, https_proxy
variables via the following example
class { 'r10k::mcollective':
http_proxy => 'http://proxy.example.lan:3128',
git_ssl_no_verify => 1,
}
Install mcollective support for post receive hooks
Install the mco
command from the puppet enterprise installation directory i.e.
cd ~/puppet-enterprise-3.0.1-el-6-x86_64/packages/el-6-x86_64
sudo rpm -i pe-mcollective-client-2.2.4-2.pe.el6.noarch.rpm
Copy the peadmin mcollective configuration and private keys from the certificate authority (puppet master)
/var/lib/peadmin/.mcollective
/var/lib/peadmin/.mcollective.d/mcollective-public.pem
/var/lib/peadmin/.mcollective.d/peadmin-cacert.pem
/var/lib/peadmin/.mcollective.d/peadmin-cert.pem
/var/lib/peadmin/.mcollective.d/peadmin-private.pem
/var/lib/peadmin/.mcollective.d/peadmin-public.pem
Ensure you update the paths in ~/.mcollective when copying to new users whose name is not peadmin. Ideally mcollective will be used with more then just the peadmin user's certificate in the future. That said, if your git user does not have a home directory, you can rename .mcollective as /etc/client.cfg and copy the certs to somewhere that is readable by the respective user.
/home/gitolite/.mcollective
/home/gitolite/.mcollective.d/mcollective-public.pem
/home/gitolite/.mcollective.d/peadmin-cacert.pem
/home/gitolite/.mcollective.d/peadmin-cert.pem
/home/gitolite/.mcollective.d/peadmin-private.pem
/home/gitolite/.mcollective.d/peadmin-public.pem
Note: PE2 only requires the .mcollective file as the default auth was psk
Removing the mcollective agent
class { 'r10k::mcollective':
ensure => false,
}
This will remove the mcollective agent/application and ddl files from disk. This likely would be if you are migrating to Code manager in Puppet Enterprise.
Webhook Support
For version control systems that use web driven post-receive processes you can use the example webhook included in this module. When the webhook receives the post-receive event, it will synchronize environments on your puppet masters. These settings are all configurable for your specific use case, as shown below in these configuration examples.
NOTE: MCollective and Bolt aren't currently supported with Webhook Go. This will be addressed in a future release of Webhook Go, but is an issue related to the complex nature of Bolt and MCollective/Choria commands that cause issues with the way Go executes shell commands.
Webhook Github Enterprise - Non Authenticated
This is an example of using the webhook without authentication.
The git_webhook
type will use the api token to add the webhook to the "control" repo that contains your puppetfile. This is typically useful when you want to automate the addition of the webhook to the repo.
# Instead of running via mco, run r10k directly
class {'r10k::webhook::config':
use_mcollective => false,
}
class {'r10k::webhook':
ensure => true,
server => {
protected => false,
},
}
# Add webhook to control repository ( the repo where the Puppetfile lives )
#
# Resource git_webhook is provided by https://github.com/bjvrielink/abrader-gms/tree/fixup
git_webhook { 'web_post_receive_webhook' :
ensure => present,
webhook_url => 'http://master.of.masters:8088/payload',
token => hiera('github_api_token'),
project_name => 'organization/control',
server_url => 'https://your.github.enterprise.com',
provider => 'github',
}
# Add webhook to module repo if we are tracking branch in Puppetfile i.e.
# mod 'module_name',
# :git => 'http://github.com/organization/puppet-module_name',
# :branch => 'master'
# The module name is determined from the repo name , i.e. <puppet-><module_name>
# All characters with left and including any hyphen are removed i.e. <puppet->
#
# Resource git_webhook is provided by https://github.com/bjvrielink/abrader-gms/tree/fixup
git_webhook { 'web_post_receive_webhook_for_module' :
ensure => present,
webhook_url => 'http://master.of.masters:8088/module',
token => hiera('github_api_token'),
project_name => 'organization/puppet-module_name',
server_url => 'https://your.github.enterprise.com',
provider => 'github',
}
Webhook Github Example - Authenticated
This is an example of using the webhook with authentication.
The git_webhook
type will use the api token to add the webhook to the "control" repo that contains your puppetfile. This is typically useful when you want to automate the addition of the webhook to the repo.
# Instead of running via mco, run r10k directly
class {'r10k::webhook::config':
use_mcollective => false,
}
# External webhooks often need authentication and ssl and authentication
# Change the url below if this is changed
class {'r10k::webhook':
ensure => true,
server => {
protected => true,
},
tls => {
enabled => true,
certificate => '/path/to/ssl/certificate',
key => '/path/to/ssl/key',
},
}
# Add webhook to control repository ( the repo where the Puppetfile lives )
#
# Resource git_webhook is provided by https://github.com/bjvrielink/abrader-gms/tree/fixup
git_webhook { 'web_post_receive_webhook' :
ensure => present,
webhook_url => 'https://puppet:puppet@hole.in.firewall:8088/payload',
token => hiera('github_api_token'),
project_name => 'organization/control',
server_url => 'https://api.github.com',
disable_ssl_verify => true,
provider => 'github',
}
# Add webhook to module repo if we are tracking branch in Puppetfile i.e.
# mod 'module_name',
# :git => 'http://github.com/organization/puppet-module_name',
# :branch => 'master'
# The module name is determined from the repo name , i.e. <puppet-><module_name>
# All characters with left and including any hyphen are removed i.e. <puppet->
#
# Resource git_webhook is provided by https://github.com/bjvrielink/abrader-gms/tree/fixup
git_webhook { 'web_post_receive_webhook_for_module' :
ensure => present,
webhook_url => 'https://puppet:puppet@hole.in.firewall:8088/module',
token => hiera('github_api_token'),
project_name => 'organization/puppet-module_name',
server_url => 'https://api.github.com',
disable_ssl_verify => true,
provider => 'github',
}
Webhook Bitbucket Example
This is an example of using the webhook with Atlassian Bitbucket (former Stash).
Requires the external hooks
addon by https://marketplace.atlassian.com/plugins/com.ngs.stash.externalhooks.external-hooks/server/overview
and a specific Bitbucket user/pass.
Remember to place the stash_mco.rb
on the bitbucket server an make it executable.
Enable the webhook over the repository settings External Async Post Receive Hook
:
- Executable: e.g.
/opt/atlassian/bitbucket-data/external-hooks/stash_mco.rb
(see hook_exe) - Positional parameters:
-t http://git.example.com:8088/payload
# Add deploy key
git_deploy_key { 'add_deploy_key_to_puppet_control':
ensure => present,
name => $facts['networking']['fqdn'],
path => '/root/.ssh/id_rsa.pub',
username => 'api',
password => 'pass',
project_name => 'project',
repo_name => 'puppet',
server_url => 'https://git.example.com',
provider => 'stash',
}
# Add webhook
git_webhook { 'web_post_receive_webhook' :
ensure => present,
webhook_url => 'https://puppet:puppet@hole.in.firewall:8088/module',
password => 'pass',
username => 'api',
project_name => 'project',
repo_name => 'puppet',
server_url => 'https://git.example.com',
provider => 'stash',
hook_exe => '/opt/atlassian/bitbucket-data/external-hooks/stash_mco.rb',
}
Webhook - remove webhook init script and config file.
For use when moving to Code Manager, or other solutions, and the webhook should be removed.
class {'r10k::webhook':
ensure => false,
}
Webhook Prefix Example
Prefixing the command is currently not supported in Webhook Go. This support is expected to be added with a later release.
Webhook FOSS support with MCollective
MCollective is currently unsupported by Webhook Go. This is expected to be added in a future release and documentation will be updated for that then.
Webhook Slack notifications
You can enable Slack notifications for the webhook. You will need a
Slack webhook URL and the slack-notifier
gem installed.
To get the Slack webhook URL you need to:
- Go to https://slack.com/apps/A0F7XDUAZ-incoming-webhooks.
- Choose your team, press
Configure
. - In configurations press
Add configuration
. - Choose channel, press
Add Incoming WebHooks integration
.
Then configure the webhook to add your Slack Webhook URL.
class { 'r10k::webhook':
. . .
chatops => {
enabled => true,
service => 'slack',
server_uri => 'http://slack.webhook/webhook', # mandatory for usage
channel => '#channel', # defaults to #default
user => 'r10k', # the username to use
auth_token => "SLACKAUTHTOKEN",
}
}
Webhook Rocket.Chat notifications
You can enable Rocket.Chat notifications for the webhook. You will need a
Rocket.Chat incoming webhook URL and the rocket-chat-notifier
gem installed.
To get the Rocket.Chat incoming webhook URL you need to:
- Go to your Rocket.Chat and then select
Administration-Integrations
. - Choose
New integration
. - Choose
Incoming WebHook
. In the webhook form configure:
Enabled
:True
.Name
: A name for your webhook.Post to Channel
: The channel to post to by default.
- Save changes with
Save Changes
bottom.
Then configure the webhook to add your Rocket.Chat Webhook URL.
class { 'r10k::webhook':
. . .
chatops => {
enabled => true,
service => 'rocketchat',
server_uri => '<your incoming webhook URL>',
user => 'username',
channel => '#channel',
auth_token => 'ROCKETCHATAUTHTOKEN',
}
}
Webhook Default Branch
The default branch of the controlrepo is commonly called production
. This value can be overridden if you use another default branch name, such as master
.
class { 'r10k::webhook':
ensure => true,
r10k => {
default_branch => 'master', # Optional. Defaults to 'production'
},
}
Triggering the webhook from curl
To aid in debugging, or to give you some hints as to how to trigger the webhook by unsupported systems, here's a curl command to trigger the webhook to deploy the 'production' environment:
curl --header "X-Gitlab-Event: Push Hook" -d '
{
"repository": {"name": "foo", "owner": {"login": "foo"}},
"ref": "production"
}' http://puppet-master.example:4000/api/v1/r10k/environment
If you are utilizing environment prefixes, you'll need to specify the full environment title (including the prefix) in the 'ref' parameter:
curl --header "X-Gitlab-Event: Push Hook" -d '
{
"repository": {"name": "bar", "owner": {"login": "foo"}},
"ref": "bar_production"
}' http://puppet-master.example:4000/api/v1/r10k/environment
Troubleshooting
If you're not sure whether your webhook setup works:
- Try to make a GET request to the
heartbeat
endpoint (e.g. http://puppet-master.example:8088/heartbeat). You should see a short JSON answer similar to{"status":"success","message":"running"}
. - Watch the webhook logfile at
/var/log/webhook/access.log
, and send requests (e.g. using curl). Example output if successful:
$ journalctl -f -u webhook-go.service
...
Jun 05 11:24:54 pop-os systemd[1]: Started Puppet Deployment API Server....
Docker
If you are building your image with the puppet, you need to prevent the webhook process from starting as a daemon.
The following is an example of declaring the webhook without a background mode
class { 'r10k::webhook':
ensure => false,
}
Ignore deploying some environments
Webhook Go does not support this yet, but will in the future.
Reference
Class: r10k
This is the main public class to be declared , handingly installation and configuration declarations
Parameters within r10k
:
remote
A string to be passed in as the source with a hardcode prefix of puppet
sources
A hash of all sources, this gets read out into the file as yaml. Must not be declared with remote
cachedir
A single string setting the r10k.yaml
configuration value of the same name
configfile
A path to the configuration file to manage. Be aware Puppet Enterprise 4.0 and higher may conflict if you manage /etc/puppetlabs/puppet/r10k.yaml
version
A value passed to the package resource for managing the gem version
modulepath
Deprecated: for older configfile environments configuration of modulepath in puppet.conf
manage_modulepath
Deprecated: declare a resource for managing modulepath
in Puppet.conf
manage_ruby_dependency
When using system ruby , options on how to declare
proxy
A string setting ther10k.yaml
configuration value of the same name
gem_source
An optional string specifying location to retrieve gem
pool_size
Integer defining how many threads should be spawn while updating modules. Only available for r10k >= 3.3.0.
r10k_basedir
This module requires the puppetlabs-ruby module. In the event that your environment already includes
the module with some customization, you can use the manage_ruby_dependency
parameter to adjust how this module expresses that requirement.
The supported values are include
,declare
, or ignore
. The values' behavior
is outlined below:
-
declare default This will explicitly declare the ruby module. Additional declarations of the ruby module will result in an inability to compile a catalog.
-
include This will simply include the ruby module. When combined with class ordering, this will permit the user to manage the instantiation of the ruby module elsewhere, potentially with non-standard parameter values.
-
ignore This will assume that ruby is handled via some other mechanism than a puppet module named
ruby
. It is left to the user to insure the requirement be met.
package_name
The name of the package to be installed via the provider
provider
The supported installation modes for this module
- bundle
- puppet_gem
- gem
install_options
Options to pass to the provider
declaration
mcollective
Install mcollective application and agents. This does NOT configure mcollective automatically
manage_configfile_symlink
Manage a symlink to the configuration file, for systems installed in weird file system configurations
git_settings
This is the git:
key in r10k, it accepts a hash that can be used to configure
rugged support.
$git_settings = {
'provider' => 'rugged',
'private_key' => '/root/.ssh/id_rsa',
}
class {'r10k':
remote => 'git@github.com:acidprime/puppet.git',
git_settings => $git_settings,
}
forge_settings
This is the forge:
key in r10k, it accepts a hash that contains settings for downloading modules from the Puppet Forge.
$forge_settings = {
'proxy' => 'https://proxy.example.com:3128',
'baseurl' => 'https://forgeapi.puppetlabs.com',
}
class {'r10k':
remote => 'git@github.com:acidprime/puppet.git',
forge_settings => $forge_settings,
}
deploy_settings
This is the deploy:
key in r10k, it accepts a hash that contains setting that control how r10k code deployments behave. Documentation for the settings can be found here.
$deploy_settings = {
'purge_levels' => ['puppetfile'],
}
class {'r10k':
remote => 'git@github.com:voxpupuli/puppet.git',
deploy_settings => $deploy_settings,
}
configfile_symlink
boolean if to manage symlink
include_prerun_command
Deprecated: Add prerun_command to puppet.conf to run r10k when the agent on the master runs.
Suggest instead declaring r10k::postrun_command
as that will run after the agent runs which prevents r10k from stopping configuration management of masters from occurring as it does with prerun_command
s
include_postrun_command
r10k::include_postrun_command: true
The concept here is that this is declared on the puppet master(s) that have been configured with r10k. This will cause r10k to synchronize after each puppet run. Any errors synchronizing will be logged to the standard puppet run.
Limitations
The 4.1.x release deprecates support for:
- Puppet 3
- Ruby 1.9.3
These items are planned for removal in v5.0.0.
Support
Please log tickets and issues at our Projects site
Development
Contributing
Modules on the Puppet Forge are open projects, and community contributions are essential for keeping them great. We can’t access the huge number of platforms and myriad of hardware, software, and deployment configurations that Puppet is intended to serve.
We want to keep it as easy as possible to contribute changes so that our modules work in your environment. There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things.
Please see CONTRIBUTING for more details.
Running tests
This project contains tests for rspec-puppet to verify functionality. For in-depth information please see their respective documentation, as well as CONTRIBUTING.
Quickstart:
gem install bundler
bundle install --without system_tests
bundle exec rake test
bundle exec rake lint
Check the .travis.yml for supported Operating System Versions
Reference
Table of Contents
Classes
Public Classes
r10k
: This class configures r10kr10k::install::bundle
: This class installs the r10k bundler10k::install::gem
: Install the r10k gem using system rubyr10k::install::puppet_gem
: This class links the r10k binary for Puppet FOSS 4.2 and upr10k::mcollective
: Install the r10k mcollective agentr10k::mcollective::application
: Install the r10k mcollective application to a clientr10k::params
: Reasonable defaults for all classesr10k::postrun_command
: This class will configure r10k to run as part of the masters agent runr10k::prerun_command
: This class will configure r10k to run as part of the masters agent runr10k::webhook
: install and configure the webhook-go package as local webhook receiver to trigger r10k runsr10k::webhook::config
: Class: r10k::webhook::configr10k::webhook::package
: Class: r10k::webhook::packager10k::webhook::service
: Class: r10k::webhook::service
Private Classes
r10k::config
: Set up the root r10k config file (/etc/r10k.yaml).r10k::install
: This class is used by the ruby or pe_ruby class
Data types
R10k::Webhook::Config
: webhook config typeR10k::Webhook::Config::Chatops
: webhook config chatops typeR10k::Webhook::Config::R10k
: webhook config r10k typeR10k::Webhook::Config::Server
: webhook config server typeR10k::Webhook::Config::Server::Tls
: webhook config server tls type
Tasks
deploy
: Trigger an r10k deployment.
Classes
r10k
This class configures r10k
Parameters
The following parameters are available in the r10k
class:
remote
configfile
version
puppet_master
modulepath
manage_modulepath
manage_ruby_dependency
r10k_basedir
package_name
provider
gentoo_keywords
install_options
mcollective
git_settings
deploy_settings
root_user
gem_source
root_group
include_prerun_command
include_postrun_command
puppetconf_path
cachedir
sources
postrun
manage_configfile_symlink
configfile_symlink
forge_settings
proxy
pool_size
ensure
remote
Data type: String[1]
Default value: $r10k::params::remote
configfile
Data type: Stdlib::Absolutepath
Default value: '/etc/puppetlabs/r10k/r10k.yaml'
version
Data type: String[1]
Default value: $r10k::params::version
puppet_master
Data type: Boolean
Default value: $r10k::params::puppet_master
modulepath
Data type: String[1]
Default value: $r10k::params::modulepath
manage_modulepath
Data type: Boolean
Default value: $r10k::params::manage_modulepath
manage_ruby_dependency
Data type: Enum['include','declare','ignore']
Default value: $r10k::params::manage_ruby_dependency
r10k_basedir
Data type: Stdlib::Absolutepath
Default value: $r10k::params::r10k_basedir
package_name
Data type: String[1]
Default value: $r10k::params::package_name
provider
Data type: String[1]
Default value: $r10k::params::provider
gentoo_keywords
Data type: String
Default value: ''
install_options
Data type: Variant[Array,String]
Default value: []
mcollective
Data type: Boolean
Default value: $r10k::params::mcollective
git_settings
Data type: Optional[Hash]
Default value: undef
deploy_settings
Data type: Hash
Default value: { 'generate_types' => true, 'exclude_spec' => true, }
root_user
Data type: String[1]
Default value: $r10k::params::root_user
gem_source
Data type: Optional[String[1]]
Default value: undef
root_group
Data type: String[1]
Default value: $r10k::params::root_group
include_prerun_command
Data type: Boolean
Default value: false
include_postrun_command
Data type: Boolean
Default value: false
puppetconf_path
Data type: Stdlib::Absolutepath
Default value: $r10k::params::puppetconf_path
cachedir
Data type: Stdlib::Absolutepath
Path to a directory to be used by r10k for caching data
Default value: "${facts['puppet_vardir']}/r10k"
sources
Data type: Optional[Hash]
Hash containing data sources to be used by r10k to create dynamic Puppet environments
Default value: undef
postrun
Data type: Optional[Array[String[1]]]
Array containing the parts of a system call Example: ['/usr/bin/curl', '-F', 'deploy=done', 'http://my-app.site/endpoint']
Default value: undef
manage_configfile_symlink
Data type: Boolean
determine if a symlink to the r10k config file is to be managed
Default value: false
configfile_symlink
Data type: Stdlib::Absolutepath
Location of symlink that points to configfile
Default value: '/etc/r10k.yaml'
forge_settings
Data type: Optional[Hash]
Hash containing settings for downloading modules from the Puppet Forge
Default value: undef
proxy
Data type: Optional[String[1]]
String containing proxy setting for r10k.yaml
Default value: undef
pool_size
Data type: Integer[1]
Integer defining how many threads should be spawn while updating modules
Default value: $facts['processors']['count']
ensure
Data type: Enum['absent','present']
if r10k should be installed or purged
Default value: 'present'
r10k::install::bundle
This class installs the r10k bundle
Parameters
The following parameters are available in the r10k::install::bundle
class:
revision
Data type: String[1]
Default value: 'master'
source
Data type: String[1]
Default value: 'https://github.com/adrienthebo/r10k.git'
r10k::install::gem
Install the r10k gem using system ruby
Parameters
The following parameters are available in the r10k::install::gem
class:
manage_ruby_dependency
Data type: String[1]
version
Data type: String[1]
R10k gem version
r10k::install::puppet_gem
This class links the r10k binary for Puppet FOSS 4.2 and up
r10k::mcollective
Install the r10k mcollective agent
Parameters
The following parameters are available in the r10k::mcollective
class:
ensure
Data type: String[1]
Default value: 'present'
server
Data type: Boolean
Default value: true
client
Data type: Boolean
Default value: true
http_proxy
Data type: String
Default value: ''
policies
Data type: Array
Default value: []
r10k::mcollective::application
Install the r10k mcollective application to a client
Parameters
The following parameters are available in the r10k::mcollective::application
class:
agent_name
Data type: Optional[String]
Default value: $r10k::params::mc_agent_name
app_name
Data type: Optional[String]
Default value: $r10k::params::mc_app_name
agent_ddl
Data type: Optional[String]
Default value: $r10k::params::mc_agent_ddl_name
agent_path
Data type: Optional[String]
Default value: $r10k::params::mc_agent_path
app_path
Data type: Optional[String]
Default value: $r10k::params::mc_application_path
mc_service
Data type: Optional[String]
Default value: $r10k::params::mc_service_name
r10k::params
Reasonable defaults for all classes
r10k::postrun_command
This class will configure r10k to run as part of the masters agent run
Parameters
The following parameters are available in the r10k::postrun_command
class:
command
Data type: String[1]
Default value: $r10k::params::pre_postrun_command
ensure
Data type: Enum['present', 'absent']
Default value: 'present'
r10k::prerun_command
This class will configure r10k to run as part of the masters agent run
Parameters
The following parameters are available in the r10k::prerun_command
class:
command
Data type: String[1]
Default value: $r10k::params::pre_postrun_command
ensure
Data type: Enum['present', 'absent']
Default value: 'present'
r10k::webhook
install and configure the webhook-go package as local webhook receiver to trigger r10k runs
Parameters
The following parameters are available in the r10k::webhook
class:
install_method
ensure
version
service_ensure
service_enabled
config_ensure
config_path
chatops
tls
server
r10k
config
install_method
Data type: Enum['package', 'repo', 'none']
how the package should be installed
Default value: 'package'
ensure
Data type: Boolean
Default value: false
version
Data type: String
Default value: '2.2.0'
service_ensure
Data type:
Variant[
Enum['running', 'stopped'],
Boolean
]
Default value: 'running'
service_enabled
Data type: Boolean
Default value: true
config_ensure
Data type: String
Default value: 'file'
config_path
Data type: String
Default value: '/etc/voxpupuli/webhook.yml'
chatops
Data type: R10k::Webhook::Config::ChatOps
Default value:
{
enabled => false,
service => undef,
channel => undef,
user => undef,
auth_token => undef,
server_uri => undef,
}
tls
Data type: R10k::Webhook::Config::Server::Tls
Default value:
{
enabled => false,
certificate => undef,
key => undef,
}
server
Data type: R10k::Webhook::Config::Server
Default value:
{
protected => true,
user => 'puppet',
password => 'puppet',
port => 4000,
tls => $tls,
}
r10k
Data type: R10k::Webhook::Config::R10k
Default value:
{
command_path => '/opt/puppetlabs/puppet/bin/r10k',
config_path => '/etc/puppetlabs/r10k/r10k.yaml',
default_branch => 'production',
prefix => undef,
allow_uppercase => false,
verbose => true,
deploy_modules => true,
generate_types => true,
}
config
Data type: R10k::Webhook::Config
Default value:
{
server => $server,
chatops => $chatops,
r10k => $r10k,
}
r10k::webhook::config
Class: r10k::webhook::config
r10k::webhook::package
Class: r10k::webhook::package
r10k::webhook::service
Class: r10k::webhook::service
Data types
R10k::Webhook::Config
webhook config type
Alias of
Struct[{
server => Optional[R10k::Webhook::Config::Server],
chatops => Optional[R10k::Webhook::Config::Chatops],
r10k => Optional[R10k::Webhook::Config::R10k],
}]
R10k::Webhook::Config::Chatops
webhook config chatops type
Alias of
Struct[{
enabled => Boolean,
service => Optional[Enum['slack', 'rocketchat']],
channel => Optional[String[1]],
user => Optional[String[1]],
auth_token => Optional[String[1]],
server_uri => Optional[String[1]],
}]
R10k::Webhook::Config::R10k
webhook config r10k type
Alias of
Struct[{
command_path => Optional[Stdlib::Absolutepath],
config_path => Optional[Stdlib::Absolutepath],
default_branch => Optional[String[1]],
prefix => Optional[String[1]],
allow_uppercase => Optional[Boolean],
verbose => Optional[Boolean],
deploy_modules => Optional[Boolean],
generate_types => Optional[Boolean],
}]
R10k::Webhook::Config::Server
webhook config server type
Alias of
Struct[{
protected => Boolean,
user => Optional[String[1]],
password => Optional[String[1]],
port => Optional[Stdlib::Port],
tls => Optional[R10k::Webhook::Config::Server::Tls],
}]
R10k::Webhook::Config::Server::Tls
webhook config server tls type
Alias of
Struct[{
enabled => Boolean,
certificate => Optional[Stdlib::Absolutepath],
key => Optional[Stdlib::Absolutepath],
}]
Tasks
deploy
Trigger an r10k deployment.
Supports noop? false
Parameters
environment
Data type: Optional[Pattern[/\A[a-zA-Z0-9_]+\Z/]]
The environment to deploy.
environments
Data type: Optional[Pattern[/\A[a-zA-Z0-9_,]+\Z/]]
A comma separated list of environments to deploy. Takes precedence over environment
.
module
Data type: Optional[Pattern[/\A[a-z0-9_]+\Z/]]
A module to deploy across all environments.
modules
Data type: Optional[Pattern[/\A[a-z0-9_,]+\Z/]]
A comma separated list of modules to deploy. Takes precedence over module
.
What are tasks?
Modules can contain tasks that take action outside of a desired state managed by Puppet. It’s perfect for troubleshooting or deploying one-off changes, distributing scripts to run across your infrastructure, or automating changes that need to happen in a particular order as part of an application deployment.
Tasks in this module release
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v13.0.0 (2024-04-26)
Breaking changes:
Implemented enhancements:
- Add OracleLinux 8 and 9 support #650 (zilchms)
- Add RHEL 9 support #649 (zilchms)
- Add Ubuntu 20.04 and 22.04 support #647 (zilchms)
- Add documentation stubs #646 (zilchms)
Fixed bugs:
- Use File.exist? instead of File.exists? #645 (tuxmea)
- restore support for EoL Ruby / Puppet 7; enable acceptance tests #642 (zilchms)
- Remove legacy top-scope syntax #639 (smortex)
- Update ordering on webhook and docu #638 (tuxmea)
Merged pull requests:
- puppet/systemd: Allow 7.x #656 (bastelfreak)
v12.2.0 (2023-10-05)
Implemented enhancements:
- webhook: Update default version 2.1.0->2.2.0 #631 (bastelfreak)
- Implement acceptance tests for webhook-go #627 (bastelfreak)
- webhook: Allow people to host the repo on their own #626 (bastelfreak)
Fixed bugs:
- webhook: Fix default parameter values and add unit tests #630 (bastelfreak)
Merged pull requests:
- replace to_yaml() with stdlib::to_yaml() #632 (bastelfreak)
- puppet/systemd: Allow 6.x #629 (bastelfreak)
- webhook-go: Move static data from params to webhook class #628 (bastelfreak)
v12.1.1 (2023-08-12)
Merged pull requests:
- puppetlabs/stdlib: require 9.x #620 (bastelfreak)
v12.1.0 (2023-08-09)
Implemented enhancements:
- Implement global $ensure param to purge r10k #618 (bastelfreak)
v12.0.0 (2023-08-07)
Breaking changes:
- install.pp: Make class private; Update OpenBSD package name ruby22-r10k->ruby31-r10k #615 (bastelfreak)
- replace r10k template with native puppet code #613 (bastelfreak)
- r10k::config: don't inherit params class #611 (bastelfreak)
- pre_postrun_command: replace deprecated
--puppetfile
with--modules
#610 (bastelfreak) - deploy settings: generate types by default and dont deploy spec dir #609 (bastelfreak)
Implemented enhancements:
- move static data to init.pp #616 (bastelfreak)
- Add Rocky/AlmaLinux support #614 (bastelfreak)
- Add Puppet 8 support #608 (bastelfreak)
Fixed bugs:
Merged pull requests:
- config.pp: move all defaults to params.pp #612 (bastelfreak)
v11.0.1 (2023-06-08)
Merged pull requests:
- update webhook code with some basic fixes #603 (dhollinger)
v11.0.0 (2023-06-05)
Breaking changes:
- Delete legacy webhook #595 (bastelfreak)
- Remove old webhook code in preparation for webhook-go being added #594 (dhollinger)
- Drop Puppet 6 support #592 (bastelfreak)
- modulesync 5.5.0; Drop EoL Ubuntu 16.04 #584 (bastelfreak)
Merged pull requests:
- puppetlabs/vcsrepo: Allow 6.x #602 (bastelfreak)
- puppet/systemd: Allow 5.x #601 (bastelfreak)
- puppetlabs/inifile: Allow 6.x #600 (bastelfreak)
- puppetlabs/stdlib: Allow 9.x #599 (bastelfreak)
- Release 11.0.0 #598 (dhollinger)
- README: Don't use top level facts in examples #596 (Geod24)
- Change README.md dependency on (abandoned) abrader/gms to bjvrielink/gms #593 (bschonec)
- update module to work with webhook-go #590 (dhollinger)
v10.3.0 (2023-01-27)
Implemented enhancements:
- (Feature) Should be installable with the MCollective module #46
- bump puppet/systemd to \< 5.0.0 #587 (jhoblitt)
- Add RHEL8 support. #582 (marcteale)
- pool_size: default to amount of CPU cores #579 (bastelfreak)
Fixed bugs:
v10.2.0 (2022-06-20)
Implemented enhancements:
- Add Gentoo support #576 (bastelfreak)
- Allow defining mcollective policies on the r10k agent #572 (optiz0r)
Closed issues:
- Docs wrong for mcollective "deploy" command? #573
- Enhancement Request: Support ignore_branch_prefixes in config hash / seperate #556
Merged pull requests:
- Arch Linux: Disable acceptance tests for webhook #577 (bastelfreak)
- Fix mco r10k deploy command in docs to match actual behaviour #574 (optiz0r)
- puppet-lint: fix top_scope_facts warnings #569 (bastelfreak)
- Add additional curl example for environment prefixes #508 (DLeich)
v10.1.1 (2021-08-27)
Fixed bugs:
- Manage unit file via systemd::unit_file #566 (bastelfreak)
- Remove explicit StandardOutput from webhook.service #564 (kenyon)
Merged pull requests:
v10.1.0 (2021-08-03)
Implemented enhancements:
- Arch Linux: Install r10k as system package #561 (bastelfreak)
Merged pull requests:
- cleanup .fixtures.yml #557 (bastelfreak)
v10.0.0 (2021-06-21)
Breaking changes:
- Migrate r10k-mcollective to choria #431
- make puppetlabs/ruby optional #553 (bastelfreak)
- Drop Puppet 5 support; require Puppet 6.1.0 or newer #549 (bastelfreak)
- Update r10k mcollective agent to work with Choria #548 (treydock)
- fix: avoid using deprecated gem options #545 (johanfleury)
- Drop EOL EL6 support #543 (ekohl)
Implemented enhancements:
- Enable Puppet 7 support #550 (bastelfreak)
- webhook config: allow access_log to be nil by using special value "stderr" #547 (kenyon)
Closed issues:
- CLI arguments --no-ri and --no-rdoc have been deprecated since Ruby 2.6.0 #544
Merged pull requests:
- puppetlabs/vcsrepo: Allow 5.x #558 (bastelfreak)
- Use a more logical example for basedir in the example code. #554 (zipkid)
- stdlib, inifile, vcsrepo: allow latest versions #552 (bastelfreak)
- Add support for FreeBSD package provider #546 (zachfi)
- Added bitbucket webhook support for pull request event #540 (magarvo)
v9.0.0 (2020-08-15)
Breaking changes:
Implemented enhancements:
Closed issues:
- Remove dependence on old puppetlabs-git module #530
- webhook: add support for verifying X-Gitlab-Token #528
Merged pull requests:
- modulesync 3.0.0 & puppet-lint updates #533 (bastelfreak)
v8.3.0 (2020-04-30)
Implemented enhancements:
Closed issues:
- vcsrepo is outdated - latest 6.x.x, requires \< 3.0.0 #525
Merged pull requests:
v8.2.0 (2020-04-06)
Implemented enhancements:
- Add support for package source attribute #517 (prolixalias)
v8.1.0 (2020-04-03)
Implemented enhancements:
- Change webhook systemd service type to
simple
#513 (alexjfisher)
Closed issues:
- webhook does not support the use of intermediate certificates #510
- Travis CI tests are currently failing on centos7-x64 #509
- Allow IPv6 #490
- generate types feature doesn't work under unprivileged user id #412
- Let /payload webhook deploy to all environments #391
- dependency on puppetlabs/gcc which is not v1 #326
Merged pull requests:
- Remove
anchor
resource fromr10k::install::gem
#519 (alexjfisher) - Use full certificate chain for webhook #515 (mcb30)
- Fix webhook deployment on IPv6 machines #514 (mcb30)
- fix webhook generate type functionailty for non-root user #512 (vchepkov)
- allow puppetlabs/inifile 4.x #505 (bastelfreak)
v8.0.0 (2019-10-28)
Breaking changes:
- Don't manage installation of
git
#502 (Andor) - modulesync 2.9.0 & drop Ubuntu 14.04, add 16.04/18.04 #501 (bastelfreak)
Implemented enhancements:
- implement Archlinux support #503 (bastelfreak)
- Implement pool_size parameter #492 (baurmatt)
- Allow uppercase characters in environment names #491 (nmaludy)
Fixed bugs:
Closed issues:
- rotated logfiles should not have executable bit set #499
- r10k, invoked by r10k::webhook, does not update the module code #496
Merged pull requests:
- r10k webhook logfiles should not be executable #500 (tuxmea)
- Add slack_icon docs to README #497 (0x6d617474)
- webhook: use the systemd service by default #494 (kenyon)
v7.0.0 (2019-06-18)
Breaking changes:
- modulesync 2.7.0 and drop puppet 4 #482 (bastelfreak)
Implemented enhancements:
- (Feature) webhook should support github secrets #102
- Add support for proxy settings #487 (dhoppe)
- Adding BitBucket Server secret support. #464 (venushka)
Closed issues:
- webhook swallowing r10k error messages #472
- support the "proxy" general setting #468
- (Feature) webhook should support BitBucket server's secrets #463
- Using exec in run_command replaces process and skips notify_* calls #441
- Acceptance tests failing with permissions error: #346
- failing beaker tests #310
Merged pull requests:
- Wrap slack_icon with colons #495 (0x6d617474)
- Remove support for providers yum, zypper #489 (dhoppe)
- Allow
puppetlabs/stdlib
6.x #486 (alexjfisher) - Webhook improvements #485 (0x6d617474)
- Convert mocha to rspec-mocks #484 (dhoppe)
- Allow puppetlabs/inifile 3.x #483 (dhoppe)
- Unify docs #481 (DavidS)
- Remove Gentoo/portage related code as is it not supported. #480 (ghoneycutt)
- Acceptance tests run requests in parallel commented #470 (Dan33l)
v6.8.0 (2018-12-23)
Implemented enhancements:
- Update r10k path in example
prefix_command.rb
#467 (alexjfisher) - Identify branch name from BitBucket server native webhook payload #462 (venushka)
Closed issues:
- don't pin sinatra and webrick gems anymore #471
Merged pull requests:
- set webrick and sinatra versions to 'installed' #475 (kenyon)
- enable acceptance tests #469 (Dan33l)
- Remove gcc and make dependencies #465 (Rudikza)
v6.7.0 (2018-10-13)
Implemented enhancements:
Fixed bugs:
Merged pull requests:
- allow puppet 6.x #454 (bastelfreak)
- allow puppetlabs/stdlib 5.x #450 (bastelfreak)
v6.6.1 (2018-07-29)
Fixed bugs:
Closed issues:
- Support BitBucket server's new webhook #436
v6.6.0 (2018-07-05)
Implemented enhancements:
- provide proper default for $r10k_basedir #440 (bastelfreak)
- wrap is_pe fact in fact() method to fail safely if it isn't present #438 (bastelfreak)
- make cachedir optional #437 (Andor)
Closed issues:
- Newest r10k breaks erb parsing #420
Merged pull requests:
- Remove docker nodesets #434 (bastelfreak)
- drop EOL OSs; fix puppet version range #433 (bastelfreak)
v6.5.1 (2018-05-01)
Closed issues:
- Syntax Error in voxpupuli/puppet-r10k/templates/webhook.bin.erb, line 119 #427
Merged pull requests:
v6.5.0 (2018-04-25)
Fixed bugs:
Closed issues:
- undefined method `to_h' in r10k.yaml.erb #421
Merged pull requests:
- Release 6.5.0 #426 (dhollinger)
- Remove Open3 and move process forks #425 (dhollinger)
- Fixing compatibility with puppetserver/jruby. #424 (dforste)
- Minor syntax update for deploying individual environment. #423 (bschonec)
- Add supports for rocketchat #413 (amateo)
v6.4.0 (2018-03-28)
Implemented enhancements:
Fixed bugs:
Closed issues:
- r10k deploy not working with a minimal Puppetfile #409
- Document bitbucket / stash config / hook_exe behavior #383
Merged pull requests:
- bump puppet to latest supported version 4.10.0 #417 (bastelfreak)
- Propose small spelling changes #408 (jeis2497052)
- Restart mcollective if any of the managed files change #407 (treydock)
- Implement locking for mcollective r10k to avoid multiple instances running in parallel #406 (treydock)
- Add LSB tags to the webhook init script. #405 (dickp)
- Add deploy task #400 (binford2k)
- add documentation for bitbucket webhook #384 (khaefeli)
v6.3.2 (2018-01-09)
Closed issues:
- Request: Move webhook into a gem #399
Merged pull requests:
v6.3.1 (2017-12-07)
Fixed bugs:
- syntax errors when starting the webhook #394
- Fix typo in webhook #396 (alexjfisher)
v6.3.0 (2017-11-26)
Closed issues:
- /usr/local/bin/webhook PATH variable should include /usr/local/bundle/bin #373
Merged pull requests:
- docs updates, remove top level CONTRIBUTING.md #390 (wyardley)
- Generate types option #389 (dhollinger)
v6.2.0 (2017-10-11)
Implemented enhancements:
- Bump upper limit of the vcsrepo and inifile dependencies #386 (dhollinger)
Merged pull requests:
v6.1.0 (2017-06-24)
Closed issues:
- Clean up the log output when deleting a branch #374
Merged pull requests:
- Quote the exact JSON response for
heartbeat
#379 (bittner) - Better handling for the default branch #376 (rnelson0)
- Add Troubleshooting section (logfile, heartbeat) to README #375 (bittner)
- Fix github license detection #372 (alexjfisher)
v6.0.0 (2017-05-10)
Breaking changes:
- BREAKING: Fix webhook installation by pinning sinatra gem #366 (alexjfisher)
Implemented enhancements:
- Add slack_proxy_url parameter #368 (alexjfisher)
Closed issues:
- Support using webhook slack notifier through a proxy #367
- webhook gems aren't installable #365
- cachedir setting is not idempotent #351
- webhook fails to auto-start on Systemd based systems #339
Merged pull requests:
- Webhook: ability to pass extra arguments to mco #363 (nike38rus)
- use stdlib puppet facts for configuration #352 (vchepkov)
- Added /heartbeat url endpoint to webhook #272 (thebaron)
v5.0.2 (2017-04-07)
Closed issues:
- Webhook not compatible with Puppet 4.10.0 #359
Merged pull requests:
- Add check to fix the ruby path on puppet 4.10.0 #360 (dhollinger)
- Webhook: ignore deploying some environments #355 (nike38rus)
v5.0.1 (2017-04-06)
Closed issues:
- Migrate r10k module to Vox Pupuli #290
Merged pull requests:
- puppet-lint: fix arrow_on_right_operand_line #357 (bastelfreak)
- Create sanitize_input helper method for strings sent to run_command method. #356 (xraystyle)
- Use styleguide compliant syntax for sshkey example. #353 (kallies)
- Fix webhook slack_username parameter handling #350 (alexbrett)
- Webhook Background mode #349 (luckyraul)
v5.0.0 (2017-03-07)
Closed issues:
- r10k.yaml placement is incorrect #342
Merged pull requests:
- r10k.yaml contents indentation is incorrect #345 (Kotty666)
- Update yaml location for >PE3 #343 (rnelson0)
- replace all validate functions with datatypes #341 (bastelfreak)
- Cleanup webhook use case notes; specifically PE/FOSS split. #338 (rnelson0)
- Remove support for Puppet 3 and Ruby \<2.0.0 #321 (rnelson0)
- Ensure webhook run folder exists on redhat systemd environments #283 (luisfdez)
v4.2.0 (2017-02-12)
Closed issues:
- Add support for changing deploy settings #332
- Document breaking changes in CHANGELOG #306
- Status 42, OK, but it doesn't completely work #261
Merged pull requests:
- Added new 'deploy_settings' information #334 (triforce)
- Add support for changing the 'deploy' settings in the r10k.yaml configuration file #333 (triforce)
- Added Slack webhook #331 (jamtur01)
- mcollective plugin dir has changed for foss puppet 4 #330 (attachmentgenie)
- Better document soft dependency abrader/gms #327 (rnelson0)
v4.1.0 (2017-01-06)
Closed issues:
- Conflict between r10k subclasses and pe_r10k due to
require r10k
in subclasses #323 - Re-visit hard-coded version - 1.5.1 #284
- (maint) Remove ruby 1.8.7 support from the module #231
Merged pull requests:
- (GH323) Better parameterization of root user/group from #279 #324 (rnelson0)
- Fix rubocop failures from #268 #322 (rnelson0)
- Bump minimum version dependencies (for Puppet 4) #318 (juniorsysadmin)
- Bump puppet minimum version_requirement to 3.8.7 #315 (juniorsysadmin)
- [284] Replace hard-coded version 1.5.1 with installed #308 (rnelson0)
- use puppet/make instead of deprecated croddy/make #307 (croddy)
- Lockfile to mitigate r10k race condition. #268 (binford2k)
v4.0.2 (2016-11-20)
v4.0.1 (2016-11-20)
Merged pull requests:
v4.0.0 (2016-11-20)
Closed issues:
- 'require git' appears to be unnecessary #286
- Webhook cannot do new puppet module install #280
- mcollective agent unable to find r10k binary #275
- MCollective r10k only syncs git based modules #273
- images in README.md broken #263
Merged pull requests:
- Rename CHANGELOG.md #301 (rnelson0)
- Fixes Puppet 4 path for webhook #295 (andrewwippler)
- Update config_version.sh #291 (LinguineCode)
- Fix testing #288 (ghoneycutt)
- Duplicate certpath key #287 (LinguineCode)
- unbreak on OS where root group != 'root' #279 (buzzdeee)
- Add support for custom permissions and ownership of webhooks.yaml #278 (elconas)
- add curl example to readme #274 (jessereynolds)
- fix mcollective image #264 (mmckinst)
- Add GitHub signature #262 (ayohrling)
v3.2.0 (2015-12-16)
Implemented enhancements:
- (feature) Add forge_settings param from pe_r10k #244
Closed issues:
- Agent activation fails on mcollective 2.8.6 (open source puppet 4.2) #254
- Mcollective plugins_dir is incorrect for FOSS Puppet 4 #245
Merged pull requests:
- Support for TFS/Visual Studio Git #259 (jpadams)
- Add option to lowercase environment names #256 (binford2k)
- adding server_software option to obscure the server software in use #253 (uphillian)
- postrun array requires spaces between elements #252 (mpeter)
- Grab the correct field for repo username #251 (binford2k)
- Handle tagged release events #250 (binford2k)
- configure forge settings with config class #249 (juame)
- Align webhook prefix command behavior with r10k behavior #248 (stepanstipl)
- Log when r10k not found in PATH #247 (joshbeard)
- update plugins_dir for FOSS puppet #246 (velocity303)
- create the /etc/puppetlabs/r10k directory #242 (mmckinst)
- Add single request concurrency option in r10k webhook #240 (pdaukintis)
v3.1.1 (2015-08-12)
Implemented enhancements:
- (Feature) Webhook: Add timestamp to mco_output.log #215
Fixed bugs:
- stderr of the which command shows during Puppet runs on agent nodes #241
v3.1.0 (2015-08-10)
Merged pull requests:
- Fix typo #238 (mcanevet)
- Automatically calculate some prefixes #236 (binford2k)
- Add the ability to respond only to certain events #235 (binford2k)
- Let rb scripts resolve what ruby to use themselves #233 (attachmentgenie)
- Making r10k webhook 2015.x compatible #229 (WhatsARanjit)
v2.8.4 (2015-08-03)
v3.0.0 (2015-07-31)
Implemented enhancements:
- [Feature] Support BitBucket Pull-merge in Webhook (or other git services with non-standard webhooks) #192
- Added support for BitBucket merge hooks #193 (ayohrling)
Closed issues:
- r10k and Webhook install using system ruby on CentOS 6 using Puppet 4.2.0 from "Puppet Collection 1" repo. #220
- Feature Request: add a r10k postrun hook for directory environment cache invalidation #211
- Feature Request: custom fact location of r10k binary #210
- webhook.yaml recreated on every puppet run #209
- Permissions for environments created by the webhook are incorrect #191
- move r10k.yaml to /etc/puppetlabs/r10k/r10k.yaml #190
- Webhook issues for init service without hasstatus=> false #188
- puppetconf_path is incorrect for puppet4 #187
- use of ::pe_version fails puppet run when strict_variables is enabled on foss puppet #160
Merged pull requests:
- Mco plugin directory is corrected #230 (WhatsARanjit)
- OpenBSD 5.8 switches default ruby version to 2.2, therefore #228 (buzzdeee)
- Added support for BitBucket push webhooks. #227 (dharmabruce)
- Moved r10k file and basedir #226 (WhatsARanjit)
- Provider for 2015.x uses puppet_gem instead of pe_gem #225 (WhatsARanjit)
- Puppet 4 Changes #224 (acidprime)
- Add a custom fact 'r10k_path' #222 (poikilotherm)
v2.8.3 (2015-07-17)
Implemented enhancements:
- [Bug] Webhook does not support Ping event from GitHub #89
Closed issues:
- hiera_eyaml on pe 3.7+ is broken. #216
- webhook::package inclusion in r10k::webhook class #213
- systemd issues on RHEL7 #208
- systemd doesn't detect webhook as running #207
Merged pull requests:
- (METHOD-401) Fix Webhook Service on EL7 #218 (jveski)
- Changes in r10k::webhook class #214 (pdaukintis)
- Add EnvironmentFile line as optional #206 (brandonweeks)
v2.8.2 (2015-06-26)
v2.8.1 (2015-06-24)
Implemented enhancements:
Closed issues:
- NoMethodError when GitHub send webhook 'ping' #200
- EnvironmentFile removed from webhook unit file #197
- Webhook returns status 200 even if deploy fails #195
- webhook script should write a pidfile #171
- Change git_ssl_verify parameter name #165
Merged pull requests:
- R10k/issues/200 #201 (brandonweeks)
- Return http 500 instead of http 200 on error #199 (brandonweeks)
- Restore EnvironmentFile line as optional #198 (brandonweeks)
- 188 - Webhook segfault on status #194 (ayohrling)
- add puppet_gem provider #186 (mmckinst)
- Added webhook_group parameter lost in 0da328831ecd49c2671017e16d614dbdc1842b7c #185 (vchepkov)
- Change the way the webhook logs the r10k deploy command #184 (tampakrap)
- Include the r10k::webhook::config class in r10k::webhook #183 (tampakrap)
- improve the webhook systemd unit file #182 (tampakrap)
- Updates in the webhook config #181 (tampakrap)
- Conditionally install the webhook packages #180 (tampakrap)
- Add SUSE support in the webhook init file #179 (tampakrap)
- Remove the hardcoded hasstatus => false from the webhook service #178 (tampakrap)
- Move the $webhook::{user,group} definition to params.pp #177 (tampakrap)
- Use the webhook's systemd service file for openSUSE >= 12.1 and SLE12 #176 (tampakrap)
- webhook: include mcollective optionally #175 (tampakrap)
- Fix for #165 #174 (petems)
- Actually run as non-root, --user is for matching not chuid. #173 (robbat2)
- Gentoo & Pidfile/Init fixes #172 (robbat2)
- Fix non-ssl, abilliy to customize templates, and run with less privileges (but call r10k/mco via sudo) #170 (robbat2)
- Update stash_mco.rb #169 (rdrgmnzs)
- Fix a few typos. #167 (gabe-sky)
- Add support for OpenBSD, some noteworthy points to mention: #163 (buzzdeee)
- add logic to prevent issue with pe_version on foss puppet with strict_variables enabled #161 (smithtrevor)
v2.8.0 (2015-05-12)
Closed issues:
- Webhook does not install properly in PE 3.7 #164
Merged pull requests:
v2.7.4 (2015-05-08)
Closed issues:
- Webhook: Invalid yaml and unstartable service with FOSS #162
Merged pull requests:
- (162) Revert to original webhook.yaml.erb contents #166 (rnelson0)
- Update r10k gem version for v2.7.x module version #159 (aharden)
v2.7.3 (2015-04-22)
v2.7.2 (2015-04-21)
Closed issues:
- Gem install has the space problem regressed. #155
v2.7.1 (2015-04-20)
Implemented enhancements:
- /var/log/webhook permissions not managed properly #144
Fixed bugs:
- Sinatra gem required for PE webhook? #154
Merged pull requests:
v2.7.0 (2015-04-08)
Implemented enhancements:
- [enhancement] mcollective agent as non-root #135
Fixed bugs:
Merged pull requests:
- 3.x #148 (acidprime)
- fix for /var/run being mounted on tmpfs in ubuntu 14.04 #147 (spidersddd)
- Add commas in README example #143 (cmurphy)
- support for 'user' argument to su to another user when executing git and R10K #142 (GeoffWilliams)
v2.6.5 (2015-03-18)
Fixed bugs:
- web hook does not work for non-mco install #139
Closed issues:
- Add Gitlab support (or add Gitlab documentation) #145
v2.6.4 (2015-02-26)
Fixed bugs:
- puppet enterprise 3.7.0 webhook (no mcollective) ordering problem #138
- pre_commit ruby script fails puppet-lint if you are in the wrong working directory #130
- webhook does not normalize branch name #115
v2.6.3 (2015-02-24)
Merged pull requests:
v2.6.2 (2015-02-19)
Fixed bugs:
- webhook module tries to start up before the mcollective cert is installed #132
Merged pull requests:
- issue #132 making peadmin-cert.pem execute before webhook init script #133 (harrytford)
- Support puppet-lint v1 #131 (ghoneycutt)
- Travis-ci to use faster container based systems #129 (ghoneycutt)
- Support Puppet v3.7.x #128 (ghoneycutt)
v2.6.1 (2015-02-13)
Merged pull requests:
v2.6.0 (2015-02-11)
Merged pull requests:
- Use 0.0.0.0 as default webhook bind address #124 (elyscape)
- Added bind_address option to webhook.yaml #123 (WhatsARanjit)
- Use zypper as default provider for openSUSE #122 (tampakrap)
- added metadata.json file for puppet versions 3.6 and older #121 (vchepkov)
- Update webhook.pp - adjusted peadmin-cert.pem #120 (aharden)
v2.5.4 (2015-02-03)
Closed issues:
- mco doesn't deploy modules when using forge functionality of Puppetfile #65
v2.5.3 (2015-01-29)
Closed issues:
- Dependency disappeared from forge. #116
- Ubuntu 14.04 webhook init fails #105
- r10k::webhook::config provides support for changing config file path, but the webhook script has this hardcoded #90
Merged pull requests:
- Remove +x permissions from peadmin-cert.pem #119 (elyscape)
- 105 updated webhook.ini.erb for ubuntu support #118 (MarsuperMammal)
v2.5.2 (2015-01-16)
Closed issues:
Merged pull requests:
- depend on croddy/make instead of mhuffnagle/make #117 (croddy)
- support strict_variables = true #114 (jlambert121)
v2.5.1 (2014-12-17)
v2.5.0 (2014-12-17)
Closed issues:
- PE 3.7.0 breaks webhook, peadmin cert name changed #110
- r10k 1.4.0 has been released #106
- Missing dependency on webhook after upgrade to PE 3.7.0 #104
- webhook should support r10k deploy module foo end point #101
Merged pull requests:
v2.4.4 (2014-12-15)
Closed issues:
Merged pull requests:
- Handle branch names containing slashes #109 (elyscape)
- prevent potential leakage of Default {} resources #107 (igalic)
- Documentation fixes #103 (elyscape)
v2.4.3 (2014-11-22)
Closed issues:
- Versions and the Puppet Forge #100
v2.4.2 (2014-11-21)
v2.4.1 (2014-11-21)
v2.4.0 (2014-11-21)
Closed issues:
- r10k 1.3.5 has been released #98
v2.3.4 (2014-11-20)
Closed issues:
- Webhook service does not start at boot #94
- Webhook service is not refreshed when config file changes #93
Merged pull requests:
v2.3.3 (2014-11-20)
Closed issues:
- Add release tag for 2.3.1 #92
Merged pull requests:
v2.3.2 (2014-11-20)
Merged pull requests:
v2.3.1 (2014-11-11)
Closed issues:
pe_gem
install of the r10k gem is wonked #87- mco r10k sync leave environment in a broken state #77
- Please cut new release #76
- Remove technology stack dependencies from installation process #66
- License #53
- Dependency on puppetlabs-ruby constrains use #49
Merged pull requests:
- Change install_options to undef #88 (binford2k)
- Fix tests for manage_ruby_dependency => 'include' #86 (gsarjeant)
- Allow for non-linux #83 (zachfi)
- Update CHANGELOG #82 (ghoneycutt)
- bumped version 1.3.4 #81 (kennyg)
v2.3.0 (2014-09-15)
Closed issues:
Merged pull requests:
- Stash webhook helper #78 (adamcrews)
- Allow prefixing to be optional #75 (trlinkin)
- Fixes #72 #73 (robruma)
- provide a knob to flexibly manage the ruby requirement #67 (wolfspyre)
v2.2.8 (2014-08-28)
Closed issues:
- r10k::include_prerun_command doesn't apply changes during the current run #69
- breaking master when I apply r10k config #64
- update params.pp to the latest r10k? #60
- Missing dependency on service mcollective #39
- Deploy single environment with Puppetfile #21
Merged pull requests:
- Fix minor lint issues #71 (adamcrews)
- change webhook exec to execute the command built previously #70 (k-f)
- Adding support for application/x-www-form-urlencoded content type webhooks #68 (robruma)
- Fix default postrun_command #63 (joshbeard)
v2.2.7 (2014-07-16)
v2.2.6 (2014-07-16)
v2.2.5 (2014-07-16)
Closed issues:
- Deploy single environment and prerun_command #52
Merged pull requests:
v2.2.4 (2014-07-07)
v2.2.3 (2014-07-07)
v2.2.2 (2014-07-07)
Closed issues:
- r10k::webhook Service resource pattern is too loose #54
- install fails on PE 3.2.2 due to Puppet Module Tool Bug #43
Merged pull requests:
- Removed symlinked r10k fixture/modules directory. #56 (dreilly1982)
v2.2.1 (2014-06-04)
v2.1.2 (2014-06-04)
Merged pull requests:
- Stop quoting all configuration options so that prefix is not always on #51 (ghoneycutt)
v2.1.1 (2014-06-03)
v2.1.0 (2014-06-03)
Closed issues:
- rubygems-update makes r10k non idempotent on fresh install #37
- r10k.yaml is rebuilt (md5sum differs) every Puppet run on ruby 1.8.7 #25
Merged pull requests:
- Attempted fix for issue#25 #44 (tfhartmann)
v2.0.0 (2014-06-03)
Closed issues:
Merged pull requests:
- Support Puppet v3.6.0 #50 (ghoneycutt)
- ensure webhook initscript is ordered correctly #48 (dhgwilliam)
- Add class for postrun_command #47 (joshbeard)
- never update gem with rubygems-update #45 (pall-valmundsson)
- Add ability to specify a symlink for r10k.yaml #41 (ghoneycutt)
v1.0.2 (2014-02-19)
v1.0.1 (2014-02-11)
Merged pull requests:
- don't ignore basedir parameter #35 (welterde)
- update travis config, minor lint fixes #34 (jlambert121)
v1.0.0 (2014-02-09)
Closed issues:
Merged pull requests:
- Update config.pp #32 (zachfi)
- add ability to include mcollective agent through main class #30 (jlambert121)
- The gem is called 'bundler' #27 (glarizza)
- Bump to 0.0.10 #26 (glarizza)
- Ability to pass package_name #24 (tampakrap)
- new URL for the make module #23 (tampakrap)
- require git only when installing via gem or bundler #22 (tampakrap)
- Add tests for Gentoo #18 (tampakrap)
v0.0.9 (2013-10-21)
Closed issues:
- Ruby class is not singleton #17
- Could not find declared class ::ruby at /etc/puppet/modules/r10k/manifests/install/gem.pp:10 #16
- Deprecation warning #11
- Require Git #10
v0.0.8 (2013-10-15)
Closed issues:
- Cannot install on PE3.0 #2
Merged pull requests:
- refresh mco if we install the r10k app #15 (nvalentine-puppetlabs)
- Refactor install.pp and add Gentoo Portage support #14 (tampakrap)
- Set prerun_command with inifile instead of augeas #13 (tampakrap)
- Update config.pp #9 (bxm)
- Install using bundle option added for bleeding edge features not in gem ... #8 (diginc)
v0.0.7 (2013-09-10)
Merged pull requests:
v0.0.5 (2013-08-24)
Merged pull requests:
- Manage puppet.conf's $modulepath #4 (glarizza)
- fixing comment typo #3 (fiddyspence)
v0.0.4 (2013-07-25)
v0.0.3 (2013-07-25)
Merged pull requests:
v0.0.2 (2013-07-11)
v0.0.1 (2013-06-12)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/stdlib (>= 9.0.0 < 10.0.0)
- puppetlabs/inifile (>= 1.4.1 < 7.0.0)
- puppetlabs/vcsrepo (>= 1.3.1 < 7.0.0)
- choria/mcollective (>= 0.10.0 <1.0.0)
- puppet/systemd (>= 3.2.0 < 8.0.0)
Copyright (C) 2015 Puppet Labs Inc Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS