71
Bare Metal to OpenStack with Razor and Chef Egle Sigler, Rackspace Matt Ray, Opscode

Bare Metal to OpenStack with Razor and Chef

Embed Size (px)

DESCRIPTION

Slides from the OpenStack Spring 2013 Summit workshop presented by Egle Sigler (@eglute) and Matt Ray (@mattray) from Rackspace and Opscode respectively. Please refer to http://anystacker.com/ for additional content.

Citation preview

Page 1: Bare Metal to OpenStack with Razor and Chef

Bare Metal to OpenStack with Razor and ChefEgle Sigler RackspaceMatt Ray Opscode

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Get Razor Appliance

USB keys (thanks to eNovance Suse and Piston)

Wireless network razor5 and razor24 (thank you Rackers)

Start downloadingcopying

http192168138080examplesrazortar

Setting up Razor Appliance in Virtual Box

Must have extension pack installed Get it here httpswwwvirtualboxorgwikiDownloads

Verify extension pack is installed VBoxManage list extpacks

FileImport Appliance

Default options for everything

Setting up Razor Appliance in VMware Fusion

FileImport select ovf file ignore warnings

FileImport Appliance

Set up two nics for the VM second one internal

Make sure the DHCP for internal nic is turned off under VMware FusionPreferencesNetwork

Fusion Network 1

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 2: Bare Metal to OpenStack with Razor and Chef

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Get Razor Appliance

USB keys (thanks to eNovance Suse and Piston)

Wireless network razor5 and razor24 (thank you Rackers)

Start downloadingcopying

http192168138080examplesrazortar

Setting up Razor Appliance in Virtual Box

Must have extension pack installed Get it here httpswwwvirtualboxorgwikiDownloads

Verify extension pack is installed VBoxManage list extpacks

FileImport Appliance

Default options for everything

Setting up Razor Appliance in VMware Fusion

FileImport select ovf file ignore warnings

FileImport Appliance

Set up two nics for the VM second one internal

Make sure the DHCP for internal nic is turned off under VMware FusionPreferencesNetwork

Fusion Network 1

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 3: Bare Metal to OpenStack with Razor and Chef

Get Razor Appliance

USB keys (thanks to eNovance Suse and Piston)

Wireless network razor5 and razor24 (thank you Rackers)

Start downloadingcopying

http192168138080examplesrazortar

Setting up Razor Appliance in Virtual Box

Must have extension pack installed Get it here httpswwwvirtualboxorgwikiDownloads

Verify extension pack is installed VBoxManage list extpacks

FileImport Appliance

Default options for everything

Setting up Razor Appliance in VMware Fusion

FileImport select ovf file ignore warnings

FileImport Appliance

Set up two nics for the VM second one internal

Make sure the DHCP for internal nic is turned off under VMware FusionPreferencesNetwork

Fusion Network 1

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 4: Bare Metal to OpenStack with Razor and Chef

Setting up Razor Appliance in Virtual Box

Must have extension pack installed Get it here httpswwwvirtualboxorgwikiDownloads

Verify extension pack is installed VBoxManage list extpacks

FileImport Appliance

Default options for everything

Setting up Razor Appliance in VMware Fusion

FileImport select ovf file ignore warnings

FileImport Appliance

Set up two nics for the VM second one internal

Make sure the DHCP for internal nic is turned off under VMware FusionPreferencesNetwork

Fusion Network 1

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 5: Bare Metal to OpenStack with Razor and Chef

Setting up Razor Appliance in VMware Fusion

FileImport select ovf file ignore warnings

FileImport Appliance

Set up two nics for the VM second one internal

Make sure the DHCP for internal nic is turned off under VMware FusionPreferencesNetwork

Fusion Network 1

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 6: Bare Metal to OpenStack with Razor and Chef

Fusion Network 1

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 7: Bare Metal to OpenStack with Razor and Chef

Fusion Network 2

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 8: Bare Metal to OpenStack with Razor and Chef

Fusion Network 2 Preferences

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 9: Bare Metal to OpenStack with Razor and Chef

Razor ApplianceBuilt on Ubuntu Server 1204 for this tutorial

Must have two nics one for external one for internal traffic

Comes with

Razor

TFTP service

DHCP service

MongoDB

Chef Server

Rackspace Private Cloud Cookbooks

MicroKernel and Ubuntu Server ISO

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 10: Bare Metal to OpenStack with Razor and Chef

Logging InUser name anystacker

Password razor

Login and switch to root

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 11: Bare Metal to OpenStack with Razor and Chef

About Razor

Provisioning solution for hardware

Initially developed by EMC and Puppet

Open sourced as a Puppet Labs project

Install using Puppet Chef or manual

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 12: Bare Metal to OpenStack with Razor and Chef

About Razor

Auto-Discovered Real-Time Inventory Data

Dynamic Image Selection

Model-Based Provisioning

APIs and Plug-in Architecture

Metal-to-Cloud Application Lifecycle Management

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 13: Bare Metal to OpenStack with Razor and Chef

Razor State of Things

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 14: Bare Metal to OpenStack with Razor and Chef

Razor State of Things

Razor is awesome

Still not a 1 release

MongoDB may cause concurrency issues

Policy limit counts may not be enforced

Some other issues

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 15: Bare Metal to OpenStack with Razor and Chef

Bright and Shiny Future

v10 release focus on stability and scalability

Beta version in Q3

support concurrency

scale well

easy to install upgrade and test

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 16: Bare Metal to OpenStack with Razor and Chef

Bright and Shiny Future

After v10

Windows support

maybe AIX and Solaris support

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 17: Bare Metal to OpenStack with Razor and Chef

Connecting to Razor VM

VirtualBox

ssh -p 2223 localhost

VMware Fusion

get IP and ssh to it

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 18: Bare Metal to OpenStack with Razor and Chef

Hands On Razor

User name anystacker

Password razor

Switch to root

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 19: Bare Metal to OpenStack with Razor and Chef

Verify Status

Verify razor is runningrootrazor~ optrazorbinrazor_daemonrb status

If notrootrazor~ optrazorbinrazor_daemonrb start

Check networks

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 20: Bare Metal to OpenStack with Razor and Chef

ifconfigrootrazor~ ifconfig

eth1 Link encapEthernet HWaddr 000c29aaf965 inet addr17216161 Bcast1721616255 Mask2552552550inet6 addr fe8020c29fffeaaf96564 ScopeLinkUP BROADCAST RUNNING MULTICAST MTU1500 Metric1RX packets7525 errors0 dropped0 overruns0 frame0TX packets19 errors0 dropped0 overruns0 carrier0collisions0 txqueuelen1000 RX bytes677489 (6774 KB) TX bytes2362 (23 KB)

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 21: Bare Metal to OpenStack with Razor and Chef

Razor Commands

add MikroKernel

add Image

add Model

add Policy

add Broker

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 22: Bare Metal to OpenStack with Razor and Chef

MicroKernel

Variant of Tiny Core Linux

Found here httpsgithubcompuppetlabsrazor-microkerneldownloads

Need to add it once

razor image add -t mk -p rz_mk_prod-image0930iso

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 23: Bare Metal to OpenStack with Razor and Chef

Add Image

razor image add -t os -p ubuntu-12042-server-amd64iso -n ubuntu_precise_server -v 12042

Attempting to add please wait

New image added successfully

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 24: Bare Metal to OpenStack with Razor and Chef

Added Image

UUID =gt 36Lrq9JMiRwvrw5rSruSjg Type =gt OS Install ISO Filename =gt ubuntu-12042-server-amd64iso Path =gt optrazorimageos36Lrq9JMiRwvrw5rSruSjg Status =gt Valid OS Name =gt ubuntu_precise_server OS Version =gt 12042

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 25: Bare Metal to OpenStack with Razor and Chef

Model

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg

Map image to built-in template

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 26: Bare Metal to OpenStack with Razor and Chef

ROOTRAZOR~ RAZOR MODEL TEMPLATEMODEL TEMPLATES TEMPLATE NAME DESCRIPTION DEBIAN_WHEEZY DEBIAN WHEEZY MODEL OPENSUSE_12 OPENSUSE SUSE 12 MODEL REDHAT_6 REDHAT 6 MODEL SLES_11 SLES 11 MODEL UBUNTU_ONEIRIC UBUNTU ONEIRIC MODEL UBUNTU_PRECISE UBUNTU PRECISE MODEL UBUNTU_PRECISE_IP_POOL UBUNTU PRECISE MODEL (IP POOL) VMWARE_ESXI_5 VMWARE ESXI 5 DEPLOYMENT CENTOS_6 CENTOS 6 MODEL ORACLELINUX_6 ORACLE LINUX 6 MODEL

Current Templates

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 27: Bare Metal to OpenStack with Razor and Chef

razor model add template -t ubuntu_precise -l install_precise_server -i 36Lrq9JMiRwvrw5rSruSjg--- Building Model (ubuntu_precise)

Please enter node hostname prefix (will append node number) (example node) default node(QUIT to cancel) gt Please enter local domain name (will be used in etchosts file) (example examplecom) default localdomain(QUIT to cancel) gt Please enter root password (gt 8 characters) (example Pssword) default test1234(QUIT to cancel) gt

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 28: Bare Metal to OpenStack with Razor and Chef

Model created Label =gt install_precise_server Template =gt linux_deploy Description =gt Ubuntu Precise Model UUID =gt 5VShcTIkmqrCXGUBM3UwLI Image UUID =gt 36Lrq9JMiRwvrw5rSruSjg

Model

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 29: Bare Metal to OpenStack with Razor and Chef

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_1 --enabled truePolicy created UUID =gt 6BtPna2OuYDcFPZr7ec1XU Line Number =gt 0 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_1] Model Label =gt install_precise_server Broker Target =gt none Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

PolicyMap model to a node

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 30: Bare Metal to OpenStack with Razor and Chef

Razor Brokers

Puppet

Chef

Script

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 31: Bare Metal to OpenStack with Razor and Chef

Brokers

rootrazor~ razor broker plugin

Available Broker PluginsPlugin Description chef Opscode Chef puppet PuppetLabs PuppetMaster

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 32: Bare Metal to OpenStack with Razor and Chef

Puppet Broker

If you use Puppet use it

Puppet Master hostname

Puppet version

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 33: Bare Metal to OpenStack with Razor and Chef

Chef BrokerBootstrap install

URL for Chef Server httpshostname

Chef version

validationpem file

validation client name

Chef environment

Omnibus installer script

alternative path for chef-client binary

run list

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 34: Bare Metal to OpenStack with Razor and Chef

Script BrokerVery new not on Razor appliance

Runs scripts on the newly installed node

Soon will gain special powers

pre and post scripts

run on Razor server for full integration with tools (signing Puppet certificate etc)

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 35: Bare Metal to OpenStack with Razor and Chef

Add Broker

razor broker add -p chef -n allinone -d openstack_allinone--- Building Broker (chef)

lots of stuff

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 36: Bare Metal to OpenStack with Razor and Chef

Add Broker to Policy

razor policy add -p linux_deploy -l precise_server -m 5VShcTIkmqrCXGUBM3UwLI -t nics_2 --enabled true

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 37: Bare Metal to OpenStack with Razor and Chef

razor policy update 28kDQSkIVWtp9DFOuQdAgK -b 4uiuMcQVoePYmKOc3QLeRE

UUID =gt 28kDQSkIVWtp9DFOuQdAgK Line Number =gt 1 Label =gt precise_server Enabled =gt true Template =gt linux_deploy Description =gt Policy for deploying a Linux-based operating system Tags =gt [nics_2] Model Label =gt install_precise_server Broker Target =gt allinone Currently Bound =gt 0 Maximum Bound =gt 0 Bound Counter =gt 0

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 38: Bare Metal to OpenStack with Razor and Chef

Boot VMCreate new VM

Make sure it has 2 nics both on private network

2 GB memory

80 GB disk

on VirtualBox set boot order

Connect to real internets otherwise chef client will not install

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 39: Bare Metal to OpenStack with Razor and Chef

anystackercom

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 40: Bare Metal to OpenStack with Razor and Chef

All in one OpenStack on your VM

If all goes well OpenStack should be running or your new VM

Try setting up additional policies and deploy different VMs

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 41: Bare Metal to OpenStack with Razor and Chef

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 42: Bare Metal to OpenStack with Razor and Chef

Agenda

Razor Introduction and Overview

Razor demonstration

OpenStack cookbook walkthrough

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 43: Bare Metal to OpenStack with Razor and Chef

currently Folsom release (v301)

open source Chef 11 server embedded

httpwwwrackspacecomcloudprivate

httpsgithubcomrcbops

httpsgithubcomrcbops-cookbooks

Rackspace Private Cloud

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 44: Bare Metal to OpenStack with Razor and Chef

Rackspace Private Cloud

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 45: Bare Metal to OpenStack with Razor and Chef

githubcomrcbopschef-cookbookstreev301

roles

environments

cookbooks

Rackspace Private Cloud

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 46: Bare Metal to OpenStack with Razor and Chef

cookbooksapache2aptawsbuild-essentialcindercollectdcollectd-graphitecollectd-pluginscorosyncdatabasedsherlangexerstackglancegraphitehaproxyhardwarehorizonkeepalivedkeystonekongmemcachedmodules

monitmonitoringmysqlmysql-openstacknovanova-networkntpopensshopensslopenstack-haosops-utilspostgresqlrabbitmqrabbitmq-openstackrsyslogrunitselinuxsosreportswiftsysctlxfsyum

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 47: Bare Metal to OpenStack with Razor and Chef

environmentsexamplejson name example_environment description Chef-server example environment cookbook_versions json_class ChefEnvironment chef_type environment default_attributes override_attributes developer_mode false monitoring metric_provider collectd procmon_provider monit glance image_upload true images [cirros precise]

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 48: Bare Metal to OpenStack with Razor and Chef

environmentsexamplejson nova ratelimit api enabled true volume enabled true libvirt virt_type qemu networks [ label public ipv4_cidr 1010100024 num_networks 1 network_size 255 bridge br100 bridge_dev eth0100 dns1 8888 dns2 8844 label private ipv4_cidr 17216101024 num_networks 1 network_size 255 bridge br101 bridge_dev eth0101 dns1 8888 dns2 8844 ]

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 49: Bare Metal to OpenStack with Razor and Chef

environmentsexamplejson

mysql allow_remote_root true root_network_acl osops_networks nova 1921681024 public 1921681024 management 1921681024 package_component folsom

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 50: Bare Metal to OpenStack with Razor and Chef

rolesallinonerbbaserbcinder-allrbcinder-apirbcinder-schedulerrbcinder-setuprbcinder-volumerbcollectd-clientrbcollectd-serverrbglance-apirbglance-registryrbglance-setuprbglancerbgraphiterbha-controller1rbha-controller2rbhaproxyrbhorizon-serverrbjenkins-allinonerbjenkins-computerbjenkins-controllerrbjenkins-glancerbjenkins-mysql-masterrbjenkins-nova-apirbkeystone-apirbkeystonerbmysql-masterrb

nova-api-ec2rbnova-api-os-computerbnova-apirbnova-certrbnova-controllerrbnova-misc-servicesrbnova-network-computerbnova-network-controllerrbnova-networkrbnova-schedulerrbnova-setuprbnova-vncproxyrbnova-volumerbopenstack-harbquantum-network-managerrbrabbitmq-serverrbrsyslog-clientrbrsyslog-serverrbsingle-computerbsingle-controllerrbswift-account-serverrbswift-all-in-onerbswift-container-serverrbswift-management-serverrbswift-object-serverrbswift-proxy-serverrbswift-setuprb

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 51: Bare Metal to OpenStack with Razor and Chef

rolesallinonerbname allinonedescription This will create an all-in-one Openstack clusterrun_list( role[single-controller] role[single-compute])

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 52: Bare Metal to OpenStack with Razor and Chef

expanded run listosops-utilspackages openssh ntp sosreport rsyslogdefault hardware osops-utilsdefault mysql-openstackserver erlangdefault rabbitmq-openstackserver keystoneserver keystonekeystone-api glancesetup glanceregistry glanceapi novanova-setup nova-networknova-controller novascheduler novaapi-ec2 novaapi-os-compute novavolume novanova-cert novavncproxy mysqlclient mysqlruby horizonserver nova-networknova-compute novacompute

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 53: Bare Metal to OpenStack with Razor and Chef

rolessingle-controllername single-controllerdescription Nova Controller (non-HA)run_list( role[base] role[mysql-master] role[rabbitmq-server] role[keystone] role[glance-setup] role[glance-registry] role[glance-api] role[nova-setup] role[nova-network-controller] role[nova-scheduler] role[nova-api-ec2] role[nova-api-os-compute] role[nova-volume] role[nova-cert] role[nova-vncproxy] role[horizon-server])

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 54: Bare Metal to OpenStack with Razor and Chef

rolesbasename basedescription Base role for a serverrun_list( recipe[osops-utilspackages] recipe[openssh] recipe[ntp] recipe[sosreport] recipe[rsyslogdefault] recipe[hardware] recipe[osops-utilsdefault])default_attributes( ntp =gt servers =gt [0poolntporg 1poolntporg 2poolntporg] )

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 55: Bare Metal to OpenStack with Razor and Chef

rolesmysql-mastername mysql-masterdescription Installs mysql and sets up replication (if 2 nodes with role)run_list( role[base] recipe[mysql-openstackserver])

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 56: Bare Metal to OpenStack with Razor and Chef

rolesrabbitmq-servername rabbitmq-serverdescription RabbitMQ Server (non-ha)run_list( role[base] recipe[erlangdefault] recipe[rabbitmq-openstackserver])

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 57: Bare Metal to OpenStack with Razor and Chef

roleskeystonename keystonedescription Keystone serverrun_list( role[base] recipe[keystoneserver] role[keystone-api])

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 58: Bare Metal to OpenStack with Razor and Chef

rolesglance-setupname glance-setupdescription sets up glance registry db and passwordsrun_list( role[base] recipe[glancesetup])

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 59: Bare Metal to OpenStack with Razor and Chef

rolesglance-registryname glance-registrydescription Glance Registry serverrun_list( role[base] recipe[glanceregistry])

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 60: Bare Metal to OpenStack with Razor and Chef

rolesglance-apiname glance-apidescription Glance API serverrun_list( role[base] recipe[glanceapi])

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 61: Bare Metal to OpenStack with Razor and Chef

rolesnova-setupname nova-setupdescription Where the setup operations for nova get runrun_list( recipe[novanova-setup])

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 62: Bare Metal to OpenStack with Razor and Chef

nova-network-controllername nova-network-controllerdescription Setup nova-networking for controller noderun_list( recipe[nova-networknova-controller])

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 63: Bare Metal to OpenStack with Razor and Chef

rolesnova-schedulername nova-schedulerdescription Nova schedulerrun_list( role[base] recipe[novascheduler])

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 64: Bare Metal to OpenStack with Razor and Chef

rolesnova-api-ec2name nova-api-ec2description Nova API EC2run_list( role[base] recipe[novaapi-ec2])

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 65: Bare Metal to OpenStack with Razor and Chef

nova-api-os-computename nova-api-os-computedescription Nova API for Computerun_list( role[base] recipe[novaapi-os-compute])

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 66: Bare Metal to OpenStack with Razor and Chef

rolesnova-volumename nova-volumedescription Nova Volume Servicerun_list( role[base] recipe[novavolume])

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 67: Bare Metal to OpenStack with Razor and Chef

rolesnova-certname nova-certdescription Nova Certificate Servicerun_list( role[base] recipe[novanova-cert])

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 68: Bare Metal to OpenStack with Razor and Chef

rolesnova-vncproxyname nova-vncproxydescription Nova VNC Proxyrun_list( role[base] recipe[novavncproxy])

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 69: Bare Metal to OpenStack with Razor and Chef

roleshorizon-servername horizon-serverdescription Horizon serverrun_list( role[base] recipe[mysqlclient] recipe[mysqlruby] recipe[horizonserver])

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 70: Bare Metal to OpenStack with Razor and Chef

rolessingle-computename single-computedescription Nova compute (with non-HA Controller)run_list( role[base] role[nova-network-compute] recipe[novacompute])

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks

Page 71: Bare Metal to OpenStack with Razor and Chef

Egle Sigler

eglesiglerrackspacecom

Matt Ray

mattopscodecom

Thanks