Skip to content

Instantly share code, notes, and snippets.

@davewongillies
Forked from rija/install_puppet_mac.sh
Last active December 10, 2015 20:38
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save davewongillies/4489842 to your computer and use it in GitHub Desktop.
Save davewongillies/4489842 to your computer and use it in GitHub Desktop.

On Mac OS X:

  • Install puppet 3.0.2, facter 1.6.17 and hiera 1.1.2
  • create /etc/puppet/puppet.conf
  • configure launchd puppet daemon
  • initial puppet run
#!/usr/bin/env bash
set -o errtrace
set -o errexit
facter_version=1.6.17
puppet_version=3.0.2
hiera_version=1.1.2
target_volume=/Volumes/Macintosh\ HD
echo "About to install Facter $facter_version and Puppet $puppet_version on target volume $target_volume"
start_date=$(date "+%Y-%m-%d%:%H:%M:%S")
echo "mkdir /private/tmp/$start_date ; cd /private/tmp/$start_date"
mkdir /private/tmp/$start_date ; cd /private/tmp/$start_date
curl -sO http://downloads.puppetlabs.com/mac/facter-$facter_version.dmg
curl -sO http://downloads.puppetlabs.com/mac/hiera-$hiera_version.dmg
curl -sO http://downloads.puppetlabs.com/mac/puppet-$puppet_version.dmg
hdiutil attach facter-$facter_version.dmg
hdiutil attach hiera-$hiera_version.dmg
hdiutil attach puppet-$puppet_version.dmg
sudo installer -package /Volumes/facter-$facter_version/facter-$facter_version.pkg -target "$target_volume"
sudo installer -package /Volumes/hiera-$hiera_version/hiera-$hiera_version.pkg -target "$target_volume"
sudo installer -package /Volumes/puppet-$puppet_version/puppet-$puppet_version.pkg -target "$target_volume"
echo "Creating directories in /var and /etc - needs sudo"
sudo mkdir -p /var/lib/puppet
sudo mkdir -p /etc/puppet/manifests
sudo mkdir -p /etc/puppet/ssl
if [ $(dscl . -list /Groups | grep puppet | wc -l) = 0 ]; then
echo "Creating a puppet group - needs sudo"
max_gid=$(dscl . -list /Groups gid | awk '{print $2}' | sort -ug | tail -1)
new_gid=$((max_gid+1))
sudo dscl . create /Groups/puppet
sudo dscl . create /Groups/puppet gid $new_gid
fi
if [ $(dscl . -list /Users | grep puppet | wc -l) = 0 ]; then
echo "Creating a puppet user - needs sudo"
max_uid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
new_uid=$((max_uid+1))
sudo dscl . create /Users/puppet
sudo dscl . create /Users/puppet UniqueID $new_uid
sudo dscl . -create /Users/puppet PrimaryGroupID $new_gid
fi
echo "Creating /etc/puppet/puppet.conf - needs sudo"
sudo tee -a /etc/puppet/puppet.conf>/dev/null<<EOF
[main]
vardir = /var/lib/puppet
libdir = $vardir/lib
ssldir = $vardir/ssl
http_compression=true
pluginsync = true
[agent]
certname = `hostname`
EOF
echo "Changing permissions - needs sudo"
sudo chown -R puppet:puppet /var/lib/puppet
sudo chown -R puppet:puppet /etc/puppet
sudo tee -a /Library/LaunchDaemons/com.puppetlabs.puppet.list>/dev/null<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/sbin:/usr/sbin:/bin:/usr/bin</string>
<key>RUBYLIB</key>
<string>/usr/lib/ruby/site_ruby/1.8/</string>
</dict>
<key>Label</key>
<string>com.puppetlabs.puppet</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/puppet</string>
<string>agent</string>
<string>apply</string>
<string>--verbose</string>
<string>--listen</string>
<string>--no-daemonize</string>
<string>--logdest</string>
<string>console</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>Puppet Daemon</string>
<key>ServiceIPC</key>
<false/>
<key>StandardErrorPath</key>
<string>/var/lib/puppet/log/puppet.err</string>
<key>StandardOutPath</key>
<string>/var/lib/puppet/log/puppet.out</string>
</dict>
</plist>
EOF
echo "Cleaning up"
hdiutil detach /Volumes/facter-$facter_version
hdiutil detach /Volumes/hiera-$hiera_version
hdiutil detach /Volumes/puppet-$puppet_version
cd /private/tmp
rm -rf ./$start_date
sudo puppet agent apply -t --waitforcert 15
sudo launchctl load /Library/LaunchDaemons/com.puppetlabs.puppet.plist
@robbyt
Copy link

robbyt commented Jan 10, 2013

Wow! this is great work! Thank you :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment