EXITING VACUUM INTEGRATING CONFIGURATION MANAGEMENT

Similar documents
Configuration Management: Stability in Your Pipeline sascha bates. Saturday, November 2, 13

This tutorial provides a basic understanding of the infrastructure and fundamental concepts of managing an infrastructure using Chef.

Chef. cd ~/scripts && find. -type f -name "*.sh" -exec rm -rf {} \; Wednesday, November 21, 12

Chef. Saving Time (and Money) With Automated Provisioning Trotter Cashion Hoopla Software

Docker & Chef. Containers. Containers and Docker 8/4/14. Linux containers (LXC) Single operating system Multiple isolated, working configurations

Deployment Patterns using Docker and Chef

Application Deployment. Softwaretechnik II 2012/13 Thomas Kowark

Continuous Delivery of your infrastructure. Christophe

Automation through Chef Opscode

Installing and Using Docker Toolbox for Mac OSX and Windows

Docker and Security. September 28, 2017 VASCAN Michael Irwin

Start Building CI/CD as Code The 7 Lessons Learnt from Deploying and Managing 100s of CI Environments

We are ready to serve Latest Testing Trends, Are you ready to learn?? New Batches Info

DevOps Technologies. for Deployment

DEVOPS COURSE CONTENT

Q. Are current attendees auto enrolled? A. Yes. No need to re-register. Watch your inbox for details on next week s webinar.

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

CONTINUOUS DELIVERY WITH DC/OS AND JENKINS

Pipeline as Code for your IAC. Kris

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

ANSIBLE BEST PRACTICES: THE ESSENTIALS

Manage MySQL like a devops sysadmin. Frédéric Descamps

USING GIT WITH, AND AUTOMATING MUNKI. Adam Reed

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

Orchestrate JBoss Middleware with Ansible Tower Red Hat Summit San Francisco

Con$nuous Deployment with Docker Andrew Aslinger. Oct

INDIGO PAAS TUTORIAL. ! Marica Antonacci RIA INFN-Bari

CS615 - Aspects of System Administration. Configuration Management

BASIC CHEF FLUENCY BADGE TOPICS

Deploying Rubrik Datos IO to Protect MongoDB Database on GCP

Deep Dive on AWS CodeStar

How to Deliver Privilege Access Management

ANSIBLE BEST PRACTICES: THE ESSENTIALS Ansible Automates: DC. Jamie

ESET Remote Administrator 6. Version 6.0 Product Details

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

From Dev/Ops to devops

1 Installation (briefly)

Cobbler and Puppet. Controlling your server builds. Eric Mandel and Jason Ford BlackMesh

CloudCenter for Developers

Power Up/Level Up: Supercharging Your Security Program for Cloud and DevOps. Rich

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

AWS Workshop: Scaling Windows Kevin Epstein CTO & AWS Solutions Architect

Continuous Integration using Docker & Jenkins

Automating ArcGIS Deployments Using Chef

DevOps Course Content

Using GitHub to Share with SparkFun a

I AM SYSADMIN (AND SO CAN YOU!) Friday, November 14, 14

OpenStack Havana All-in-One lab on VMware Workstation

Getting Started With Containers

DevOps Course Content

We re all developers now

How to Deploy Axon on VMware vcenter

Overhauling Dev Arch with Ansible Tower and Docker

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the

BPPM Patrol Agent Installation Steps on Linux and Automation Integration

Containerised Development of a Scientific Data Management System Ben Leighton, Andrew Freebairn, Ashley Sommer, Jonathan Yu, Simon Cox LAND AND WATER

Configuration management with Chef. Edd Dumbill RailsConf 2009

Think Small to Scale Big

Keeping Rails on the Tracks

Aspirin as a Service: Using the Cloud to Cure Security Headaches

Vagrant CookBook. A practical guide to Vagrant. Erika Heidi. This book is for sale at

Deployment Guide for Nuage Networks VSP

TELE301 Lab16 - The Secure Shell

Deployment Guide for Nuage Networks VSP

CHEF MANUAL. Installation and Configuration. SGT, Inc. Innovation Technology Center

Using DC/OS for Continuous Delivery

Git! Fundamentals. IT Pro Roundtable! June 17, 2014!! Justin Elliott! ITS / TLT! Classroom and Lab Computing!! Michael Potter!

Testing your puppet code

a career how and Tuesday, November 8, 2011

OpenShift 3 Technical Architecture. Clayton Coleman, Dan McPherson Lead Engineers

Immutable Server Generation. The New App Deployment. AXEL

Windows Just Got Chocolatey (Package Management)

DevOps Tooling from AWS

IBM Cloud for VMware Solutions vrealize Automation 7.2 Chef Integration

Lab 4: Bash Scripting

CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS

Continuous Delivery for Python Developers PyCon 8, 2017

Install latest version of Roundcube (Webmail) on CentOS 7

SECURE DEVELOPMENT KEEPING YOUR SECRETS PRIVATE

Bitnami JRuby for Huawei Enterprise Cloud

Multi-Cloud and Application Centric Modeling, Deployment and Management with Cisco CloudCenter (CliQr)

Elizabeth Lawler CEO & Co-Founder Conjur,

This document is intended for use by Nagios Administrators that want to use Slack for notifications.

How to monitor RedHat Enterprise Linux 5 or 6 using Microsoft System Center Operations Manager (SCOM) 2012 SP1 - Part 1

Tools and Process for Streamlining Mac Deployment. Tim Sutton Concordia University, Faculty of Fine Arts Montreal

Who is Docker and how he can help us? Heino Talvik

Cloud Foundry Bootcamp

UP! TO DOCKER PAAS. Ming

Configuration management with Chef. Edd Dumbill OSCON 2009

If you had a freshly generated image from an LCI instructor, make sure to set the hostnames again:

Quick Prototyping+CI with LXC and Puppet

DEVOPS TRAINING COURSE CONTENT

How Can Testing Teams Play a Key Role in DevOps Adoption?

Red Hat JBoss Middleware for OpenShift 3

trevor.bramwell.net Documentation

Stop Cyber Threats With Adaptive Micro-Segmentation. Jeff Francis Regional Systems Engineer

Easy macos Management Nate Walck

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

Being a puppet master

Transcription:

EXITING VACUUM INTEGRATING CONFIGURATION MANAGEMENT Sascha Bates Opscode

sascha bates blog.brattyredhead.com Twin Cities Infracoders Meetup @sascha_d The Ship Show Podcast

credentials? In love with CM since 2010 Curating developer happiness even longer

A tool is just a tool

it s what you do with it that matters

WHY AM I HERE?

I mess things up so you don t have to

Wasn t it awesome when it took 3-6 weeks to get a dev server and you got to share it with 60 other people? - nobody ever

This Never Happens wrong database connection string deployed to prod smtp server fixed by hand and forgotten test apache server with special configs ssh keys pushed by hand

configuration management defines and idempotently enforces system state across infrastructure components

freedom not bondage

confidence

Configuration Management is NOT a magic rainbow pixie dusted unicorn coming to save you

where do you stand?

if I m really quiet

you find yourself... in a maze of twisty little passages all alike

Map the Journey Infrastructure Greenfielding and Brownfielding A Balanced Ecosystem Practical CM

Infrastructure who cares?

In a perfect universe Provision Identically the brains behind your servers

In a perfect universe One deployment process to rule them all because deployments are complicated enough

In a perfect universe Repositories for all OS packages yum install tomcat trumps curl -o http://some-tomcat-url tar -xvf tomcat.gz

In a perfect universe Hands-off the servers! this guy again

Getting Started making mud pies

Infrastructure Crafting Server Provisioning

Infrastructure Crafting App Layer Configuration keep configuration data separate from code different configs in different environments deployments controlled by different teams

Infrastructure Crafting Dynamic Discovery Across Tiers application instances noticed by web instances noticed by load balancer configs

Infrastructure Crafting Workstation Automation make onboarding a fast happy process eliminate stale epic-length wiki pages

Infrastructure Crafting Superior Local Testing vagrant virtualbox/ec2/vmware chef/puppet/ansible

Infrastructure Crafting Beef Up Your Pipeline Jenkins + Configuration Management = powa bootstrap/deploy automated integration/functional testing ftw

Getting Started don t do this

Pick a Sane Use Case don t try to automate the world small achievable measurable impactful

Pick a Sane Use Case stay agile and visible demo your impactful automation show time/frustration saved

Keep an Open Mind because we ve always done it that way is no longer acceptable

Refactoring Happens

Brownfielding your biggest challenge is people

Brownfielding coloring inside the lines

Brownfielding collaborating legacy apps have possessive owners be inclusive, ask questions listen when they tell you what will work mute criticism

A Balanced Ecosystem automation can t live in a vacuum

Configuration Management is not a package manager a package repository a substitute for version control

A Balanced Ecosystem Package Repos configuration management insert package repository rant here package repos

A Balanced Ecosystem Version Control configuration management code is CODE put it where it belongs

A Balanced Ecosystem Build Tools

A Balanced Ecosystem Virtualization

Practical CM testing you can write tests for CM unit testing w/rspec functional/integration testing with minitest/bats

Practical CM dependency resolution Librarian for both Puppet and Chef Berkshelf for Chef There could be others

Practical CM primitives

Practical CM primitives file, user, package, template, directory built-in idempotence readability operating system cross-functionality

Practical CM exec blocks

Practical CM exec vs primitives bash install_my_package do command yum -y install my_package end NEVER DO THIS

Practical CM exec vs primitives package 'apache' do action :install end ALWAYS DO THIS

bash "install_tomcat6" do tomcat_version_name = "apache-tomcat-#{node.tomcat.version}" tomcat_version_name_tgz = "#{tomcat_version_name}.tar.gz" user "root" code <<-EOH curl --proxy https://aproxy.com:8080/ --user user:pass https://myartifactoryurl.com/artifactory/ext-release-local/ apache-tomcat/apache-tomcat/#{node.tomcat.version}/ #{tomcat_version_name_tgz} -o /tmp/#{tomcat_version_name_tgz} tar -zxf /tmp/#{tomcat_version_name_tgz} -C /tmp rm /tmp/#{tomcat_version_name_tgz} mv /tmp/#{tomcat_version_name} #{node.tomcat.install_path} chown -R #{node.tomcat.run_user}:#{node.tomcat.run_group} #{node.tomcat.install_path} chmod -R 755 #{node.tomcat.install_path} rm -rf #{node.tomcat.install_path}/webapps/root EOH end

wtf was that?!

package 'tomcat7' do end action :install

Practical CM template primitive templates allow you to write flat files with varied configs across different environments

<% @sudoers_users.each do user -%> <%= user %> ALL=(ALL) <%= "NOPASSWD:" if @passwordless %>ALL <% end -%> # Members of the sysadmin group may gain root privileges %sysadmin ALL=(ALL) <%= "NOPASSWD:" if @passwordless %>ALL

bash "update_ssh" do code <<-EOH sed -i -e 's/ AuthorizedKeysFile.*authorized_keys/ AuthorizedKeysFile \\/\\.keys\\/%u\\/ authorized_keys/g' /etc/ssh/sshd_config EOH end bash ssh_dns do code <<-EOH sed -i -e 's/#usedns.yes/usedns no/g' /etc/ssh/sshd_config EOH end

primitives trump execs package "ssh" do action :install end service "sshd" do action [:enable, :start] end template "/etc/ssh/sshd_config" do action :create mode 0644 notifies :restart,"service[sshd]" end

Practical CM extending and abstracting CM tools are easy to extend understand repeatable patterns abstract them into libraries, resources, custom types keep front line code readable

# Cookbook Name:: keys # Recipe:: common # Author:: Sascha Bates keys = [] search('public_keys',"tags:common").each { k keys << k } search('public_keys',"tags:chef AND tags:#{node.env}").each { k keys << k } keys.each do k key_type, key_part, key_comment = k['pub_key'].split(' ') ruby_block "root_keys_#{k['id']}" do Chef::Log.debug("test condition: grep #{key_part} #{keyfile}") not_if "grep #{key_part} #{keyfile}" block do File::open(keyfile, 'a') do f Chef::Log.debug("Adding #{key_comment} to #{f.path}") f << k["pub_key"] << "\n" end end

dsl trumps code # Cookbook Name:: keys # Recipe:: common # Author:: Sascha Bates authkey common_key do action :add user root end

If you don t remember anything else start small, stay visible, communicate craft a holistic ecosystem use the tool wisely and well

bonus slide # -*- mode: ruby -*- # vi: set ft=ruby Vagrant.configure("2") do config config.vm.hostname = "goto-example" config.vm.box = "opscode_centos-6.4_provisionerless" config.vm.network :private_network, ip: "33.33.33.10" config.vm.network "forwarded_port", guest: 8080, host: 8080, auto_correct: true config.omnibus.chef_version = :latest config.ssh.max_tries = 40 config.ssh.timeout = 120 config.berkshelf.enabled = true config.vm.provision :chef_solo do chef chef.log_level = :debug chef.run_list = [ "recipe[goto::default]" ] end end