Showing with 161 additions and 51 deletions.
  1. +1 −0 .gitignore
  2. +2 −0 CHANGELOG
  3. +4 −1 Modulefile
  4. 0 files/application/{jiminy.rb → r10k.rb}
  5. +58 −0 manifests/config.pp
  6. +20 −41 manifests/init.pp
  7. +8 −0 manifests/params.pp
  8. +11 −0 manifests/pe_ruby.pp
  9. +38 −0 manifests/ruby.pp
  10. +0 −8 templates/etc/r10k.yaml
  11. +16 −0 templates/etc/r10k.yaml.erb
  12. +3 −1 tests/init.pp
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pkg
.DS_Store
2 changes: 2 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
2013-07-11 - Zack Smith <zack@puppetlabs.com> - 0.0.2
* Restrict installed version of r10k to 0.0.9
2013-06-12 - Zack Smith <zack@puppetlabs.com> - 0.0.1
* Initial Release
5 changes: 4 additions & 1 deletion Modulefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ project_page 'https://github.com/acidprime/r10k'

## Add dependencies, if any:
dependency 'puppetlabs/stdlib', '>= 4.1.0'
dependency 'puppetlabs/ruby', '>= 0.0.2'
dependency 'puppetlabs/ruby', '>= 0.0.2'
dependency 'puppetlabs/gcc', '>= 0.0.3'
dependency 'puppetlabs/pe_gem', '>= 0.0.1'
dependency 'mhuffnagle/make', '>= 0.0.1'
File renamed without changes.
58 changes: 58 additions & 0 deletions manifests/config.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# == Class: r10k::config
#
# Set up the root r10k config file (/etc/r10k.yaml).
#
# === Parameters
#
# * [*cachedir*]
# Path to a directory to be used by r10k for caching data.
# Default: /var/cache/r10k
# * [*sources*]
# Hash containing data sources to be used by r10k to create dynamic Puppet
# environments. Default: {}
# * [*purgedirs*]
# An Array of directory paths to purge of any subdirectories that do not
# correspond to a dynamic environment managed by r10k. Default: []
#
# === Examples
#
# class { 'r10k::config':
# sources => {
# 'somename' => {
# 'remote' => 'ssh://git@github.com/someuser/somerepo.git',
# 'basedir' => "${::settings::confdir}/environments"
# },
# 'someothername' => {
# 'remote' => 'ssh://git@github.com/someuser/someotherrepo.git',
# 'basedir' => '/some/other/basedir'
# },
# },
# purgedirs => [
# "${::settings::confdir}/environments",
# '/some/other/basedir',
# ],
# }
#
# == Documentation
#
# * https://github.com/adrienthebo/r10k#dynamic-environment-configuration
#
# === Authors
#
# Charlie Sharpsteen <source@sharpsteen.net>
# Zack Smith <zack@puppetlabs.com>
class r10k::config (
$cachedir = '/var/cache/r10k',
$sources = {},
$purgedirs = [],
$configfile = $r10k::params::r10k_config_file,
) inherits r10k::params {
file { 'r10k.yaml':
ensure => file,
owner => 'root',
group => 'root',
path => $configfile,
content => template("${module_name}/${configfile}.erb"),
}

}
61 changes: 20 additions & 41 deletions manifests/init.pp
Original file line number Diff line number Diff line change
@@ -1,50 +1,29 @@
# This class configures r10k
class r10k (
$remote = $r10k::params::remote,
$purgedirs = $r10k::params::r10k_purgedirs,
$basedir = $r10k::params::r10k_basedir,
$cachedir = $r10k::params::r10k_cache_dir,
$configfile = $r10k::params::r10k_config_file,
$sources = {},
$remote = $r10k::params::remote,
$source_name = $r10k::params::source_name,
$purgedirs = $r10k::params::r10k_purgedirs,
$basedir = $r10k::params::r10k_basedir,
$cachedir = $r10k::params::r10k_cache_dir,
$configfile = $r10k::params::r10k_config_file,
$version = $r10k::params::version,
$pe_ruby = $r10k::params::pe_ruby,
) inherits r10k::params {

# Breaking up my chaining a little here
Class['ruby'] -> Class['ruby::dev'] -> Package['gcc']

# rubygems_update => false
# https://projects.puppetlabs.com/issues/19741
class {'ruby':
rubygems_update => false,
}
class { 'ruby::dev':
tag => 'amineeded',
}

# I am not sure this is required as I assumed the
# ruby::dev class would have taken care of it
Package['gcc'] -> Package['make'] -> Package['r10k']

# Install the r10k gem & dependacies
# Check for gcc and make as they might already be in the catalog
if ! defined(Package['gcc']) {
package { 'gcc':
ensure => installed,
if $pe_ruby {
class { 'r10k::pe_ruby' :
version => $version,
}
}

if ! defined(Package['make']) {
package { 'make':
ensure => present,
} else {
class { 'r10k::ruby' :
version => $version,
}
}

package { 'r10k':
ensure => '0.0.9',
provider => 'gem',
}

# Setup the r10k configuration file
file { $configfile :
ensure => present,
content => template("${module_name}/${configfile}"),
class { 'r10k::conf':
cachedir => $cachedir,
configfile => $configfile,
sources => $sources,
purgedirs => $purgedirs,
}
}
8 changes: 8 additions & 0 deletions manifests/params.pp
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
class r10k::params
{
$version = '1.0.0'

$pe_ruby = $::is_pe ? {
'true' => true,
'false' => false,
}

# Puppet Enterprise specific settings
if $::is_pe == 'true' {
# Mcollective configuration dynamic
Expand All @@ -23,6 +30,7 @@
$git_server = $::settings::ca_server
$repo_path = '/var/repos'
$remote = "ssh://${git_server}${repo_path}/modules.git"
$source_name = 'jiminy'

# Mcollective configuration static
$mc_agent_name = "${module_name}.rb"
Expand Down
11 changes: 11 additions & 0 deletions manifests/pe_ruby.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class r10k::pe_ruby (
$version,
) {
require gcc
require make

package { 'r10k':
ensure => $version,
provider => 'pe_gem',
}
}
38 changes: 38 additions & 0 deletions manifests/ruby.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
class r10k::ruby(
$version,
) {
# Breaking up my chaining a little here
Class['ruby'] -> Class['ruby::dev'] -> Package['gcc']

# rubygems_update => false
# https://projects.puppetlabs.com/issues/19741
class {'ruby':
rubygems_update => false,
}
class { 'ruby::dev':
tag => 'amineeded',
}

# I am not sure this is required as I assumed the
# ruby::dev class would have taken care of it
Package['gcc'] -> Package['make'] -> Package['r10k']

# Install the r10k gem & dependacies
# Check for gcc and make as they might already be in the catalog
if ! defined(Package['gcc']) {
package { 'gcc':
ensure => installed,
}
}

if ! defined(Package['make']) {
package { 'make':
ensure => present,
}
}

package { 'r10k':
ensure => $version,
provider => 'gem',
}
}
8 changes: 0 additions & 8 deletions templates/etc/r10k.yaml

This file was deleted.

16 changes: 16 additions & 0 deletions templates/etc/r10k.yaml.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
:cachedir: <%= @cachedir %>
:sources:
<% if @sources.empty? -%>
:<%= @source_name %>:
remote: <%= @remote %>
basedir: <%= @basedir %>
<% else -%>
:sources:
<%# The splitting/joining monkeybuisness trims the YAML document header: `---` -%>
<%= @sources.to_yaml.split("\n")[1..-1].join("\n") %>
<% end %>
<%# The Array boxing/flattening ensures we don't get bitten by bug #15813 -%>
<% unless [@purgedirs].flatten.empty? -%>
:purgedirs:
<%= [@purgedirs].flatten.to_yaml.split("\n")[1..-1].join("\n") %>
<% end -%>
4 changes: 3 additions & 1 deletion tests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@
# Learn more about module testing here: http://docs.puppetlabs.com/guides/tests_smoke.html
#
class { 'r10k':
remote => 'git@github.com:someuser/puppet.git',
remote => 'git@github.com:someuser/puppet.git',
pe_ruby => false,
version => '0.0.9',
}