Description
Ok, maybe we exaggerated a bit. CI deployments focus on the testing and deployment of the application. The ‘world’ (OS, Application & DB server) within a CI doesn’t change that much.
It's pretty much, if it ain't broke don't fix it. Software development used to be like that some time ago.
But the world of infrastructure is changing too: uptime of a system is no longer considered the ultimate goal. It's all about bringing changes faster online - Agile Infrastructure.
In this session we will show you how to apply the continuous integration principles to infrastructure:
- How do you define your applications environment as a kind of 'source' to build from
- What about unit testing and integration testing with the environment. Is it similar to Monitoring?
- How security patches can be considered 'refactoring' the environment, and why unit tests help you verify the behavior even without real code changes?
- How you can automate the build process and define dependencies
- Why you should test your deployment process and how this can help in disaster recovery situations.
The toolkit to make this happen is steadily growing: increasingly the ops and sysadmins are becoming active developers. The picture below describes the similarities mentioned and shows the multitude of tools in a visual way.
Off course we won't be able to explain everything tool in detail. During the presentation we will follow the actual build of a simple Linux/Apache environment to show you the principles.
- building a virtual environment (based upon virtualbox)
- setting up a linux/redhat provisioning system from scratch with dns, dhpc, ip (based on the cobbler framework)
- defining a simple minimum environment of 1 linux system (based on kickstart and package repositories)
- write unit tests for each part of the process (based on cucumber-nagios)
- snapshotting and rollback between builds (based upon zfs)
- deploy a simple http/mysql with using an system configuration management (based upon puppet)
- integration it all in a simple CI build system (cruisecontrol.rb)
Aside from the parallel, the integration of both the development and infrastructure 'pipeline' , allows a common ground for the different groups like development, system administrator and operations. During each sprint they are ALL working on the same problem, increasing the collaboration between these typical silo-based enterprise entities.

Source
- What does it take to define the application world
- Different levels of source : Network Config, Virtual machine, OS, standards recipes
- Functional Operating systems: NixoS, Nix package manager
Build
- Explain the existing tools to build the environment and how to automate this
- Instalinux, EasyVMX, Puppet, Carpet, AutomateIT,
- OpenQRM, Linmin
Test
- How monitoring tools can apply to testing
- Unit tests for infrastructure: OS, Memory, Disk
- Regression tests for infrastructure
- SNMP, nagios,
- Validation, security checks
Package
- Building appliances: rpath, ec2, thincrust
- Building virtual machines: koan
Deploy/Publish
- Publish to a physical machine (PXE)
- Publish to a virtual machine (PXE, vm preparation)
- Publish to a cloud
Integrating both pipelines
- Rebuild it all and integrate in one pipeline
- Introducing a security fix and see that happens in the pipeline
- Better understanding of how to integrate your production environment into your CI setup
- Discover new ways to avoid problems when release into production.
- How you can apply the concepts of CI to infrastructure management
Sam the Sysadmin
Duration: 90 minutes
Requirements: Beamer + possible internet connection