Upload
puppet-labs
View
1.142
Download
2
Embed Size (px)
DESCRIPTION
From PuppetCamp Southeast Asia 2012, in Kuala Lumpur, Malaysia.
Citation preview
About
System Administrator Backend Developer Puppet user Cloud industry Builds CDN software
Why version control?
Versioning
Coordination
Centralised repository
Accountability
Experimentation
What do I use?
Git and Subversion
How do I do that?
Defined Types
define subversion::create($user = false, $group = false) { include subversion::aflexi $user_real = $user ? { false => 0, default => $user } $group_real = $group ? { false => 0, default => $group } Exec { path => "/usr/bin:/bin:/opt/local/bin:/usr/local/bin", } exec { "svnadmin-create-$name": command => "/usr/bin/svnadmin create $name", creates => "$name/db", user => $user_real, group => $group_real, environment => "HOME=''", } }
define git::workdir($repository, $local_container, $local_name = false, $post_checkout_script = undef, $post_update_script = undef, $runas_user = "root", $runas_group = "root", $branch = "master") { $owner_real = $owner ? { false => 0, default => $owner } $group_real = $group ? { false => 0, default => $group } $local_name_real = $local_name ? { false => $name, default => $local_name } exec { "git-clone-$name": command => "git clone --branch '$branch' '$repository' '$local_name_real'", cwd => $local_container, require => [ File["$local_container"], Package["git-core"]], creates => "$local_container/$local_name_real/.git", } exec { "git-pull-$name": command => "git pull", cwd => "$local_container/$local_name_real", require => Exec["git-clone-$name"], } }
What's next?
subversion::create { "/var/lib/svn/$svnrepo": user => "www-data", group => "www-data", }
git::workdir { "mygitrepo": repository => $portal_src, local_container => "/etc/puppet/", local_name => "mygitrepo", branch => $portal_branch, }
Why do I want to puppetize it?
Quick setup for another puppetmaster
Almost not necessary to change manifests manually ever!
Fix what you break policy
Questions?
Contact
[email protected] Twitter - @choonming IRC – Freenode #puppet, #myoss, #debian choonming Skype – gchoonming (please identify yourself) Gtalk – choonming2002 (please identify yourself)