+ All Categories
Home > Software > OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Date post: 06-Jul-2015
Category:
Upload: netways
View: 375 times
Download: 0 times
Share this document with a friend
Description:
Many facets of using an IaaS cloud like OpenNebula can be greatly simplified by using a configuration management tool such as Puppet. This includes the management of hosts as well as the management of cloud resources such as virtual machines and networks. Of course, Puppet can also play an important role in the management of the actual workload of virtual machine instances. Besides using it in the traditional, purely agent-based way, it is also possible to use Puppet during the building of machine images. This serves two purposes: firstly, it speeds up the initial Puppet run when an instance is launched off that image, sometimes quite dramatically. Secondly, it supports operating immutable infrastructure without losing Puppet’s benefits to organize and simplify the description of the entire infrastructure. This talk will show how Puppet can be used by adminsitrators to manage OpenNebula hosts, and by users to manage their infrastructure as well as how to use Puppet during image builds.
52
Presented by OpenNebula and Puppet David Lutterkort Puppet Labs @lutterkort [email protected]
Transcript
Page 1: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

OpenNebula and PuppetDavid Lutterkort Puppet Labs @lutterkort [email protected]

Page 2: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort
Page 3: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort
Page 4: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Any  input  to  infrastructure  is  configura)on  

Page 5: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Configura3on  management:    managing  those  inputs  

over  )me  at  scale

Page 6: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Configura3on  management:    managing  those  inputs  

over  )me  at  scale

Page 7: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Configura3on  management:    managing  those  inputs    

over  3me  at  scale

Page 8: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Puppet’s circle of change

Page 9: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

A basic manifestclass webserver {

package { 'httpd': ensure => latest } -> file { '/etc/httpd/conf.d/local.conf': ensure => file, mode => 644, source => 'puppet:///modules/httpd/local.conf', } -> service { 'httpd': ensure => running, enable => true, subscribe => File['/etc/httpd/conf.d/local.conf'], }

}

Page 10: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Override via inheritanceclass webserver2 inherits webserver { File['/etc/httpd/conf.d/local.conf'] { source => 'puppet:///modules/httpd/other-local.conf', } }

Page 11: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

The site-wide manifestnode host1.example.com { class { 'webserver': } } node host2.example.com { class { 'webserver2': } } node host3.example.com { class {'mongodb::server': port => 27018 } }

Page 12: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Infrastructure  as  Code

Page 13: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

http://www.partialhospitalization.com/2010/08/363/

Page 14: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Page 15: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Managing cloud resources

Page 16: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

puppetlabs/puppetlabs-aws

Page 17: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Instance managementec2_instance { 'name-of-instance': ensure => present, region => 'us-east-1', availability_zone => 'us-east-1a', image_id => ‘ami-ttylinux', instance_type => 't1.micro', monitoring => true, key_name => 'name-of-existing-key', security_groups => ['group1', 'group2'], user_data => template('module/user-data.erb') }

Page 18: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Managing instance content

Page 19: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Dataflow in Puppet

Page 20: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Certificate signing

Page 21: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Certificate signing

Page 22: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Certificate signing

Page 23: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Certificate signing

Page 24: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Certificate signing

Who  checks  ?

Page 25: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Node creation

Page 26: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Node creation

Page 27: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Page 28: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Page 29: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Page 30: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Page 31: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Autosign  script

Page 32: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Certsigner setupMaster • Write autosigning script • Configure autosigning script

Nodes • Put secrets into /etc/puppet/csr_attributes.yaml

ONE Client • Pass secret through Userdata

Page 33: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

CSR Extension RequestsUUID pp_uuid

Instance ID pp_instance_id

Image Name pp_image_name

Preshared Key pp_preshared_key

Role pp_role (still to come)

Private Private, site-specific attributes

Page 34: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Building images

Page 35: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Building images• invent ‘fake’ hostnames

<image-name>.images.example.com

• use Puppet at instance launch to ‘personalize’ image

Page 36: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Masterless: puppet apply# yum -y install puppet

# git clone https://git.example.org/manifests

# export FACTER_hostname=img1.images.example.com

# puppet apply --modulepath manifests/modules/ \ manifests/site.pp

# rm -rf manifests/

Page 37: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Masterless: puppet apply• easy to set up

• leaves no trace on the Puppet master

• no PuppetDB

• no Node Classifier

Page 38: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

With master: puppet agent• those pesky SSL certificates again

• pregenerate and copy into builder

• certsigner + allow_duplicate_certs on master

• uses full master infrastructure

Page 39: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Managing ONE infrastructure

Page 40: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

epost-dev/opennebula-puppet-module

Page 41: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

ONE Puppet Moduleone Install ONE Master/Sunstone

onehost Create ONE Host

oneimage Create ONE Image

onetemplate Create ONE template

onevnet Create ONE net

Page 42: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Provisioning hosts with Razor

Page 43: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Razor in a nutshell• iPXE

• Node Discovery

• Stay focussed

Page 44: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

How it worksMicrokernel sends facts

Page 45: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

How it worksMatch Tags

Page 46: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

How it worksFind Policy

Page 47: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

How it worksBasic OS installed

Managed by Puppet

Page 48: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Moving pieces

Repo What to install ISO contents

Task How to install Installer scripts

Broker How to manage PE agent install

Tag Where to install Named match rule

Policy Combine it all Ordered table

Page 49: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Summary• Puppet forge for module sharing

• puppetlabs-aws module

• mrzarquon’s certsigner

• epost-dev’s opennebula-puppet-module

• Razor for flexible provisioning of hardware

Page 50: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Questions ?

Page 51: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Links• http://forge.puppetlabs.com

• puppetlabs/puppetlabs-aws module

• https://github.com/ahpook/mrzarquon-certsigner/tree/eric0_wip

• http://watzmann.net/blog/2014/06/puppet-autosign-policy.html

Page 52: OpenNebula Conf 2014 | Puppet and OpenNebula - David Lutterkort

Presented by

Links (cont’d)• https://github.com/epost-dev/opennebula-puppet-module

• https://github.com/puppetlabs/razor-server

• Puppet Enterprise: http://puppetlabs.com/puppet/puppet-enterprise


Recommended