44. - Configuration as Code
- Client-only or Client-Server setup
- backed by companies
- officially supported by Amazon
- tried and tested
- good documentation
- good, vibrant communities
Mayflower GmbH I 44
45. - Chef is ruby code, puppet has a DSL
- puppet has the bigger community
- puppet has more documentation
- but chef is catching up
- puppet: europe, chef: USA
- chef is more flexible
- if you puppet, you don't know ruby
and vice versa
Mayflower GmbH I 45
46. - both know current configuration
- you define your nodes (servers)
- lots of community cookbooks/modules
- easy to extend
- templates
- providers as platform abstractions
(e.g. apt-get/ports/yum)
Mayflower GmbH I 46
47. There's no „better“ tool.
But we prefer puppet.
Less Ruby ;)
Mayflower GmbH I 47
48. user { 'florian':
ensure => present,
uid => '507',
gid => 'admin',
shell => '/bin/bash',
home => '/home/florian',
managehome => true,
}
Mayflower GmbH I 48
49. user „florian“ do
username „florian“
password „$1$P$WXmqrQEVj88fVTHevErxq.“
shell „/bin/bash“
system true
supports :manage_home => true
end
Mayflower GmbH I 49
52. $ cat Vagrantfile
Vagrant::Config.run do |config|
config.vm.provision :puppet, :module_path =>
„modules“ do |puppet|
puppet.manifests_path = „manifests“
puppet.manifest_file = „development.pp“
end
config.vm.define :web do |web_config|
web_config.vm.box = „natty“
web_config.vm.host_name = „webserver01“
web_config.vm.network „33.33.33.10“
web_config.vm.forward_port „http“,80,8080
web_config.vm.port „ssh“,22,2222
web_config.vm.share_folder „v-
data“,“/srv/www“,“../silex-demo“
end
end
Mayflower GmbH I 52
53. $ cat manifests/development.pp
import „classes/*“
node „webserver01“ {
include web
}
node „dbserver01“ {
include db
}
node „ciserver01“ {
include ci
}
Mayflower GmbH I 53
54. $ cat manifests/classes/web.pp
class web inherits basenode {
include apache
include apache::php
apache::vhost { 'silex-demo.local':
port => '80',
docroot => '/srv/www/docroot',
}
package { ['mysql-client','php5-cli',...]:
ensure => present,
}
}
Mayflower GmbH I 54
55. $ cat manifests/classes/ci.pp
class ci inherits basenode {
include apache
include apache::php
exec { 'pear-autodiscover':
command => '/usr/bin/pear config-set
auto_discover 1',
}
package{
['pear.phpunit.de/PHP_CodeBrowser',...]:
ensure => latest,
provider => 'pear',
require => Exec['pear-autodiscover'],
}
}
Mayflower GmbH I 55