case dev = ops ;) • use humans for tasks that matters when you are 3, you don't want to provision or deploy manually, you want to code new features, do code review, prepare launch,... • automation, automation, automation provisioning, adding new components, adding new servers were a pain => infrastructure as code
line and scripting environment for VirtualBox unit-testing for puppet : no cost of provisioning, only building catalog, mock facts Iso of distribution, few settings and 30 minutes later a running vagrant box bundler, reuse existing modules
can all stop using git submodules now == Puppetfile == mod 'apt', git: "git://github.com/puppetlabs/puppetlabs-apt.git" mod 'stdlib', git: 'https://github.com/puppetlabs/puppetlabs-stdlib.git' mod 'logrotate', git: 'https://github.com/rodjek/puppet-logrotate.git' mod 'ssh', git: 'https://github.com/blt/puppet-ssh.git' mod 'postgresql', git: 'https://github.com/puppetlabs/puppet-postgresql.git' mod 'rvm', git: 'https://github.com/angusscown/puppet-rvm.git' mod 'locales', git: 'https://github.com/attachmentgenie/puppet-module-locales.git' mod 'jenkins', git: 'https://github.com/mestachs/puppet-jenkins.git' mod 'firewall', git: 'https://github.com/puppetlabs/puppetlabs-firewall.git' mod 'redis', git: 'https://github.com/HIGHLANDSTECHNOLOGIESSAS/puppet-module-redis.git' mod 'mongodb', git: 'https://github.com/puppetlabs/puppetlabs-mongodb.git' mod 'vcsrepo', git: 'https://github.com/puppetlabs/puppetlabs-vcsrepo.git' mod 'apache', git: 'https://github.com/puppetlabs/puppetlabs-apache.git'
ordering issue - make the module reusable http://www.slideshare.net/PuppetLabs/modern-module-development-ken-barber-2012-edinburgh-puppet-camp Prefer composition over inheritance - node extends vs include class - class vs define Layout : params, firewall,... - http://www.example42.com/?q=understandExample42PuppetModules Anchor - http://projects.puppetlabs.com/projects/puppet/wiki/Anchor_Pattern
accidentally being "beta" tester, - new rvm dependencies,... - early adopter of new Puppet release Vagrant vs OVH - some packages pre-installed by Veewee e.g. RubyGems - network interface eth0, eth1 OVH vs OVH (openvz vs vmware) - overcommit, network interface naming
Puppet dependencies --graph and --graphdir '/tmp/vagrant-puppet/modules-0/graphs' and gephi Too Weak requirement require => User['...'] but more than this require a user with home directory/ssh config/... http://projects.puppetlabs.com/projects/puppet/wiki/Anchor_Pattern
enough eg: init.d script with debian cartridge ideally provision a vagrant box in a continuous build and check that the services are running, the application responding,... http://serverspec.org/ https://github.com/bryanwb/tk-demo
build - our staging / production infrastructure - our batsd / batsd-dash instance - our errbit instance - partially my laptop Need to investigate - hiera to avoid "copy/paste/modify" between staging and production - a better way to manage the firewall
just like for bundle update - Puppet : started with 3.0, upgrade 3.1, now at 3.2.1 - Vagrant no more as a gem, not upgraded yet - secret still handled by hand SSH keys SSL certificates (default to snake_oil)