SlideShare una empresa de Scribd logo
1 de 66
From chef09 to chef11 
my approach to a real devops task 
Antonio Peña @apenav for @MadridDevops 
September 2014 http://about.me/apenav
http://madrid.devops.es
Motivation 
● feedback 
● sharing experience 
● learning 
● talking about devops
Impostor Syndrome
Three Parts 
● Devops 
● Chef 
● Migration
About 
DevOps
Software is broken or will be
Devops (I)
Devops (II)
Devops (III)
So little time, so much to talk about
Big Business. DevOps Myths (I)
Big Business. DevOps Myths (II)
My approach to a 
configuration management project 
Antonio Peña @apenav for @MadridDevops 
September 2014 http://about.me/apenav
Best tool to make config mgmt? 
● cfengine 
● puppet 
● chef 
● salt 
● ansible 
-- Business decision-making. Make your choice 
-- Strengths/weakness. Tend to converge.
About 
Chef
What is Chef? 
● a company 
○ Opscode Inc. 
○ getchef.com 
○ @chef 
● a product (with paid support) 
○ packages, not recommended install from gemfiles 
● an open source project 
● a community (open source but not only)
Beginners, experts and middle class
Berkshelf.I
Berkshelf.II
“Spanish” Way 
Master Chef RTVE
Howto devops in Spain? (I) 
● e.g. Demo in a Big Company
Howto devops in Spain? (II) 
● startup 
● why not? 
● sandbox
Howto devops in Spain? (III) 
● consulting
Working in a company 
as a Developer. 
Daily tasks
Initial problem 
Problem to be solved (in aprox. 2 weeks): 
1. install chef-server 11 in a centos6 behind a 
VPN 
2. install 2 web frontends + 2 backends 
a. (redis s/m + mysql m/s)
Real problem 
1. refactor/migrate/write from scratch about 20 
old-fashioned (2009) but very reliable (daily 
used, very difficult to extend for an outsider) 
ubuntu ruby18-webapp-related recipes to 
newer ones 
2. proof of concept to migrate chef09 company’ 
s repository to anything better
From scratch 
http://devopsreactions.tumblr.com/post/97637875636/what-happens-when-i-am-allowed-to-rewrite-code-from
Methodology or the like 
“Big bang” approach, but iterative: 
● use chef11 community cookbooks 
● almost no direct migration from chef09 ones
Criteria to use community cookbooks? 
https://github.com/opscode-cookbooks/mysql 
When in doubt use popular 
opscode 
community 
cookbooks. 
So many content to 
follow!
About 
Migration
To the kitchen
Let’s cook! 
1. Hosting Environment 
2. Cookbook Development 
3. Monolithic cookbook approach 
4. Everything is a cookbook 
5. Production Cookbook Deployment 
6. Production Cookbook Development 
7. Opscode packages 
8. Developers’ isolated ruby environment 
9. Final Steps 
10. Conclusions
Chef Server 
Internals
1.- Hosting Environment (I) 
Open Source chef-server in a centos6. 
Modify and test undocumented chef-server 
config, with some “little” external problems: 
- shared server behind a VPN 
- unavailable ports: reassign 80/443 to 81/8443 
- 8000 not opened in firewall (so no reports will 
be available)
Asking for opening ports in firewall 
http://devopsreactions.tumblr.com/post/41094252078/asking-the-security-team-for-a-firewall-exception
2.- Cookbook Development (I) 
Opscode free(*) hosting 
● Great help because Multiproject! 
● http://learn.getchef.com 
● Berkshelf helped a lot with dependencies (**) 
● Good practices freezing versions 
(*) not open-source (limited to 10 nodes) 
(**) not so easy when not opscode server
2.- Cookbook Development (II) 
Chef-DK: 
● ruby binaries in specific /opt folders 
● not needed rvm/rbenv/ruby source code/... 
● own path & pre-installed useful gems and 
tools
2.- Cookbook Development (III) 
● http://jtimberman.housepub.org/blog/2014/04/30/chefdk-and- 
ruby/ 
● Berkshelf 3.0. 
● The Test Kitchen integration testing framework. 
● ChefSpec, for unit testing cookbooks. 
● Foodcritic, static code analysis on cookbooks. 
● All of the Chef tools you're already familiar with: Chef 
Client, Knife, Ohai and Chef Zero.
2.- Cookbook Development (IV) 
Better practices? Any? 
● No time for tests nor TDD (to learn about) 
● Not enough RAM in laptop nor in AWS micro 
instances for making testing/CI with Vagrant 
● Foodcritic and more, but later 
● I hope to use them ASAP: just because I like 
it. The same with Puppet.
2.- Cookbook Development (V) 
First stages of development 
● make risks, quick tests, quickwin, try and try 
● think in advance, virtualhosts library 
● ugly code you know it will be easy to change 
● the community code is better than yours 
● extend, not create from the ground 
● parametrize cookbooks: redis
3.- Monolithic cookbook approach 
Thanks a lot to Mathias Lafeldt @mlafeldt 
“monolithic cookbook” idea, easy to refactor 
later (see Puppet Module Structure Redux). 
● http://mlafeldt.github.io/practicing-ruby-cookbook 
● https://github.com/elm-city-craftworks/ 
practicing-ruby-cookbook
4.- Everything is a cookbook 
● https://tomduffield.com/everything-as-a-cookbook- 
chefconf2014/ 
● https://speakerdeck.com/tduffield/everything-as- 
a-cookbook-1
Cool guys don’t look back to explosions?
5.-ProductionCookbookDevelopment 
● A new beginning. Almost from scratch. 
Develop new recipes and cookbooks against a 
new chef organization in opscode free hosting. 
● install, fix, check-apply and repeat in 
frontend staging instances 
(Poor’s man plan–do–check–adjust) 
https://en.wikipedia.org/wiki/PDCA
6.-ProductionCookbookDeployment 
● chef site cookbook install “cookbook” (new 
git branch in ~/chef-repo/cookbook/) 
● chef site cookbook install chef-client
7.- Opscode packages (I) 
● WARNING: chefdk.rpm installs binaries 
under /usr/bin and gems in its own gemsdir 
● REMOVE any puppet or ruby preexistent 
package or binary, no interferences please! 
● BEWARE: never use binaries without explicit 
PATH e.g. /opt/chef/bin/chef-client
7.- Opscode packages (II) 
NO RVM nor system ruby allowed 
● chef-server.rpm 
● chef.rpm 
● chefdk.rpm 
every opscode rpm package installs one or 
more ruby binaries in its own path
8.- Developers isolated ruby environment (I) 
● Developers need multiple rubies installed 
(1.9.3 & 2.0.X) 
● unprivileged users will install its own gems, 
without interfering with chef ruby-binaries 
SOLUTION: compile explicit versions from 
source code, rewrite PATH in user environment 
and install “bundler gem” as root.
8.- Developers isolated ruby environment (II) 
Opscode chef.rpm package provides 2.1 ruby 
● install passenger-apache library+binary 
compiled and installed as a gem under chef. 
rpm gemlib path (a community recipe is in 
charge of it) 
● compatible to both 2.0.x and 1.9.x user 
rubies
8.- Developers isolated ruby environment(III) 
Explicit ruby version (1.9.3 or 2.0.X) in 
appropriate virtualhost apache files (from 
templates) 
NOTE: Foodcritic tool helped a lot when looking 
for errors (e.g. specially with chef templates)
9. Final Steps (I) 
After just 2 weeks, it almost worked ok. 
Traditional approach to development: logrotate 
and monit forked recipes with “999” suffix 
added to “semver” in metadata.rb 
● not perfect 
● Explicit installation of dependencies when in 
Opensource Opscode server
9. Final Steps (II) 
Pareto principle! 80/20 Rule. 
● Two more weeks with “fringes” 
● create new organization in opscode free 
account 
● chef-solo-search for “local” databags 
● BIG CRISIS: no chef-server available -> 
chef-solo deployment
Angry chef?
9. Final Steps (III) 
Create git repo (first commit in 2 weeks) 
● install explicit dependencies 
● “chef cookbook site install” 
● only needed “ancient” (fork and modify) 
approach in two cookbooks: monit and 
passenger
9. Final Steps (IV) 
“In extremis”: Refactor the “monolithic” 
cookbook 
Monolithic cookbook refactored as 3 cookbooks 
Three layers of attribute+template files: 
● general cookbook (i.e. language, servers,...) 
○ company cookbook (i.e. final customer specific) 
■ project cookbook (i.e. virtualhost config)
9. Final Steps (V) 
● only two “old fashioned” forked recipes: 
monit and passenger 
● new recipes forces a different way to use 
databags
10. Conclusions (I) 
To FIX: 
● move logrotate recipes in railssites2 to 
another new bootstrapping-node-sysadmin 
cookbook 
● not exactly applied but inspired in 
"everything is a cookbook"
10. Conclusions (II) 
● You need to have “Luck” 
○ no way to configure staging chef-server (only 
working through 127.0.0.1 and VPN) 
○ no way to configure ubuntu from opscode deb 
packages 
● You need big motivation to success
10. Conclusions (III) 
To be improved: 
● ubuntu/RHEL cookbooks 
● tests 
● mysql m/s cookbook 
● monit recipe 
● opensource chef-server hosting
THANKS FOR YOUR 
PATIENCE

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Killer R10K Workflow - PuppetConf 2014
Killer R10K Workflow - PuppetConf 2014Killer R10K Workflow - PuppetConf 2014
Killer R10K Workflow - PuppetConf 2014
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Jenkins Shared Libraries Workshop
Jenkins Shared Libraries WorkshopJenkins Shared Libraries Workshop
Jenkins Shared Libraries Workshop
 
Git flow
Git flowGit flow
Git flow
 
Migrating To GitHub
Migrating To GitHub  Migrating To GitHub
Migrating To GitHub
 
Serving Pull Requests with Jenkins
Serving Pull Requests with JenkinsServing Pull Requests with Jenkins
Serving Pull Requests with Jenkins
 
Version control
Version controlVersion control
Version control
 
CocoaPods for private libraries
CocoaPods for private librariesCocoaPods for private libraries
CocoaPods for private libraries
 
Lightweight continuous delivery for small schools
Lightweight continuous delivery for small schoolsLightweight continuous delivery for small schools
Lightweight continuous delivery for small schools
 
Golang Microservices meetup
Golang Microservices meetupGolang Microservices meetup
Golang Microservices meetup
 
Intro to Git for Drupal 7
Intro to Git for Drupal 7Intro to Git for Drupal 7
Intro to Git for Drupal 7
 
Open Innovation Lab (OIL) - 20150227 - GIT Intro Workshop
Open Innovation Lab (OIL) - 20150227 - GIT Intro WorkshopOpen Innovation Lab (OIL) - 20150227 - GIT Intro Workshop
Open Innovation Lab (OIL) - 20150227 - GIT Intro Workshop
 
Contributing to Koha
Contributing to KohaContributing to Koha
Contributing to Koha
 
Flow
FlowFlow
Flow
 
Puppet at GitHub
Puppet at GitHubPuppet at GitHub
Puppet at GitHub
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Culerity and Headless Full Stack Integration Testing
Culerity and Headless Full Stack Integration TestingCulerity and Headless Full Stack Integration Testing
Culerity and Headless Full Stack Integration Testing
 
Git'in in 15
Git'in in 15Git'in in 15
Git'in in 15
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010
 
Git workflows presentation
Git workflows presentationGit workflows presentation
Git workflows presentation
 

Destacado

Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
FcoKraken
 
El Siste ma Solar
El Siste ma SolarEl Siste ma Solar
El Siste ma Solar
pingui
 
Recursos gesofera minerales y rocas
Recursos gesofera minerales y rocasRecursos gesofera minerales y rocas
Recursos gesofera minerales y rocas
Gemita165
 

Destacado (20)

Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
 
Yaiza tapia POWER POINT CASTE BALNEARIO.
Yaiza tapia POWER POINT CASTE BALNEARIO. Yaiza tapia POWER POINT CASTE BALNEARIO.
Yaiza tapia POWER POINT CASTE BALNEARIO.
 
Computer skills (ch1)
Computer skills (ch1)Computer skills (ch1)
Computer skills (ch1)
 
ERP Future 2014 - ERP für KMU?
ERP Future 2014 - ERP für KMU?ERP Future 2014 - ERP für KMU?
ERP Future 2014 - ERP für KMU?
 
El Siste ma Solar
El Siste ma SolarEl Siste ma Solar
El Siste ma Solar
 
Centroamerica ILAEV Bus tour 2014.ppt
Centroamerica ILAEV Bus tour 2014.pptCentroamerica ILAEV Bus tour 2014.ppt
Centroamerica ILAEV Bus tour 2014.ppt
 
GFI MailSecurity's Deployment Strategies
GFI MailSecurity's Deployment StrategiesGFI MailSecurity's Deployment Strategies
GFI MailSecurity's Deployment Strategies
 
Match point
Match pointMatch point
Match point
 
Revista Oficial ANECPLA: Infoplagas. Nº 51 JUN 2013
Revista Oficial ANECPLA: Infoplagas. Nº 51  JUN 2013Revista Oficial ANECPLA: Infoplagas. Nº 51  JUN 2013
Revista Oficial ANECPLA: Infoplagas. Nº 51 JUN 2013
 
Blogger tercer
Blogger tercerBlogger tercer
Blogger tercer
 
Eurosega Sevilla abogados de empresas
Eurosega Sevilla abogados de empresasEurosega Sevilla abogados de empresas
Eurosega Sevilla abogados de empresas
 
Vendor Landscape: Email Security Gateway
Vendor Landscape: Email Security GatewayVendor Landscape: Email Security Gateway
Vendor Landscape: Email Security Gateway
 
Kumite
KumiteKumite
Kumite
 
Localizarea electronica a publicatiilor in biblioteca
Localizarea electronica a publicatiilor in bibliotecaLocalizarea electronica a publicatiilor in biblioteca
Localizarea electronica a publicatiilor in biblioteca
 
Test y pruebas de caja Negra y caja Blanca
Test y pruebas de caja Negra y caja BlancaTest y pruebas de caja Negra y caja Blanca
Test y pruebas de caja Negra y caja Blanca
 
Japón terremoto 10 mar 2011
Japón terremoto 10 mar 2011Japón terremoto 10 mar 2011
Japón terremoto 10 mar 2011
 
Recursos gesofera minerales y rocas
Recursos gesofera minerales y rocasRecursos gesofera minerales y rocas
Recursos gesofera minerales y rocas
 
Temario ETP
Temario ETPTemario ETP
Temario ETP
 
Functional training idde 4 pilares
Functional training idde 4 pilaresFunctional training idde 4 pilares
Functional training idde 4 pilares
 
Starbucks corporation plan marketing
Starbucks corporation plan marketingStarbucks corporation plan marketing
Starbucks corporation plan marketing
 

Similar a MadridDevops September 2014: "From chef09 to chef11, one approach to devops"

Emerging chef patterns and practices
Emerging chef patterns and practicesEmerging chef patterns and practices
Emerging chef patterns and practices
Owain Perry
 

Similar a MadridDevops September 2014: "From chef09 to chef11, one approach to devops" (20)

Chef - Administration for programmers
Chef - Administration for programmersChef - Administration for programmers
Chef - Administration for programmers
 
Cooking Perl with Chef: Real World Tutorial with Jitterbug
Cooking Perl with Chef: Real World Tutorial with JitterbugCooking Perl with Chef: Real World Tutorial with Jitterbug
Cooking Perl with Chef: Real World Tutorial with Jitterbug
 
Emerging chef patterns and practices
Emerging chef patterns and practicesEmerging chef patterns and practices
Emerging chef patterns and practices
 
Building a PaaS using Chef
Building a PaaS using ChefBuilding a PaaS using Chef
Building a PaaS using Chef
 
Workshop presentation
Workshop presentationWorkshop presentation
Workshop presentation
 
Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Mollie
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
CIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops betterCIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops better
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Reproducible development to live applications with Red Hat CDK and Red Hat Op...Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
 
DevOps demystified
DevOps demystifiedDevOps demystified
DevOps demystified
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration Toolbox
 
DevOps Fest 2019. Олег Белецкий. Using Chef to manage hardware-based infrastr...
DevOps Fest 2019. Олег Белецкий. Using Chef to manage hardware-based infrastr...DevOps Fest 2019. Олег Белецкий. Using Chef to manage hardware-based infrastr...
DevOps Fest 2019. Олег Белецкий. Using Chef to manage hardware-based infrastr...
 
Hands-on Lab: Red Hat Container Development & OpenShift
Hands-on Lab: Red Hat Container Development & OpenShiftHands-on Lab: Red Hat Container Development & OpenShift
Hands-on Lab: Red Hat Container Development & OpenShift
 
Chef tooling and TDD
Chef tooling and  TDDChef tooling and  TDD
Chef tooling and TDD
 
Kubernetes and CoreOS @ Athens Docker meetup
Kubernetes and CoreOS @ Athens Docker meetupKubernetes and CoreOS @ Athens Docker meetup
Kubernetes and CoreOS @ Athens Docker meetup
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 

Último

Último (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

MadridDevops September 2014: "From chef09 to chef11, one approach to devops"

  • 1. From chef09 to chef11 my approach to a real devops task Antonio Peña @apenav for @MadridDevops September 2014 http://about.me/apenav
  • 3. Motivation ● feedback ● sharing experience ● learning ● talking about devops
  • 4.
  • 5.
  • 7. Three Parts ● Devops ● Chef ● Migration
  • 9. Software is broken or will be
  • 13. So little time, so much to talk about
  • 14. Big Business. DevOps Myths (I)
  • 15. Big Business. DevOps Myths (II)
  • 16. My approach to a configuration management project Antonio Peña @apenav for @MadridDevops September 2014 http://about.me/apenav
  • 17. Best tool to make config mgmt? ● cfengine ● puppet ● chef ● salt ● ansible -- Business decision-making. Make your choice -- Strengths/weakness. Tend to converge.
  • 19.
  • 20.
  • 21. What is Chef? ● a company ○ Opscode Inc. ○ getchef.com ○ @chef ● a product (with paid support) ○ packages, not recommended install from gemfiles ● an open source project ● a community (open source but not only)
  • 22. Beginners, experts and middle class
  • 26. Howto devops in Spain? (I) ● e.g. Demo in a Big Company
  • 27. Howto devops in Spain? (II) ● startup ● why not? ● sandbox
  • 28. Howto devops in Spain? (III) ● consulting
  • 29. Working in a company as a Developer. Daily tasks
  • 30. Initial problem Problem to be solved (in aprox. 2 weeks): 1. install chef-server 11 in a centos6 behind a VPN 2. install 2 web frontends + 2 backends a. (redis s/m + mysql m/s)
  • 31. Real problem 1. refactor/migrate/write from scratch about 20 old-fashioned (2009) but very reliable (daily used, very difficult to extend for an outsider) ubuntu ruby18-webapp-related recipes to newer ones 2. proof of concept to migrate chef09 company’ s repository to anything better
  • 33. Methodology or the like “Big bang” approach, but iterative: ● use chef11 community cookbooks ● almost no direct migration from chef09 ones
  • 34. Criteria to use community cookbooks? https://github.com/opscode-cookbooks/mysql When in doubt use popular opscode community cookbooks. So many content to follow!
  • 37. Let’s cook! 1. Hosting Environment 2. Cookbook Development 3. Monolithic cookbook approach 4. Everything is a cookbook 5. Production Cookbook Deployment 6. Production Cookbook Development 7. Opscode packages 8. Developers’ isolated ruby environment 9. Final Steps 10. Conclusions
  • 39. 1.- Hosting Environment (I) Open Source chef-server in a centos6. Modify and test undocumented chef-server config, with some “little” external problems: - shared server behind a VPN - unavailable ports: reassign 80/443 to 81/8443 - 8000 not opened in firewall (so no reports will be available)
  • 40. Asking for opening ports in firewall http://devopsreactions.tumblr.com/post/41094252078/asking-the-security-team-for-a-firewall-exception
  • 41. 2.- Cookbook Development (I) Opscode free(*) hosting ● Great help because Multiproject! ● http://learn.getchef.com ● Berkshelf helped a lot with dependencies (**) ● Good practices freezing versions (*) not open-source (limited to 10 nodes) (**) not so easy when not opscode server
  • 42. 2.- Cookbook Development (II) Chef-DK: ● ruby binaries in specific /opt folders ● not needed rvm/rbenv/ruby source code/... ● own path & pre-installed useful gems and tools
  • 43. 2.- Cookbook Development (III) ● http://jtimberman.housepub.org/blog/2014/04/30/chefdk-and- ruby/ ● Berkshelf 3.0. ● The Test Kitchen integration testing framework. ● ChefSpec, for unit testing cookbooks. ● Foodcritic, static code analysis on cookbooks. ● All of the Chef tools you're already familiar with: Chef Client, Knife, Ohai and Chef Zero.
  • 44. 2.- Cookbook Development (IV) Better practices? Any? ● No time for tests nor TDD (to learn about) ● Not enough RAM in laptop nor in AWS micro instances for making testing/CI with Vagrant ● Foodcritic and more, but later ● I hope to use them ASAP: just because I like it. The same with Puppet.
  • 45. 2.- Cookbook Development (V) First stages of development ● make risks, quick tests, quickwin, try and try ● think in advance, virtualhosts library ● ugly code you know it will be easy to change ● the community code is better than yours ● extend, not create from the ground ● parametrize cookbooks: redis
  • 46. 3.- Monolithic cookbook approach Thanks a lot to Mathias Lafeldt @mlafeldt “monolithic cookbook” idea, easy to refactor later (see Puppet Module Structure Redux). ● http://mlafeldt.github.io/practicing-ruby-cookbook ● https://github.com/elm-city-craftworks/ practicing-ruby-cookbook
  • 47. 4.- Everything is a cookbook ● https://tomduffield.com/everything-as-a-cookbook- chefconf2014/ ● https://speakerdeck.com/tduffield/everything-as- a-cookbook-1
  • 48. Cool guys don’t look back to explosions?
  • 49. 5.-ProductionCookbookDevelopment ● A new beginning. Almost from scratch. Develop new recipes and cookbooks against a new chef organization in opscode free hosting. ● install, fix, check-apply and repeat in frontend staging instances (Poor’s man plan–do–check–adjust) https://en.wikipedia.org/wiki/PDCA
  • 50. 6.-ProductionCookbookDeployment ● chef site cookbook install “cookbook” (new git branch in ~/chef-repo/cookbook/) ● chef site cookbook install chef-client
  • 51. 7.- Opscode packages (I) ● WARNING: chefdk.rpm installs binaries under /usr/bin and gems in its own gemsdir ● REMOVE any puppet or ruby preexistent package or binary, no interferences please! ● BEWARE: never use binaries without explicit PATH e.g. /opt/chef/bin/chef-client
  • 52. 7.- Opscode packages (II) NO RVM nor system ruby allowed ● chef-server.rpm ● chef.rpm ● chefdk.rpm every opscode rpm package installs one or more ruby binaries in its own path
  • 53. 8.- Developers isolated ruby environment (I) ● Developers need multiple rubies installed (1.9.3 & 2.0.X) ● unprivileged users will install its own gems, without interfering with chef ruby-binaries SOLUTION: compile explicit versions from source code, rewrite PATH in user environment and install “bundler gem” as root.
  • 54. 8.- Developers isolated ruby environment (II) Opscode chef.rpm package provides 2.1 ruby ● install passenger-apache library+binary compiled and installed as a gem under chef. rpm gemlib path (a community recipe is in charge of it) ● compatible to both 2.0.x and 1.9.x user rubies
  • 55. 8.- Developers isolated ruby environment(III) Explicit ruby version (1.9.3 or 2.0.X) in appropriate virtualhost apache files (from templates) NOTE: Foodcritic tool helped a lot when looking for errors (e.g. specially with chef templates)
  • 56. 9. Final Steps (I) After just 2 weeks, it almost worked ok. Traditional approach to development: logrotate and monit forked recipes with “999” suffix added to “semver” in metadata.rb ● not perfect ● Explicit installation of dependencies when in Opensource Opscode server
  • 57. 9. Final Steps (II) Pareto principle! 80/20 Rule. ● Two more weeks with “fringes” ● create new organization in opscode free account ● chef-solo-search for “local” databags ● BIG CRISIS: no chef-server available -> chef-solo deployment
  • 59. 9. Final Steps (III) Create git repo (first commit in 2 weeks) ● install explicit dependencies ● “chef cookbook site install” ● only needed “ancient” (fork and modify) approach in two cookbooks: monit and passenger
  • 60. 9. Final Steps (IV) “In extremis”: Refactor the “monolithic” cookbook Monolithic cookbook refactored as 3 cookbooks Three layers of attribute+template files: ● general cookbook (i.e. language, servers,...) ○ company cookbook (i.e. final customer specific) ■ project cookbook (i.e. virtualhost config)
  • 61. 9. Final Steps (V) ● only two “old fashioned” forked recipes: monit and passenger ● new recipes forces a different way to use databags
  • 62. 10. Conclusions (I) To FIX: ● move logrotate recipes in railssites2 to another new bootstrapping-node-sysadmin cookbook ● not exactly applied but inspired in "everything is a cookbook"
  • 63. 10. Conclusions (II) ● You need to have “Luck” ○ no way to configure staging chef-server (only working through 127.0.0.1 and VPN) ○ no way to configure ubuntu from opscode deb packages ● You need big motivation to success
  • 64. 10. Conclusions (III) To be improved: ● ubuntu/RHEL cookbooks ● tests ● mysql m/s cookbook ● monit recipe ● opensource chef-server hosting
  • 65.
  • 66. THANKS FOR YOUR PATIENCE

Notas del editor

  1. Sysadmin de Linux de FI.UPM últimamente ayudando a una startup a escalar con AWS hice esto con chef y ahora mismo con puppet (incluso con windows)
  2. mail twitter meetup
  3. Septiembre Hace mucho que no se habla de devops aquí Charla de madrid-devops, sin ruby, sin chef. Experiencia Tal vez un taller muy enfocado a gente que le interese chef y que lleve a discusión de estas cosas y que den feedback de maneras más correctas de haberlo hecho o cómo seguir aprendiendo (me interesa mucho el feedback). Ofrecérosla como charla interna del grupo de admins y me quito "este peso" (transmitir este conocimiento) para liberar un poco la mente y dejar sitio para otras cosas.
  4. Everybody is
  5. “Trolling” inherent to Culture Open mind
  6. En la buena dirección Velocity
  7. Manufacturing efficient POV Business Schools Toyota way Puppet conf Kris Buytaert?
  8. Big Company POV Karen
  9. Cfgmgmt
  10. Describe estado de infraestructuras
  11. Traditional chef bunch of gems
  12. American dream Biz
  13. 1) devops en gran empresa (problemas estructurales, para que triunfe debe tener apoyo de la dirección). Necesita gran conocimiento de la organización y derivaría en proy de consultoría y tal vez integración con ITIL. Jeff Bezos - like
  14. Devops en pyme/Departamento no crítico. Centrada en herramientas. La empresa se reinventa cada día. Cambios frenéticos, tal vez no llegue a consolidarse si los socios no "compran" la idea. Lo importante es salir, no hacerlo bien.
  15. 3) "Consultor" en startup exitosa que empieza a tener problemas de integración de sw, mediana empresa, necesidad puntual. Sería un perfil más senior que, o tiene mucha suerte y capacidad, o ya se ha "equivocado" en otras aventuras y tal vez aplique bien las técnicas....
  16. Vec contcc
  17. Chef Server Internal Services
  18. Why cool guys don’t look back to explosions https://www.youtube.com/watch?v=Sqz5dbs5zmo
  19. Where? https://raw.githubusercontent.com/opscode-cookbooks/chef-client/master/templates/default/redhat/init.d/chef-client.erb Open Source rules!
  20. - no hables por boca de ganso, si no te has enfrentado a un proyecto devops real, no opines sin saber, que a todo se adapta uno - sufrir un poco "mola" - déjate llevar por los gurús, a veces y si tienes suerte, sale bien - necesitas motivación y dormir poco