herein is subject to change without notice. Simon McCartney, Site Reliability Engineering OpenStack Summit 2014 - Paris CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
herein is subject to change without notice. Background • This project predates HP Helion OpenStack • We’re using Ubuntu 12.04, OpenStack Grizzly & SaltStack
herein is subject to change without notice. Why Continuous Integration & Delivery? • Infrastructure as Code > Infrastructure as Art • Frequent Small Batches > Infrequent Big Batches
herein is subject to change without notice. Why Continuous Integration & Delivery • Unit Tests - salt formulae • Integration Tests - do these salt formulae work together? • End-to-End Tests - does the OpenStack Cloud we built work? • Performance Test - did we break/de-tune something? • Deployment Tests - do we have everything? • Configuration Tests - can we test different environments before hitting the real environment?
herein is subject to change without notice. Our Pipeline 1. Individual Salt Formula development 2. Personal multi-node, package based OpenStack environment on your workstation for dev & validation 3. Go public – push to gerrit for review & automated testing 4. Pull in to the deploy-kit 5. deploy-kit tooling kicks in & builds deploy artefacts 6. Auto deploy to ephemeral public cloud test environment 7. Deploy to physical staging environment 8. Ready for production
herein is subject to change without notice. Validating & Approving a change • gerrit - defacto web based open source code review system • submit changes (a patch set) for review by your peers.. • ..and for testing by Jenkins • Jenkins & Gerrit Trigger • Gerrit plugins allow certain jobs to be triggered on patch-set events (create, merge etc) • results of these jobs are then recorded in gerrit • test-kitchen • test harness to execute your configuration management code in isolation (i.e. fresh VMs) • providers (vagrant, LXC, openstack, gce, aws etc) • provisioners (Chef, Salt, Puppet) • testing frameworks (Bats, RSpec, serverspec etc) • can be used interactively in your dev environment as well as in validation jobs
herein is subject to change without notice. Deployment Automation • Production Deploys • Move slowly when required • Confirm host is still “good” using existing monitoring framework • Caution over nova-* service restarts • Next • rundeck • chatops