ent Automated Deploym u … of Debian & Ubunt
Michael Prokop
About Me
Debian Developer Project lead of Grml.org Founder of Grml-Forensic.org Involved in FAI, initramfs-tools, etc. Member in Debian Forensic Team Author of Book ,,Open Source Projektmanagement" IT Consultant
Disclaimers
Deployment focuses on Linux
Several tools mentioned, but there exist even more :)
We'll cover some sections in more detail than others
There's no one-size-fits-all solution – identify what works for you
Systems Management Provisioning / Documentation Bootstrapping Infrastructure Orchestration / Development DevOps Automation Visualization/Trends Configuration /Metrics + Logs Management Monitoring + Cloud Service Updates Deployment
Systems Management
Remote Access ipmi, HP iLO, IBM RSA,...
Firmware Management
$Vendor Tools
Provisioning / Bootstrapping
F(ully) A(utomatic) I(nstallation) Debian, Ubuntu, CentOS + Scientific Linux
http://fai-project.org/
Juju Ubuntu „Charms“ https://juju.ubuntu.com/
grml-debootstrap netscript=http://example.org/netscript.sh
http://grml.org/
d-i preseeding auto url=http://debian.org/releases/\ squeeze/example-preseed.txt http://wiki.debian.org/DebianInstaller/Preseed
Kickstart
Cobbler
Foreman
AutoYaST, openQRM, Spacewalk,...
Orchestration / Automation
Fabric (Python)
% cat fabfile.py from fabric.api import run def host_type(): run('uname -s')
% fab -H host1, host2,host3 host_type
Capistrano (Ruby)
% cat Capfile role :hosts, "host1", "host2", "host3" task :host_type, :roles => :hosts do run "uname -s" end
% cap host_type
Rundeck
apt-dater
% cat .config/apt-dater/hosts.conf [example.org] [email protected];mika@ mail.example.org;... ControlTier, Func, MCollective,...
ClusterSSH, dsh, TakTuk,...
Cobbler, Foreman, openQRM, Spacewalk,...
Configuration Management
Puppet
Environments (production/staging/development)
●http://anonscm.debian.org/gitweb/?p=mirror/dsa-puppet.git ●https://github.com/grml/gsa-puppet ●https://labs.riseup.net/code/projects/sharedpuppetmodules ●...
Augeas
% augtool set /files/etc/hosts/01/ipaddr 192.168.0.1 set /files/etc/hosts/01/canonical klug.example.org save
bcfg2, cfengine, chef + ohai
Monitoring / Updates
Repository Handling/Proxy
apt-cacher-ng reprepro squid ...
unattended-upgrades
Unattended-Upgrade::Allowed-Origins { "${distro_id} stable"; "${distro_id} ${distro_codename}-security"; "${distro_id} ${distro_codename}-updates"; };
Monitoring
Cacti, Nagios/Icinga, OpenNMS, Zabbix, Zenos,...
Nagios / Icinga
security updates, running kernel version,.. git clone git://anonscm.debian.org/mirror/dsa-nagios.git
Service Deployment
Debian Packaging
dpkg [v3] + debhelper [v8] dh-make, dh-make-perl, dh-make-php, dh-make-ruby/gem2deb fpm [https://github.com/jordansissel/fpm]
{cvs,svn,git,...}-buildpackage
cowbuilder/pbuilder/sbuild/...
Ruby
Bundler http://gembundler.com/
Python virtualenv/pip/pbundler
Continuous Integration & Jenkins
Cloud Eucalyptus, OpenStack, Cloudstack
Visualization/Trends/Metrics + Logs Logstash, Graylog2, Splunk Cacti, Munin, Collectd, Ganglia, Graphite
Infrastructure Development + Testing
Vagrant
% vagrant box add base \ http://files.vagrantup.com/lucid32.box % vagrant init % vagrant up
http://vagrantup.com/ + http://www.vagrantbox.es/
Veewee
% bundle install --path vendor % alias veewee='bundle exec veewee'
% veewee vbox define CustomDebian-6.0.4 \ Debian-6.0.4-amd64-netboot % $EDITOR definitions/CustomDebian-6.0.4/* % veewee vbox build 'CustomDebian-6.0.4' % veewee vbox validate CustomDebian-6.0.4
% vagrant package --base CustomDebian-6.0.4
https://github.com/jedi4ever/veewee Jenkins
Cucumber-Puppet RSpec-Puppet Guard::Cucumber
Documentation Wiki VCS (Git!) Asciidoc, Sphinx, txt2tags Password Management ...
Questions || Wishes?
@mikagrml mika @ github michael-prokop.at/blog/