Skip to content

Instantly share code, notes, and snippets.

@maxlinc
maxlinc / gist:3725464
Created September 14, 2012 22:51
Call an environment specific value-adding activity from within a Go template
<pipeline name="deploy">
<stage name="deploy">
<jobs>
<job name="deploy">
<tasks>
<exec command="bundle" workingdir="rpm">
<arg>install</arg>
<arg>--quiet</arg>
<arg>--path</arg>
<arg>/var/go/gems</arg>
@maxlinc
maxlinc / Vagrantfile
Created June 11, 2013 21:23
All rackspace image/flavor combos
require 'fog'
service = Fog::Compute.new({
:provider => 'rackspace',
:rackspace_username => Fog.credentials[:rackspace_username],
:rackspace_api_key => Fog.credentials[:rackspace_api_key],
:version => :v2, # Use Next Gen Cloud Servers
:rackspace_region => :dfw
})
@maxlinc
maxlinc / Vagrantfile
Created June 21, 2013 19:33
Record facts for any host, reuse within rspec-puppet
...
config.vm.provision :shell, :inline => "facter --yaml > /vagrant/fixtures/facts/$HOSTNAME.yaml"
...
@maxlinc
maxlinc / validate_syntax.rake
Created June 27, 2013 16:07
Syntax Checking
desc 'Validates the syntax of the puppet manifest files'
task :validate do
puts `puppet parser validate #{Dir['**/*.pp'].join(' ')}`
fail unless $?.to_i == 0
end
@maxlinc
maxlinc / lint.rake
Created June 27, 2013 16:08
Puppet Linting
require 'puppet-lint'
PuppetLint.configuration.log_format = '%{path}:%{linenumber} - %{KIND}: %{message}'
PuppetLint.configuration.send('disable_80chars')
task :lint do
linter = PuppetLint.new
PuppetLint.configuration.send("disable_documentation")
Dir['manifests/**/*.pp'].each do |pp|
linter.file = pp
linter.run
@maxlinc
maxlinc / whitespace.rake
Created June 27, 2013 16:09
Whitespace
# -*- encoding : utf-8 -*-
class WhitespaceCheck < Struct.new(:pattern, :message)
def lines
@lines ||= []
end
def check(line, number)
lines << number if line =~ pattern
@maxlinc
maxlinc / my_frontend.pp
Created June 27, 2013 16:29
Kwalify (code)
class apps::my_frontend($ensure = 'present', $port = 8080) {
$args = get_scope_args()
$schema = {
'type' => 'map',
'mapping' => {
'ensure' => {
'type' => 'str',
'enum' => ['present', 'absent'],
},
'port' => {
@maxlinc
maxlinc / Vagrantfile
Created June 28, 2013 03:10
Fast acceptance test runner
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.synced_folder "..", "/etc/puppet"
config.vm.provision :shell, :inline => "puppet apply --modulepath '/etc/puppet/modules:/etc/puppet/my_modules/' #{ENV['MANIFEST_FILE']} --detailed-exitcodes || [ $? -eq 2 ]"
config.vm.box = "ubuntu_precise64"
config.vm.hostname = "module-test.example.com"
config.vm.box_url = "http://f.willianfernandes.com.br/vagrant-boxes/UbuntuServer12.04amd64.box"
@maxlinc
maxlinc / env_schema.yaml
Created June 28, 2013 14:38
Kwalify (environment)
type: map
mapping:
redis_password:
type: str
required: yes
# Uncomment the next line to require redis passwords to be encrypted
# pattern: /ENC[.*]/
toggles:
type: map
required: yes
# -*- encoding : utf-8 -*-
module Puppet::Parser::Functions
newfunction(:has_role, :type => :rvalue) do |role|
has_role?(role)
end
end
def has_role?(role)
pool = lookupvar "#{role.first}_pool"
if pool