Upload
olindata
View
293
Download
6
Tags:
Embed Size (px)
DESCRIPTION
Choon Ming Goh, System Administrator at OnApp Malaysia, gave a presentation on how OnApp implements version control. Since they have quite a few repositories, this is all puppetised and that is quite a nice way of doing version control.
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)