SlideShare una empresa de Scribd logo
1 de 69
Puppet AutomagicallyManageYour Configuration 12/04/2010 Carla Souza DevOps 2010 Brazil © Carla Souza
12/04/2010 DevOps 2010 Brazil © Carla Souza
12/04/2010 DevOps 2010 Brazil © Carla Souza
12/04/2010 DevOps 2010 Brazil © Carla Souza
Typical Sysadmin Job Repetitive Manual Tedious 12/04/2010 DevOps 2010 Brazil © Carla Souza
Typical Sysadmin Job Installation 12/04/2010 DevOps 2010 Brazil © Carla Souza
Typical Sysadmin Job Installation Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
Typical Sysadmin Job Installation Updates Fixes Audits Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
Typical Sysadmin Job Installation Updates Fixes Audits Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
After Configuration... Whatwas itconfigured? How? Why? 12/04/2010 DevOps 2010 Brazil © Carla Souza
After Configuration... Whatwas itconfigured? How? Why? WeneedDocumentation! 12/04/2010 DevOps 2010 Brazil © Carla Souza
Documentation Whenwas it configured? Who configured it? What were the configuration's objectives? 12/04/2010 DevOps 2010 Brazil © Carla Souza
Documentation Whenwas itconfigured? Who configured it? What were the configuration's objectives? Beconsistent 12/04/2010 DevOps 2010 Brazil © Carla Souza
After configuration... Is it wellconfigured? 12/04/2010 DevOps 2010 Brazil © Carla Souza
After configuration... Is it wellconfigured? Badconfiguration is worsethan no configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
After configuration... Is it wellconfigured? Badconfiguration is worsethen no configuration Wemakemistakes! 12/04/2010 DevOps 2010 Brazil © Carla Souza
After configuration... Is it wellconfigured? Badconfiguration is worsethen no configuration Wemakemistakes! WeneedTests! 12/04/2010 DevOps 2010 Brazil © Carla Souza
Tests Is the configuration correct? Is it correctlyconfigured? 12/04/2010 DevOps 2010 Brazil © Carla Souza
After Configuration... How to ensurethat it willstayconfiguredcorrectly over time? 12/04/2010 DevOps 2010 Brazil © Carla Souza
After Configuration... How to ensure that it will stay configured correctly over time? We need Maintenance! 12/04/2010 DevOps 2010 Brazil © Carla Souza
Maintenance Repetitive work Every time yourepeatonejob, youwaste time 12/04/2010 DevOps 2010 Brazil © Carla Souza
Maintenance Repetitive work Every time you repeat onejob, you waste time MONEY 12/04/2010 DevOps 2010 Brazil © Carla Souza
Documentation + Tests + Maintenance 12/04/2010 DevOps 2010 Brazil © Carla Souza
Documentation + Tests + Maintenance = Spend more time then you think 12/04/2010 DevOps 2010 Brazil © Carla Souza
Documentation + Tests + Maintenance = Spend more time then you think = Less time for real important work 12/04/2010 DevOps 2010 Brazil © Carla Souza
The more applications I have 12/04/2010 DevOps 2010 Brazil © Carla Souza
The more applications I have = More Risks 12/04/2010 DevOps 2010 Brazil © Carla Souza
The more applications I have = More Risks + More need for documentation 12/04/2010 DevOps 2010 Brazil © Carla Souza
Cumulative Effect The time left will be only for fire fighting 12/04/2010 DevOps 2010 Brazil © Carla Souza
Cumulative Effect The time left will be only for fire fighting Important  tasks will be left behind 12/04/2010 DevOps 2010 Brazil © Carla Souza
Cumulative Effect The time left will be only for fire fighting Important  tasks will be left behind Backups Documentation update User’s tickets 12/04/2010 DevOps 2010 Brazil © Carla Souza
Automation Good admins write their own tools 12/04/2010 DevOps 2010 Brazil © Carla Souza
Automation Good admins write their own tools Install: Kickstart, jumpstart, imaging Configuration + maintenance: SSH in a for loop Ssh keys distributed over the network = lack of secutiry 12/04/2010 DevOps 2010 Brazil © Carla Souza
Automation tools Great for ad-hoc or one time only tasks Can be pushed out via cron 12/04/2010 DevOps 2010 Brazil © Carla Souza
Automation tools But do you always write scripts that are: 12/04/2010 DevOps 2010 Brazil © Carla Souza
Automation tools But do you always write scripts that are: Concurrent safe? Testable? Reversible? Legible? Full of good logging? Portable? 12/04/2010 DevOps 2010 Brazil © Carla Souza
Wish list Simple solutions 12/04/2010 DevOps 2010 Brazil © Carla Souza
Wish list Simplesolutions ElegantDomainSpecificLanguage (DSL) Manageyourserversbywritingcode, notrunningcommands Platformindependent Centralized Version Controlled 12/04/2010 DevOps 2010 Brazil © Carla Souza
Wish list Simplesolutions Easy to extend Selfdocumenting Commercial support and trainning Open source 12/04/2010 DevOps 2010 Brazil © Carla Souza
Puppet A Puppet Labs product Since 2005 Written in Ruby Extensible by modules Client-server architecture (client pull) 12/04/2010 DevOps 2010 Brazil © Carla Souza
Puppet File server SSL Certificates Very active and helpful community Mailing lists, #puppet @ freenode Open Source hosted on Github (GPL) https://github.com/puppetlabs Book 12/04/2010 DevOps 2010 Brazil © Carla Souza
Puppet 12/04/2010 DevOps 2010 Brazil © Carla Souza
Puppet Installation Updates Fixes Audits Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
Components puppetmaster Server daemon Run as ‘puppet’ user 12/04/2010 DevOps 2010 Brazil © Carla Souza
Components puppetmaster Server daemon Run as ‘puppet’ user puppetd Client daemon Run as root Pulling every 30min (default value) 12/04/2010 DevOps 2010 Brazil © Carla Souza
Components puppetca Puppet’s Certificate Authority 12/04/2010 DevOps 2010 Brazil © Carla Souza
Components puppetca Puppet’s Certificate Authority Facter Gathers basic information about node’s hardware and operation system 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Types A type is a particular element that Puppet knows how to configure 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Types A type is a particular element that Puppet knows how to configure Classes A named collection of type objects 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Providers Specific implementation of a given resource type 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Providers Specific implementation of a given resource type type: package 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Providers Specific implementation of a given resource type type: package providers: yum, dpkg, aptitude, apple, rpm, gem, freebsd 12/04/2010 DevOps 2010 Brazil © Carla Souza
Puppet’s installation yum install puppet-server puppet apt-get install puppetmaster puppet gem install puppet-2.6.4.gem 12/04/2010 DevOps 2010 Brazil © Carla Souza
Sample CodeInstall, Configure and Start Apache 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: 	ensure => present, } file {“/etc/httpd/conf/httpd.conf”: 	owner => root, group => root, mode => 644, 	source => puppet:///modules/apache/httpd.conf, } service {“httpd”: 	ensure => running, 	enable => true, }
Sample CodeResource Types 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: 	ensure => present, } file {“/etc/httpd/conf/httpd.conf”: 	owner => root, group => root, mode => 644, 	source => puppet:///modules/apache/httpd.conf, } service {“httpd”: 	ensure => running, 	enable => true, }
Sample CodeResource Titles 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: 	ensure => present, } file {“/etc/httpd/conf/httpd.conf”: 	owner => root, group => root, mode => 644, 	source => puppet:///modules/apache/httpd.conf, } service {“httpd”: 	ensure => running, 	enable => true, }
Sample CodeResources Parameters 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: ensure => present, } file {“/etc/httpd/conf/httpd.conf”: owner => root, group => root, mode => 644, source => puppet:///modules/apache/httpd.conf, } service {“httpd”: ensure => running, enable => true, }
Sample CodeResources Parameters 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: 	ensure => present, } file {“/etc/httpd/conf/httpd.conf”: 	owner => root, group => root, mode => 644, 	source => puppet:///modules/apache/httpd.conf, 	require => Package[“httpd”] } service {“httpd”: 	ensure => running, 	enable => true, 	require => File[“/etc/httpd/conf/httpd.conf”] }
Sample CodeResponding to change 12/04/2010 DevOps 2010 Brazil © Carla Souza file{“/etc/httpd/conf/httpd.conf”: 	. 	. 	notify => Service[“httpd”] } OR service{“httpd”: 	. 	. 	subscribe => File[“/etc/httpd/conf/httpd.conf”] }
Sample CodeResource collections class apache { 	include apache::install 	include apache::config 	include apache::service } class apache::install { 	package{.....}, package{.....} } class apache::config { 	file{..... 		require => Class[“apache::install”], 		notify => Class[“apache::service”], 	} } class apache::service { 	service{..... 		require => Class[“apache::config”] 	} } 12/04/2010 DevOps 2010 Brazil © Carla Souza
Sample CodeResource collections class apache { 	include apache::install include apache::config 	include apache::service } class apache::install { 	package{.....}, package{.....} } class apache::config { 	file{..... 		require => Class[“apache::install”], 		notify => Class[“apache::service”], 	} } class apache::service { 	service{..... 		require => Class[“apache::config”] 	} } 12/04/2010 DevOps 2010 Brazil © Carla Souza
Sample CodeResource collections class apache { 	include apache::install 	include apache::config include apache::service } class apache::install { 	package{.....}, package{.....} } class apache::config { 	file{..... 		require => Class[“apache::install”], 		notify => Class[“apache::service”], 	} } class apache::service { 	service{..... 		require => Class[“apache::config”] 	} } 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Nodes A configuration block matching a client 12/04/2010 DevOps 2010 Brazil © Carla Souza
Sample CodeNodes configuration node “web1.your.com” { include apache } 12/04/2010 DevOps 2010 Brazil © Carla Souza
Elements Templates Apply code and variable substitution Uses ERB 12/04/2010 DevOps 2010 Brazil © Carla Souza
Sample CodeTemplates file{“/etc/httpd/conf.d/servertag.conf”: 	. 	. 	content => template(“apache/servertag.erb”) } servertag.erb: Header set X-httpd<%= hostname %> 12/04/2010 DevOps 2010 Brazil © Carla Souza
Sample CodeFile Source Selection file{“/etc/httpd/conf/httpd.conf”: 	source  =>	[“puppet:///apache/httpd.conf.${fqdn}”, 			 “puppet:///apache/httpd.conf.${domain}”, 			 “puppet:///apache/httpd.conf”] } 12/04/2010 DevOps 2010 Brazil © Carla Souza
Puppet puppetlabs.com github.com/puppetlabs Follow me: github.com/carlasouza carla.asouza@gmail.com 12/04/2010 DevOps 2010 Brazil © Carla Souza
Thank you! 12/04/2010 DevOps 2010 Brazil © Carla Souza

Más contenido relacionado

Similar a Puppet - Automagically Manage your Configuration

Sp24s084 bestpractice_on_upgrading_sharepoint
Sp24s084 bestpractice_on_upgrading_sharepointSp24s084 bestpractice_on_upgrading_sharepoint
Sp24s084 bestpractice_on_upgrading_sharepointKnut Relbe-Moe [MVP, MCT]
 
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...Shift Conference
 
Introducing RaveJS: Spring Boot concepts for JavaScript applications
Introducing RaveJS: Spring Boot concepts for JavaScript applicationsIntroducing RaveJS: Spring Boot concepts for JavaScript applications
Introducing RaveJS: Spring Boot concepts for JavaScript applicationsJohn Hann
 
Inithub.org presentation
Inithub.org presentationInithub.org presentation
Inithub.org presentationAaron Welch
 
SharePoint 2016 Is Coming! Are You Ready?
SharePoint 2016 Is Coming! Are You Ready?SharePoint 2016 Is Coming! Are You Ready?
SharePoint 2016 Is Coming! Are You Ready?Richard Harbridge
 
Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...
Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...
Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...Christian Tzolov
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Philip Tellis
 
Writing Prefork Workers / Servers
Writing Prefork Workers / ServersWriting Prefork Workers / Servers
Writing Prefork Workers / ServersKazuho Oku
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Eugenio Minardi
 
Dist::Zilla - A very brief introduction
Dist::Zilla - A very brief introductionDist::Zilla - A very brief introduction
Dist::Zilla - A very brief introductionDean Hamstead
 
UMD User's Group: DrupalCon 2011, Chicago
UMD User's Group: DrupalCon 2011, ChicagoUMD User's Group: DrupalCon 2011, Chicago
UMD User's Group: DrupalCon 2011, Chicagobrockfanning
 
Ubuntu And Parental Controls
Ubuntu And Parental ControlsUbuntu And Parental Controls
Ubuntu And Parental Controlsjasonholtzapple
 
User Group Meeting PaperVision3D
User Group Meeting PaperVision3DUser Group Meeting PaperVision3D
User Group Meeting PaperVision3DAlmog Koren
 
Pinax Long Tutorial Slides
Pinax Long Tutorial SlidesPinax Long Tutorial Slides
Pinax Long Tutorial SlidesDaniel Greenfeld
 
Web Hosting Pilot - NC State University
Web Hosting Pilot - NC State UniversityWeb Hosting Pilot - NC State University
Web Hosting Pilot - NC State UniversityJason Austin
 
Ready, Set, Upgrade!
Ready, Set, Upgrade!Ready, Set, Upgrade!
Ready, Set, Upgrade!Cory Peters
 

Similar a Puppet - Automagically Manage your Configuration (20)

Sp24s084 bestpractice_on_upgrading_sharepoint
Sp24s084 bestpractice_on_upgrading_sharepointSp24s084 bestpractice_on_upgrading_sharepoint
Sp24s084 bestpractice_on_upgrading_sharepoint
 
drupal_training
drupal_trainingdrupal_training
drupal_training
 
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
 
Introducing RaveJS: Spring Boot concepts for JavaScript applications
Introducing RaveJS: Spring Boot concepts for JavaScript applicationsIntroducing RaveJS: Spring Boot concepts for JavaScript applications
Introducing RaveJS: Spring Boot concepts for JavaScript applications
 
Drupal Devministration
Drupal DevministrationDrupal Devministration
Drupal Devministration
 
Drools Workshop 2015 - LATAM
Drools Workshop 2015 - LATAMDrools Workshop 2015 - LATAM
Drools Workshop 2015 - LATAM
 
Inithub.org presentation
Inithub.org presentationInithub.org presentation
Inithub.org presentation
 
SharePoint 2016 Is Coming! Are You Ready?
SharePoint 2016 Is Coming! Are You Ready?SharePoint 2016 Is Coming! Are You Ready?
SharePoint 2016 Is Coming! Are You Ready?
 
Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...
Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...
Machines Can Learn - a Practical Take on Machine Intelligence Using Spring Cl...
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
 
Writing Prefork Workers / Servers
Writing Prefork Workers / ServersWriting Prefork Workers / Servers
Writing Prefork Workers / Servers
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
 
Dist::Zilla - A very brief introduction
Dist::Zilla - A very brief introductionDist::Zilla - A very brief introduction
Dist::Zilla - A very brief introduction
 
UMD User's Group: DrupalCon 2011, Chicago
UMD User's Group: DrupalCon 2011, ChicagoUMD User's Group: DrupalCon 2011, Chicago
UMD User's Group: DrupalCon 2011, Chicago
 
Ubuntu And Parental Controls
Ubuntu And Parental ControlsUbuntu And Parental Controls
Ubuntu And Parental Controls
 
Automated Drupal deployment with Git and Capistrano
Automated Drupal deployment with Git and CapistranoAutomated Drupal deployment with Git and Capistrano
Automated Drupal deployment with Git and Capistrano
 
User Group Meeting PaperVision3D
User Group Meeting PaperVision3DUser Group Meeting PaperVision3D
User Group Meeting PaperVision3D
 
Pinax Long Tutorial Slides
Pinax Long Tutorial SlidesPinax Long Tutorial Slides
Pinax Long Tutorial Slides
 
Web Hosting Pilot - NC State University
Web Hosting Pilot - NC State UniversityWeb Hosting Pilot - NC State University
Web Hosting Pilot - NC State University
 
Ready, Set, Upgrade!
Ready, Set, Upgrade!Ready, Set, Upgrade!
Ready, Set, Upgrade!
 

Último

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
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
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
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Último (20)

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
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
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
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Puppet - Automagically Manage your Configuration

  • 1. Puppet AutomagicallyManageYour Configuration 12/04/2010 Carla Souza DevOps 2010 Brazil © Carla Souza
  • 2. 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 3. 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 4. 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 5. Typical Sysadmin Job Repetitive Manual Tedious 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 6. Typical Sysadmin Job Installation 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 7. Typical Sysadmin Job Installation Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 8. Typical Sysadmin Job Installation Updates Fixes Audits Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 9. Typical Sysadmin Job Installation Updates Fixes Audits Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 10. After Configuration... Whatwas itconfigured? How? Why? 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 11. After Configuration... Whatwas itconfigured? How? Why? WeneedDocumentation! 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 12. Documentation Whenwas it configured? Who configured it? What were the configuration's objectives? 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 13. Documentation Whenwas itconfigured? Who configured it? What were the configuration's objectives? Beconsistent 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 14. After configuration... Is it wellconfigured? 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 15. After configuration... Is it wellconfigured? Badconfiguration is worsethan no configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 16. After configuration... Is it wellconfigured? Badconfiguration is worsethen no configuration Wemakemistakes! 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 17. After configuration... Is it wellconfigured? Badconfiguration is worsethen no configuration Wemakemistakes! WeneedTests! 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 18. Tests Is the configuration correct? Is it correctlyconfigured? 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 19. After Configuration... How to ensurethat it willstayconfiguredcorrectly over time? 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 20. After Configuration... How to ensure that it will stay configured correctly over time? We need Maintenance! 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 21. Maintenance Repetitive work Every time yourepeatonejob, youwaste time 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 22. Maintenance Repetitive work Every time you repeat onejob, you waste time MONEY 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 23. Documentation + Tests + Maintenance 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 24. Documentation + Tests + Maintenance = Spend more time then you think 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 25. Documentation + Tests + Maintenance = Spend more time then you think = Less time for real important work 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 26. The more applications I have 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 27. The more applications I have = More Risks 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 28. The more applications I have = More Risks + More need for documentation 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 29. Cumulative Effect The time left will be only for fire fighting 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 30. Cumulative Effect The time left will be only for fire fighting Important tasks will be left behind 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 31. Cumulative Effect The time left will be only for fire fighting Important tasks will be left behind Backups Documentation update User’s tickets 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 32. Automation Good admins write their own tools 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 33. Automation Good admins write their own tools Install: Kickstart, jumpstart, imaging Configuration + maintenance: SSH in a for loop Ssh keys distributed over the network = lack of secutiry 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 34. Automation tools Great for ad-hoc or one time only tasks Can be pushed out via cron 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 35. Automation tools But do you always write scripts that are: 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 36. Automation tools But do you always write scripts that are: Concurrent safe? Testable? Reversible? Legible? Full of good logging? Portable? 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 37. Wish list Simple solutions 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 38. Wish list Simplesolutions ElegantDomainSpecificLanguage (DSL) Manageyourserversbywritingcode, notrunningcommands Platformindependent Centralized Version Controlled 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 39. Wish list Simplesolutions Easy to extend Selfdocumenting Commercial support and trainning Open source 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 40. Puppet A Puppet Labs product Since 2005 Written in Ruby Extensible by modules Client-server architecture (client pull) 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 41. Puppet File server SSL Certificates Very active and helpful community Mailing lists, #puppet @ freenode Open Source hosted on Github (GPL) https://github.com/puppetlabs Book 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 42. Puppet 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 43. Puppet Installation Updates Fixes Audits Configuration 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 44. Components puppetmaster Server daemon Run as ‘puppet’ user 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 45. Components puppetmaster Server daemon Run as ‘puppet’ user puppetd Client daemon Run as root Pulling every 30min (default value) 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 46. Components puppetca Puppet’s Certificate Authority 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 47. Components puppetca Puppet’s Certificate Authority Facter Gathers basic information about node’s hardware and operation system 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 48. Elements Types A type is a particular element that Puppet knows how to configure 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 49. Elements Types A type is a particular element that Puppet knows how to configure Classes A named collection of type objects 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 50. Elements Providers Specific implementation of a given resource type 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 51. Elements Providers Specific implementation of a given resource type type: package 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 52. Elements Providers Specific implementation of a given resource type type: package providers: yum, dpkg, aptitude, apple, rpm, gem, freebsd 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 53. Puppet’s installation yum install puppet-server puppet apt-get install puppetmaster puppet gem install puppet-2.6.4.gem 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 54. Sample CodeInstall, Configure and Start Apache 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: ensure => present, } file {“/etc/httpd/conf/httpd.conf”: owner => root, group => root, mode => 644, source => puppet:///modules/apache/httpd.conf, } service {“httpd”: ensure => running, enable => true, }
  • 55. Sample CodeResource Types 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: ensure => present, } file {“/etc/httpd/conf/httpd.conf”: owner => root, group => root, mode => 644, source => puppet:///modules/apache/httpd.conf, } service {“httpd”: ensure => running, enable => true, }
  • 56. Sample CodeResource Titles 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: ensure => present, } file {“/etc/httpd/conf/httpd.conf”: owner => root, group => root, mode => 644, source => puppet:///modules/apache/httpd.conf, } service {“httpd”: ensure => running, enable => true, }
  • 57. Sample CodeResources Parameters 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: ensure => present, } file {“/etc/httpd/conf/httpd.conf”: owner => root, group => root, mode => 644, source => puppet:///modules/apache/httpd.conf, } service {“httpd”: ensure => running, enable => true, }
  • 58. Sample CodeResources Parameters 12/04/2010 DevOps 2010 Brazil © Carla Souza package {“httpd”: ensure => present, } file {“/etc/httpd/conf/httpd.conf”: owner => root, group => root, mode => 644, source => puppet:///modules/apache/httpd.conf, require => Package[“httpd”] } service {“httpd”: ensure => running, enable => true, require => File[“/etc/httpd/conf/httpd.conf”] }
  • 59. Sample CodeResponding to change 12/04/2010 DevOps 2010 Brazil © Carla Souza file{“/etc/httpd/conf/httpd.conf”: . . notify => Service[“httpd”] } OR service{“httpd”: . . subscribe => File[“/etc/httpd/conf/httpd.conf”] }
  • 60. Sample CodeResource collections class apache { include apache::install include apache::config include apache::service } class apache::install { package{.....}, package{.....} } class apache::config { file{..... require => Class[“apache::install”], notify => Class[“apache::service”], } } class apache::service { service{..... require => Class[“apache::config”] } } 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 61. Sample CodeResource collections class apache { include apache::install include apache::config include apache::service } class apache::install { package{.....}, package{.....} } class apache::config { file{..... require => Class[“apache::install”], notify => Class[“apache::service”], } } class apache::service { service{..... require => Class[“apache::config”] } } 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 62. Sample CodeResource collections class apache { include apache::install include apache::config include apache::service } class apache::install { package{.....}, package{.....} } class apache::config { file{..... require => Class[“apache::install”], notify => Class[“apache::service”], } } class apache::service { service{..... require => Class[“apache::config”] } } 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 63. Elements Nodes A configuration block matching a client 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 64. Sample CodeNodes configuration node “web1.your.com” { include apache } 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 65. Elements Templates Apply code and variable substitution Uses ERB 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 66. Sample CodeTemplates file{“/etc/httpd/conf.d/servertag.conf”: . . content => template(“apache/servertag.erb”) } servertag.erb: Header set X-httpd<%= hostname %> 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 67. Sample CodeFile Source Selection file{“/etc/httpd/conf/httpd.conf”: source => [“puppet:///apache/httpd.conf.${fqdn}”, “puppet:///apache/httpd.conf.${domain}”, “puppet:///apache/httpd.conf”] } 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 68. Puppet puppetlabs.com github.com/puppetlabs Follow me: github.com/carlasouza carla.asouza@gmail.com 12/04/2010 DevOps 2010 Brazil © Carla Souza
  • 69. Thank you! 12/04/2010 DevOps 2010 Brazil © Carla Souza