SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Building a Cauldron for Chef to
Cook In
Jonathan Altman
@async_io
For DevOpsDC August 2013
Wednesday, August 14, 2013
Background
• 12 years architecting at a leading SaaS software provider
• Started 2 companies in August 2012
• One is a SaaS/product based company
• One is a services firm
• Customers have access to their source
• No time to waste: automation good
Wednesday, August 14, 2013
What is a Cauldron?
• A complete (as you want) code/artifact management and build/deployment system
• Chef server
• Git server
• Automated build system e.g. Jenkins (eventually)
• JIRA server?
• Group chat server? (IRC or XMPP)
• With a real cert
Wednesday, August 14, 2013
But SaaS is Awesome!
• Yes. Yes it is.
• Github
• Hosted Chef
• ShiningPanda, CloudBees, JenkinsHosting, travis-ci.com
• Jira OnDemand
• HipChat (or https://grove.io/ for hosted IRC, or Google+ hangouts)
Wednesday, August 14, 2013
The 3 R’s
• Redundancy
• Resiliency
• Revelation
Wednesday, August 14, 2013
Redundancy
• Does a good backup strategy ever keep just one copy of something?
• Disaster Recovery: how do you recover with your backups?
• At least for git, chef, and CI you can use multiple servers
• git “just works” in this model
• The knife plugin has backup/restore capability for example
• Not sure how to integrate with Opscode-hosted chef
Wednesday, August 14, 2013
Resiliency
• Tradeoff between your ability to deliver uptime and their motivation
to address their issues that affect your uptime
• Honeypot: tradeoff again. github and hosted chef server are well
protected, but a big, attractive attack vector. Your server, not so
much; but is it secure?
• Ability to assign the amount of compute resources you need to
deliver the performance, uptime, and redundancy you want
Wednesday, August 14, 2013
Revelation
• You will have the tools and ability to help yourself
• Git != Github, for example
Wednesday, August 14, 2013
A Cauldron: workstation
• Client workstation with
• omnibus installer (http://www.opscode.com/chef/install/)
• knife-server plugin (http://fnichol.github.io/knife-server/)
• git client software installed on it
• You could do this on your workstation’s host OS, but using aVM
simplifies/isolates having multiple cauldrons
Wednesday, August 14, 2013
Create Cauldron Workstation
Cocytus:vagrant_servers jonathan$ mkdir cauldron_ws
Cocytus:vagrant_servers jonathan$ cd cauldron_ws
Cocytus:cauldron_ws jonathan$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Cocytus:cauldron_ws jonathan$
Wednesday, August 14, 2013
Bootstrap theVagrant
Cocytus:cauldron_ws jonathan$ vi Vagrantfile # Set up your config here
Cocytus:cauldron_ws jonathan$ vagrant up
[default] Box base was not found. Fetching box from specified URL...
[vagrant] Downloading with Vagrant::Downloaders::HTTP...
[vagrant] Extracting box...
[vagrant] Verifying box...
[vagrant] Cleaning up downloaded box...
[default] Importing base box 'base'...
{bunch of lines deleted ...}
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
VM must be created before running this command. Run `vagrant up` first.
Cocytus:cauldron_ws jonathan$
Wednesday, August 14, 2013
Install chef omnibus
Cocytus:cauldron_ws jonathan$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)
* Documentation: https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:23:18 2012 from 10.0.2.2
vagrant@precise64:~$ sudo apt-get install build-essential curl
[...bunch of output deleted]
vagrant@precise64:~$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6790 100 6790 0 0 22442 0 --:--:-- --:--:-- --:--:-- 36902
Downloading Chef for ubuntu...
Installing Chef
Selecting previously unselected package chef.
(Reading database ... 51127 files and directories currently installed.)
Unpacking chef (from .../tmp.8PmNsIUQ/chef__amd64.deb) ...
Setting up chef (11.6.0-1.ubuntu.12.04) ...
Thank you for installing Chef!
vagrant@precise64:~$
Wednesday, August 14, 2013
Knife-server plugin
• knife plugin to create chef servers on the command line running on
ubuntu:
• on ec2 (requires the knife-ec2 plugin as well)
• on linode (requires the knife-linode plugin)
• on an already-running instance (“standalone”)
Wednesday, August 14, 2013
Install knife-server Plugin
vagrant@precise64:~$ sudo /opt/chef/embedded/bin/gem install knife-server
--no-ri --no-rdoc
Building native extensions. This could take a while...
Fetching: ruby-hmac-0.4.0.gem (100%)
Fetching: fog-1.14.0.gem (100%)
Fetching: knife-server-1.1.0.gem (100%)
Successfully installed nokogiri-1.6.0
Successfully installed ruby-hmac-0.4.0
Successfully installed fog-1.14.0
Successfully installed knife-server-1.1.0
4 gems installed
vagrant@precise64:~$
Wednesday, August 14, 2013
Make a Server (Standalone)
• Standalone there is a bunch of other stuff to get right:
• Better if the server you’re installing on has root with ssh
authorized_keys set up to your workstation’s ssh private key
• Need both private and public part of key on workstation because of
http://tickets.opscode.com/browse/CHEF-4180
Wednesday, August 14, 2013
Server Bootstrapping...
knife server bootstrap standalone --node-name cauldron.your.domain --host
xxx.yyy.zzz.aaa
[hundreds of lines of output deleted ...]
192.241.179.65 Recipe: chef-server::erchef
192.241.179.65 * service[erchef] action restart
192.241.179.65
192.241.179.65 - restart service service[erchef]
192.241.179.65
192.241.179.65
192.241.179.65 Chef Client finished, 244 resources updated
192.241.179.65 chef-server Reconfigured!
192.241.179.65 Server reconfigured
192.241.179.65 -----> Bootstrapping Chef Server on cauldron.async.io is
complete.
If you want the web UI enabled, include --web-ui-enable
Wednesday, August 14, 2013
Voila?
Wednesday, August 14, 2013
uhh...Voila!
Wednesday, August 14, 2013
IfYou Used --web-ui-enable
BTW, login right now and change the password! Or: turn off web-ui
Wednesday, August 14, 2013
git server
• Several (sane) choices for hosting your own git:
• Gitolite: http://gitolite.com/gitolite/
• Gitlab: http://gitlab.org/
• Gitblit: https://code.google.com/p/gitblit/
• gitweb: https://git.wiki.kernel.org/index.php/Gitweb (please don’t)
• On windows or OSX, hosted github ($$)
• We are going to use gitolite
Wednesday, August 14, 2013
Gitolite
• Gitlab is cool, tries to reproduce as much of github other web-based
git hosting as possible. Installation? Several pages of hand-invoking
• Gitblit: same goal as gitlab, but built in java. So: easy install, but big and
not using the official git binaries so compatibility?
• Gitosis is dead if you run across it
• Gitweb: just don’t
Wednesday, August 14, 2013
Install
• Put the id_rsa.pub key of the user you want to admin gitolite as on the
cauldron server, but name it username.pub where username is the
username you want to be known as on the gitolite server
# get the software
git clone git://github.com/sitaramc/gitolite
# install it
gitolite/install -ln
# setup the initial repos with your key
gitolite setup -pk your-name.pub
Wednesday, August 14, 2013
Configure gitolite
• Back on your workstation machine:
git clone git@host:gitolite-admin.git
• Add your git repository setups in the cloned conf/gitolite.conf file
• Example, jonathan is the owner of the heatNode repository (and there
is a jonathan.pub RSA public key):
repo heatNode
RW+ = jonathan
Wednesday, August 14, 2013
You have a cauldron
• You can git add remote your cauldron plus any other git servers such as
github to any git repository you have
git remote add origin git@cauldron.your.domain:name_of_your_repo.git
git remote add github git@github.com:name_of_your_repo.git
• The name after git remote add is arbitrary! “origin” is a convention but not
required
• You git push/pull from all external servers so you have redundant copies
• Your cauldron is now a chef server
Wednesday, August 14, 2013
Put a real cert on the box
• As of omnibus Chef 11, webserver is nginx. Edit the ssl config to put a
real server on to get rid of the big red untrusted cert warning
• Check out http://chr4.org/blog/2013/08/01/howto-use-chef-with-ssl/
for steps on how to do it with chef
• Probably a good idea, as chef-ctl-reconfigure might blast manual
changes
Wednesday, August 14, 2013
Thank you. Questions?
Also, thanks to @nathenharvey and @devopsdc for letting me present, @devopsdc
and @fnichol (Fletcher Nichol) for the awesome real-time interactive improvements
to my presentation, and @fnichol for the awesome knife-server plugin!
Wednesday, August 14, 2013

Weitere ähnliche Inhalte

Was ist angesagt?

“warpdrive”, making Python web application deployment magically easy.
“warpdrive”, making Python web application deployment magically easy.“warpdrive”, making Python web application deployment magically easy.
“warpdrive”, making Python web application deployment magically easy.Graham Dumpleton
 
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltStack
 
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test EverythingPortland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test EverythingPuppet
 
Augeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet treeAugeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet treeJulien Pivotto
 
uWSGI - Swiss army knife for your Python web apps
uWSGI - Swiss army knife for your Python web appsuWSGI - Swiss army knife for your Python web apps
uWSGI - Swiss army knife for your Python web appsTomislav Raseta
 
Salting new ground one man ops from scratch
Salting new ground   one man ops from scratchSalting new ground   one man ops from scratch
Salting new ground one man ops from scratchJay Harrison
 
Chef 11 Preview/Chef for OpenStack
Chef 11 Preview/Chef for OpenStackChef 11 Preview/Chef for OpenStack
Chef 11 Preview/Chef for OpenStackMatt Ray
 
Puppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionPuppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionJoshua Thijssen
 
EuroPython 2014 - How we switched our 800+ projects from Apache to uWSGI
EuroPython 2014 - How we switched our 800+ projects from Apache to uWSGIEuroPython 2014 - How we switched our 800+ projects from Apache to uWSGI
EuroPython 2014 - How we switched our 800+ projects from Apache to uWSGIMax Tepkeev
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)Soshi Nemoto
 
Atlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
Atlanta OpenStack 2014 Chef for OpenStack Deployment WorkshopAtlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
Atlanta OpenStack 2014 Chef for OpenStack Deployment WorkshopMatt Ray
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)Soshi Nemoto
 
An example Hadoop Install
An example Hadoop InstallAn example Hadoop Install
An example Hadoop InstallMike Frampton
 
DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!Jeff Geerling
 
Chef & OpenStack: OSCON 2014
Chef & OpenStack: OSCON 2014Chef & OpenStack: OSCON 2014
Chef & OpenStack: OSCON 2014Matt Ray
 
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and ServerspecTest Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and ServerspecYury Tsarev
 
Git lab installation guide
Git lab installation guideGit lab installation guide
Git lab installation guideRaiful Hasan
 
Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)Ivan Rossi
 

Was ist angesagt? (20)

“warpdrive”, making Python web application deployment magically easy.
“warpdrive”, making Python web application deployment magically easy.“warpdrive”, making Python web application deployment magically easy.
“warpdrive”, making Python web application deployment magically easy.
 
Ansible Crash Course
Ansible Crash CourseAnsible Crash Course
Ansible Crash Course
 
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
 
vBACD - Introduction to Opscode Chef - 2/29
vBACD - Introduction to Opscode Chef - 2/29vBACD - Introduction to Opscode Chef - 2/29
vBACD - Introduction to Opscode Chef - 2/29
 
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test EverythingPortland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
 
Augeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet treeAugeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet tree
 
uWSGI - Swiss army knife for your Python web apps
uWSGI - Swiss army knife for your Python web appsuWSGI - Swiss army knife for your Python web apps
uWSGI - Swiss army knife for your Python web apps
 
Salting new ground one man ops from scratch
Salting new ground   one man ops from scratchSalting new ground   one man ops from scratch
Salting new ground one man ops from scratch
 
Chef 11 Preview/Chef for OpenStack
Chef 11 Preview/Chef for OpenStackChef 11 Preview/Chef for OpenStack
Chef 11 Preview/Chef for OpenStack
 
Puppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionPuppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 Edition
 
EuroPython 2014 - How we switched our 800+ projects from Apache to uWSGI
EuroPython 2014 - How we switched our 800+ projects from Apache to uWSGIEuroPython 2014 - How we switched our 800+ projects from Apache to uWSGI
EuroPython 2014 - How we switched our 800+ projects from Apache to uWSGI
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
 
Atlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
Atlanta OpenStack 2014 Chef for OpenStack Deployment WorkshopAtlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
Atlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)
 
An example Hadoop Install
An example Hadoop InstallAn example Hadoop Install
An example Hadoop Install
 
DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!
 
Chef & OpenStack: OSCON 2014
Chef & OpenStack: OSCON 2014Chef & OpenStack: OSCON 2014
Chef & OpenStack: OSCON 2014
 
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and ServerspecTest Driven Infrastructure with Docker, Test Kitchen and Serverspec
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
 
Git lab installation guide
Git lab installation guideGit lab installation guide
Git lab installation guide
 
Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)
 

Andere mochten auch

Using Jython To Prototype Mahout Code
Using Jython To Prototype Mahout CodeUsing Jython To Prototype Mahout Code
Using Jython To Prototype Mahout Codeasync_io
 
Guide to AngularJS Services - NOVA MEAN August 2014
Guide to AngularJS Services - NOVA MEAN August 2014Guide to AngularJS Services - NOVA MEAN August 2014
Guide to AngularJS Services - NOVA MEAN August 2014async_io
 
NOVA MEAN - Why the M in MEAN is a Significant Contributor to Its Success
NOVA MEAN - Why the M in MEAN is a Significant Contributor to Its SuccessNOVA MEAN - Why the M in MEAN is a Significant Contributor to Its Success
NOVA MEAN - Why the M in MEAN is a Significant Contributor to Its Successasync_io
 
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!async_io
 
Lessons Learned from Building a REST API on Google App Engine
Lessons Learned from Building a REST API on Google App EngineLessons Learned from Building a REST API on Google App Engine
Lessons Learned from Building a REST API on Google App Engineasync_io
 
Javascript Promises/Q Library
Javascript Promises/Q LibraryJavascript Promises/Q Library
Javascript Promises/Q Libraryasync_io
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentationasync_io
 

Andere mochten auch (7)

Using Jython To Prototype Mahout Code
Using Jython To Prototype Mahout CodeUsing Jython To Prototype Mahout Code
Using Jython To Prototype Mahout Code
 
Guide to AngularJS Services - NOVA MEAN August 2014
Guide to AngularJS Services - NOVA MEAN August 2014Guide to AngularJS Services - NOVA MEAN August 2014
Guide to AngularJS Services - NOVA MEAN August 2014
 
NOVA MEAN - Why the M in MEAN is a Significant Contributor to Its Success
NOVA MEAN - Why the M in MEAN is a Significant Contributor to Its SuccessNOVA MEAN - Why the M in MEAN is a Significant Contributor to Its Success
NOVA MEAN - Why the M in MEAN is a Significant Contributor to Its Success
 
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
 
Lessons Learned from Building a REST API on Google App Engine
Lessons Learned from Building a REST API on Google App EngineLessons Learned from Building a REST API on Google App Engine
Lessons Learned from Building a REST API on Google App Engine
 
Javascript Promises/Q Library
Javascript Promises/Q LibraryJavascript Promises/Q Library
Javascript Promises/Q Library
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 

Ähnlich wie Building a Cauldron for Chef to Cook In

DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungKAI CHU CHUNG
 
Making Spinnaker Go @ Stitch Fix
Making Spinnaker Go @ Stitch FixMaking Spinnaker Go @ Stitch Fix
Making Spinnaker Go @ Stitch FixDiana Tkachenko
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamRachid Zarouali
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker, Inc.
 
How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneVEXXHOST Private Cloud
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis OverviewLeo Lorieri
 
Docker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps ChicagoDocker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps Chicagobridgetkromhout
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Jian-Hong Pan
 
Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04PlanetOdoo
 
Docker Workshop for beginner
Docker Workshop for beginnerDocker Workshop for beginner
Docker Workshop for beginnerJirayut Nimsaeng
 
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)Ontico
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with dockerGiacomo Bagnoli
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouJ On The Beach
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMAlexander Shopov
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoHannes Hapke
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017MarcinStachniuk
 
oSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfoSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfAdrianSchrter1
 
Docker in Production: Reality, Not Hype
Docker in Production: Reality, Not HypeDocker in Production: Reality, Not Hype
Docker in Production: Reality, Not Hypebridgetkromhout
 

Ähnlich wie Building a Cauldron for Chef to Cook In (20)

DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
 
Making Spinnaker Go @ Stitch Fix
Making Spinnaker Go @ Stitch FixMaking Spinnaker Go @ Stitch Fix
Making Spinnaker Go @ Stitch Fix
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
Docker, c'est bonheur !
Docker, c'est bonheur !Docker, c'est bonheur !
Docker, c'est bonheur !
 
How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub Clone
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
Docker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps ChicagoDocker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps Chicago
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
 
Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04Odoo 13 installation on ubuntu 19.04
Odoo 13 installation on ubuntu 19.04
 
Docker Workshop for beginner
Docker Workshop for beginnerDocker Workshop for beginner
Docker Workshop for beginner
 
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camou
 
Oracle API Gateway Installation
Oracle API Gateway InstallationOracle API Gateway Installation
Oracle API Gateway Installation
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPM
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize Django
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
oSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfoSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdf
 
Docker in Production: Reality, Not Hype
Docker in Production: Reality, Not HypeDocker in Production: Reality, Not Hype
Docker in Production: Reality, Not Hype
 

Kürzlich hochgeladen

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Kürzlich hochgeladen (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

Building a Cauldron for Chef to Cook In

  • 1. Building a Cauldron for Chef to Cook In Jonathan Altman @async_io For DevOpsDC August 2013 Wednesday, August 14, 2013
  • 2. Background • 12 years architecting at a leading SaaS software provider • Started 2 companies in August 2012 • One is a SaaS/product based company • One is a services firm • Customers have access to their source • No time to waste: automation good Wednesday, August 14, 2013
  • 3. What is a Cauldron? • A complete (as you want) code/artifact management and build/deployment system • Chef server • Git server • Automated build system e.g. Jenkins (eventually) • JIRA server? • Group chat server? (IRC or XMPP) • With a real cert Wednesday, August 14, 2013
  • 4. But SaaS is Awesome! • Yes. Yes it is. • Github • Hosted Chef • ShiningPanda, CloudBees, JenkinsHosting, travis-ci.com • Jira OnDemand • HipChat (or https://grove.io/ for hosted IRC, or Google+ hangouts) Wednesday, August 14, 2013
  • 5. The 3 R’s • Redundancy • Resiliency • Revelation Wednesday, August 14, 2013
  • 6. Redundancy • Does a good backup strategy ever keep just one copy of something? • Disaster Recovery: how do you recover with your backups? • At least for git, chef, and CI you can use multiple servers • git “just works” in this model • The knife plugin has backup/restore capability for example • Not sure how to integrate with Opscode-hosted chef Wednesday, August 14, 2013
  • 7. Resiliency • Tradeoff between your ability to deliver uptime and their motivation to address their issues that affect your uptime • Honeypot: tradeoff again. github and hosted chef server are well protected, but a big, attractive attack vector. Your server, not so much; but is it secure? • Ability to assign the amount of compute resources you need to deliver the performance, uptime, and redundancy you want Wednesday, August 14, 2013
  • 8. Revelation • You will have the tools and ability to help yourself • Git != Github, for example Wednesday, August 14, 2013
  • 9. A Cauldron: workstation • Client workstation with • omnibus installer (http://www.opscode.com/chef/install/) • knife-server plugin (http://fnichol.github.io/knife-server/) • git client software installed on it • You could do this on your workstation’s host OS, but using aVM simplifies/isolates having multiple cauldrons Wednesday, August 14, 2013
  • 10. Create Cauldron Workstation Cocytus:vagrant_servers jonathan$ mkdir cauldron_ws Cocytus:vagrant_servers jonathan$ cd cauldron_ws Cocytus:cauldron_ws jonathan$ vagrant init A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. Cocytus:cauldron_ws jonathan$ Wednesday, August 14, 2013
  • 11. Bootstrap theVagrant Cocytus:cauldron_ws jonathan$ vi Vagrantfile # Set up your config here Cocytus:cauldron_ws jonathan$ vagrant up [default] Box base was not found. Fetching box from specified URL... [vagrant] Downloading with Vagrant::Downloaders::HTTP... [vagrant] Extracting box... [vagrant] Verifying box... [vagrant] Cleaning up downloaded box... [default] Importing base box 'base'... {bunch of lines deleted ...} [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! VM must be created before running this command. Run `vagrant up` first. Cocytus:cauldron_ws jonathan$ Wednesday, August 14, 2013
  • 12. Install chef omnibus Cocytus:cauldron_ws jonathan$ vagrant ssh Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64) * Documentation: https://help.ubuntu.com/ Welcome to your Vagrant-built virtual machine. Last login: Fri Sep 14 06:23:18 2012 from 10.0.2.2 vagrant@precise64:~$ sudo apt-get install build-essential curl [...bunch of output deleted] vagrant@precise64:~$ curl -L https://www.opscode.com/chef/install.sh | sudo bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 6790 100 6790 0 0 22442 0 --:--:-- --:--:-- --:--:-- 36902 Downloading Chef for ubuntu... Installing Chef Selecting previously unselected package chef. (Reading database ... 51127 files and directories currently installed.) Unpacking chef (from .../tmp.8PmNsIUQ/chef__amd64.deb) ... Setting up chef (11.6.0-1.ubuntu.12.04) ... Thank you for installing Chef! vagrant@precise64:~$ Wednesday, August 14, 2013
  • 13. Knife-server plugin • knife plugin to create chef servers on the command line running on ubuntu: • on ec2 (requires the knife-ec2 plugin as well) • on linode (requires the knife-linode plugin) • on an already-running instance (“standalone”) Wednesday, August 14, 2013
  • 14. Install knife-server Plugin vagrant@precise64:~$ sudo /opt/chef/embedded/bin/gem install knife-server --no-ri --no-rdoc Building native extensions. This could take a while... Fetching: ruby-hmac-0.4.0.gem (100%) Fetching: fog-1.14.0.gem (100%) Fetching: knife-server-1.1.0.gem (100%) Successfully installed nokogiri-1.6.0 Successfully installed ruby-hmac-0.4.0 Successfully installed fog-1.14.0 Successfully installed knife-server-1.1.0 4 gems installed vagrant@precise64:~$ Wednesday, August 14, 2013
  • 15. Make a Server (Standalone) • Standalone there is a bunch of other stuff to get right: • Better if the server you’re installing on has root with ssh authorized_keys set up to your workstation’s ssh private key • Need both private and public part of key on workstation because of http://tickets.opscode.com/browse/CHEF-4180 Wednesday, August 14, 2013
  • 16. Server Bootstrapping... knife server bootstrap standalone --node-name cauldron.your.domain --host xxx.yyy.zzz.aaa [hundreds of lines of output deleted ...] 192.241.179.65 Recipe: chef-server::erchef 192.241.179.65 * service[erchef] action restart 192.241.179.65 192.241.179.65 - restart service service[erchef] 192.241.179.65 192.241.179.65 192.241.179.65 Chef Client finished, 244 resources updated 192.241.179.65 chef-server Reconfigured! 192.241.179.65 Server reconfigured 192.241.179.65 -----> Bootstrapping Chef Server on cauldron.async.io is complete. If you want the web UI enabled, include --web-ui-enable Wednesday, August 14, 2013
  • 19. IfYou Used --web-ui-enable BTW, login right now and change the password! Or: turn off web-ui Wednesday, August 14, 2013
  • 20. git server • Several (sane) choices for hosting your own git: • Gitolite: http://gitolite.com/gitolite/ • Gitlab: http://gitlab.org/ • Gitblit: https://code.google.com/p/gitblit/ • gitweb: https://git.wiki.kernel.org/index.php/Gitweb (please don’t) • On windows or OSX, hosted github ($$) • We are going to use gitolite Wednesday, August 14, 2013
  • 21. Gitolite • Gitlab is cool, tries to reproduce as much of github other web-based git hosting as possible. Installation? Several pages of hand-invoking • Gitblit: same goal as gitlab, but built in java. So: easy install, but big and not using the official git binaries so compatibility? • Gitosis is dead if you run across it • Gitweb: just don’t Wednesday, August 14, 2013
  • 22. Install • Put the id_rsa.pub key of the user you want to admin gitolite as on the cauldron server, but name it username.pub where username is the username you want to be known as on the gitolite server # get the software git clone git://github.com/sitaramc/gitolite # install it gitolite/install -ln # setup the initial repos with your key gitolite setup -pk your-name.pub Wednesday, August 14, 2013
  • 23. Configure gitolite • Back on your workstation machine: git clone git@host:gitolite-admin.git • Add your git repository setups in the cloned conf/gitolite.conf file • Example, jonathan is the owner of the heatNode repository (and there is a jonathan.pub RSA public key): repo heatNode RW+ = jonathan Wednesday, August 14, 2013
  • 24. You have a cauldron • You can git add remote your cauldron plus any other git servers such as github to any git repository you have git remote add origin git@cauldron.your.domain:name_of_your_repo.git git remote add github git@github.com:name_of_your_repo.git • The name after git remote add is arbitrary! “origin” is a convention but not required • You git push/pull from all external servers so you have redundant copies • Your cauldron is now a chef server Wednesday, August 14, 2013
  • 25. Put a real cert on the box • As of omnibus Chef 11, webserver is nginx. Edit the ssl config to put a real server on to get rid of the big red untrusted cert warning • Check out http://chr4.org/blog/2013/08/01/howto-use-chef-with-ssl/ for steps on how to do it with chef • Probably a good idea, as chef-ctl-reconfigure might blast manual changes Wednesday, August 14, 2013
  • 26. Thank you. Questions? Also, thanks to @nathenharvey and @devopsdc for letting me present, @devopsdc and @fnichol (Fletcher Nichol) for the awesome real-time interactive improvements to my presentation, and @fnichol for the awesome knife-server plugin! Wednesday, August 14, 2013