Skip to content

Instantly share code, notes, and snippets.

View reidmv's full-sized avatar

Reid Vandewiele reidmv

View GitHub Profile
@reidmv
reidmv / buildsource.pp
Created May 4, 2012 19:01
Puppet build define
#
# Depends on: puppetlabs/stdlib
#
define buildsource(
$dir = $title,
$user = 'root',
$path = '/usr/bin:/bin',
$timeout = '0',
$options = ''
) {
@reidmv
reidmv / monitor_exec.pp
Created May 19, 2012 04:15
Trigger an exec upon changes to a semi-managed file
$subject = '/etc/sysconfig/authconfig'
$monitor = '/var/tmp/authconfig_monitor'
file { $subject:
ensure => file,
}
exec { "trigger on update to $subject":
provider => shell,
command => "date > $monitor && /bin/dostuff",
@reidmv
reidmv / test.pp
Created May 19, 2012 23:29
Demo puppet undef tests
$testvar = ""
if $testvar == undef {
notify { "testvar == undef": }
}
if $testvar == "" {
notify { 'testvar == ""': }
}
#!/bin/sh
NEXUS=$HOME/supernexus
branch="PECVD_Master"
lock="/tmp/githooklock"
if mkdir $lock; then
echo "Locking nexus superproject succeeded" >&2
else
@reidmv
reidmv / answers
Created August 8, 2012 23:54
answers-demo_environment-master
a_public_dns=$(host $(curl -s http://169.254.169.254/latest/meta-data/public-ipv4) | sed 's/.*pointer \(.*\)\./\1/')
a_internal_dns=$(hostname | grep '\.' || hostname -f)
q_install=y
q_puppet_cloud_install=y
q_puppet_enterpriseconsole_auth_database_name=console_auth
q_puppet_enterpriseconsole_auth_database_password=r42lOr5jsWisAUbx6P8F
q_puppet_enterpriseconsole_auth_database_user=console_auth
q_puppet_enterpriseconsole_auth_password=puppetlabs
q_puppet_enterpriseconsole_auth_user_email=admin@puppetlabs.com
q_puppet_enterpriseconsole_database_install=y
@reidmv
reidmv / answers
Created August 8, 2012 23:55
answers-demo_environment-agent
q_fail_on_unsuccessful_master_lookup=n
q_install=y
q_puppet_cloud_install=n
q_puppet_enterpriseconsole_install=n
q_puppet_symlinks_install=y
q_puppetagent_certname=`hostname`
q_puppetagent_install=y
q_puppetagent_server=puppet
q_puppetca_install=n
q_puppetmaster_install=n
@reidmv
reidmv / facterdotd
Created August 22, 2012 18:47
feature_request
## Feature Request ##
The Puppet Enterprise installer when operating in unattended installation mode
(answers file) should facilitate the setting of custom facts via the
factor-dot-d system. The answers file should accept a variable prefix form
which specifies a custom fact to set. For example:
Given the answers file:
q_fail_on_unsuccessful_master_lookup=n
@reidmv
reidmv / composite_namevar.rb
Created September 16, 2012 06:06
Composite Namevar
# Our title_patterns method for mapping titles to namevars for supporting
# composite namevars.
def self.title_patterns
identity = lambda {|x| x}
[
[
/^([^:]+)$/,
[[ :name, identity ]]
],
[
@reidmv
reidmv / filemapper.rb
Created September 17, 2012 20:26
Prefetch match composite namevar(s)
def prefetch(resources = {})
# generate hash of {provider_name => provider}
providers = instances.inject({}) do |hash, instance|
hash[instance.name] = instance
hash
end
# Identify the namevar(s) for the type
nv_properties = resource_type.properties.select(&:isnamevar?).map(&:name)
nv_params = resource_type.parameters.select do |param|
@reidmv
reidmv / lib-facter-local_users.rb
Created October 29, 2012 16:55
Custom fact local_users in hypothetical "user" module
# This custom fact pulls out all local users from the /etc/passwd file
# and returns the collection as a comma-separated list.
Facter.add(:local_users) do
setcode do
users = Array.new
File.open("/etc/passwd").each do |line|
next if line.match(/^\s|^#|^$/)
users << line.split(':').first
end