Aligning Continuous Integration Deployment: Automated Validation of OpenStack Deployments

Post on 13-Jan-2015

3.979 views 2 download

Tags:

description

Ever think to yourself...how can my team automate the processes for my complex system? How does Continuous integration and Continuous Deployment fit in? In this talk by Teyo and Dan you will dive into world of automation using Puppet and OpenStack. Start off with brief overview of Puppet and OpenStack, then dive into examples of how you model complex deployments of OpenStack using Puppet.

Transcript of Aligning Continuous Integration Deployment: Automated Validation of OpenStack Deployments

Monday, June 18, 12

Co-Founder

Teyo Tyree

Building and Testing Community Puppet Modules

Puppet & Openstack:

Integration SpecialistDan Bode

Monday, June 18, 12

Monday, June 18, 12

The Internet

Laziness...Impatience...Hubris...

Larry Wall

Monday, June 18, 12

Puppet automates computers.

Monday, June 18, 12

DeclarativeIdempotent

Model Driven

Monday, June 18, 12

Atlassian Conf 2012

Puppetized infrastucture is awesome. Using

someone else’s puppetized infrastructure is even more awesome.

Teyo Tyree

Monday, June 18, 12

Build Reusable Infrastructure

Monday, June 18, 12

Monday, June 18, 12

New Goal

Monday, June 18, 12

Build reusable models for complex applications.

Monday, June 18, 12

Model Openstack

Monday, June 18, 12

OpenStack is an opensource cloud controlling software that is comprised of three components called Compute, Object Storage, and Image Service.

Monday, June 18, 12

Monday, June 18, 12

Nerd Sniped

repos:  repo_paths:    # openstack git repos    git://github.com/puppetlabs/puppetlabs-nova: nova    git://github.com/puppetlabs/puppetlabs-glance: glance    git://github.com/puppetlabs/puppetlabs-swift: swift    git://github.com/puppetlabs/puppetlabs-keystone: keystone    git://github.com/puppetlabs/puppetlabs-horizon: horizon    # openstack middleware    git://github.com/puppetlabs/puppetlabs-rabbitmq: rabbitmq    git://github.com/puppetlabs/puppetlabs-mysql: mysql    git://github.com/puppetlabs/puppetlabs-git: git    git://github.com/puppetlabs/puppetlabs-vcsrepo: vcsrepo    git://github.com/saz/puppet-memcached: memcached    git://github.com/puppetlabs/puppetlabs-rsync: rsync    # other deps    git://github.com/ghoneycutt/puppet-xinetd: xinetd    git://github.com/saz/puppet-ssh: ssh    git://github.com/puppetlabs/puppetlabs-stdlib: stdlib    git://github.com/puppetlabs/puppetlabs-apt: apt    git://github.com/ripienaar/puppet-concat: concat    git://github.com/duritong/puppet-sysctl.git: sysctl

Monday, June 18, 12

Lego Blocks

repos:  repo_paths:    # openstack git repos    git://github.com/puppetlabs/puppetlabs-nova: nova    git://github.com/puppetlabs/puppetlabs-glance: glance    git://github.com/puppetlabs/puppetlabs-swift: swift    git://github.com/puppetlabs/puppetlabs-keystone: keystone    git://github.com/puppetlabs/puppetlabs-horizon: horizon    # openstack middleware    git://github.com/puppetlabs/puppetlabs-rabbitmq: rabbitmq    git://github.com/puppetlabs/puppetlabs-mysql: mysql    git://github.com/puppetlabs/puppetlabs-git: git    git://github.com/puppetlabs/puppetlabs-vcsrepo: vcsrepo    git://github.com/saz/puppet-memcached: memcached    git://github.com/puppetlabs/puppetlabs-rsync: rsync    # other deps    git://github.com/ghoneycutt/puppet-xinetd: xinetd    git://github.com/saz/puppet-ssh: ssh    git://github.com/puppetlabs/puppetlabs-stdlib: stdlib    git://github.com/puppetlabs/puppetlabs-apt: apt    git://github.com/ripienaar/puppet-concat: concat    git://github.com/duritong/puppet-sysctl.git: sysctl

Monday, June 18, 12

class nova(  $nova_cluster_id='localcluster',  $sql_connection = false,  $image_service = 'nova.image.glance.GlanceImageService',  $glance_api_servers = 'localhost:9292',  $rabbit_host = 'localhost',  $rabbit_password='guest',  $rabbit_port='5672',  $rabbit_userid='guest',  $rabbit_virtual_host='/',  $auth_strategy = 'keystone',  $service_down_time = 60,  $logdir = '/var/log/nova',  $state_path = '/var/lib/nova',  $lock_path = $::nova::params::lock_path,  $verbose = false,  $periodic_interval = '60',  $report_interval = '10',  $root_helper = $::nova::params::root_helper){...}

Flexible

Monday, June 18, 12

We aren’t Openstack experts.

We need the community.

Monday, June 18, 12

Atlassian Conf 2012

Puppetized infrastucture is awesome. Using

someone else’s Puppetized infrastructure is even more awesome!

Teyo Tyree

Monday, June 18, 12

Engagement

Monday, June 18, 12

Fear the Fork!

Monday, June 18, 12

Monday, June 18, 12

300+ merged pull requests!

Monday, June 18, 12

class nova(  $nova_cluster_id='localcluster',  $sql_connection = false,  $image_service = 'nova.image.glance.GlanceImageService',  $glance_api_servers = 'localhost:9292',  $rabbit_host = 'localhost',  $rabbit_password='guest',  $rabbit_port='5672',  $rabbit_userid='guest',  $rabbit_virtual_host='/',  $auth_strategy = 'keystone',  $service_down_time = 60,  $logdir = '/var/log/nova',  $state_path = '/var/lib/nova',  $lock_path = $::nova::params::lock_path,  $verbose = false,  $periodic_interval = '60',  $report_interval = '10',  $root_helper = $::nova::params::root_helper){...}

Flexible

Monday, June 18, 12

class nova::params {

  case $::osfamily {    'RedHat': { # package names      $api_package_name = false      $cert_package_name = false      $common_package_name = 'openstack-nova'      $compute_package_name = false      ...         }    'Debian': { # package names      $api_package_name = 'nova-api'      $cert_package_name = 'nova-cert'      $common_package_name = 'nova-common'      $compute_package_name = 'nova-compute'      ... }

Multi-platform

Monday, June 18, 12

Whoa, we need tests!

Monday, June 18, 12

Model

Puppet

Facts

Data

Rspec-Puppet

Monday, June 18, 12

Model

Puppet

Facts

Datalet :facts do {:operatingsystem => ‘RedHat’}end

Monday, June 18, 12

let :params do {:rabbit_host => ‘10.0.0.42’}end

Model

Puppet

Facts

Data

Monday, June 18, 12

it do should contain_file (‘/etc/nova.conf’).\ with_content (‘rabbit_host = 10.0.0.42’)end

Model

Puppet

Facts

Data

Monday, June 18, 12

Openstack Devops

Monday, June 18, 12

Openstack is not static!

Monday, June 18, 12

Tempest

Monday, June 18, 12

Puppet defines

deployments

Monday, June 18, 12

Testing Openstack?

Monday, June 18, 12

Tempest

Git

Puppet

Monday, June 18, 12

Questions?

Monday, June 18, 12