3. About DECK36
• Small team of engineers in Hamburg
• Longstanding expertise in designing, implementing and
operating complex web systems
• Offering our expert knowledge in Design & Architecture &
Engineering and Automation & Operation
Slides online at: http://slideshare.net/deck36/
11. Synced Folders
Shared folders, mounted from host into guest.
Options:
• VirtualBox slow!
• NFS often the best choice
• SMB for Windows support
• rsync very different but efficient
12. “But our QA needs many VMs
and their machines are slow.”
13. vagrant-aws
Vagrant.configure("2") do |config|
config.vm.box = "dummy"
config.vm.provider :aws do |aws, override|
aws.access_key_id = "YOUR KEY"
# ...
region = "eu-west-1"
aws.ami = "ami-20414854"
aws.tags = {
'Role' => 'TestVM',
'Net' => 'Devnet'
}
end
end
26. Puppetfile
forge "https://forge.puppetlabs.com"
mod 'puppetlabs/stdlib'
mod 'saz/rsyslog', '3.4.0'
mod 'puppetlabs/apache',
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
:ref => '83401079053dca11d61945bd9beef9ecf7576cbf'
# Ruby DSL, extensible with own functions
# cf. http://www.lazyfrosch.de/2015/02/
# nifty-puppetfile-extension/
github 'jfryman', 'nginx', 'v0.2.2'
27. “How can we move on and
puppetize our main servers?”
28. First steps on existing systems
• Start small, then expand
• Even few automated tasks may save a lot of time
• 80/20 rule applies
29. Establish a new workflow
• Add notification and QA (if wanted, e. g. with Gerrit),
• Use etckeeper to track changes,
• Define and document boundaries/responsibilities,
• Add comments, point to real source of configuration:
# managed by puppet -- editing is futile
# template in git.example.com/provisioning.git
...
• Run Puppet frequently
51. Puppet Problems
• some tasks require two agent runs
• apt-get upgrade and package dependencies
• version mismatch between apt (or yum) and package
• scoping and namespaces
• exec is the new eval
53. exec tricks
Both source and solution to a great many problems.
You can do (and break) everything with exec and a shell script.
But of course you should not.
64. “Why do we still manually
configure DNS and
monitoring?”
65. Hooks to other systems
• include in provisioning process
• provide normative data as facts
• register or update DNS name → e. g. Route 53
• update monitoring → e. g. Zabbix API
• update loadbalancer → e. g. ELB or Consul
66. Questions?
class presentation {
package { 'questions':
ensure => 'answered',
}
}
Links:
• Puppet Visual Index
• Puppet Type Reference
• Puppet Ask
• Ger Apeldoorn: Manageable Puppet
Infrastructure
• Martin Alfke: Power of Puppet 4