SlideShare a Scribd company logo

Master Chef class: learn how to quickly cook delightful CQ/AEM infrastructures

ConnectCon 2014 presentation Francois and Nicolas share their latest experiment coding AEM 6 infrastructure with Chef. Learn how to start from bare metal - virtual, physical or cloud - servers and turn them, in matter of minutes, into a production ready AEM 6 infrastructure. Think author and publish farms, optional SSL, dispatcher, and clustering with MongoDB) Meanwhile you’ll be given a comprehensive overview of Chef resources and techniques enabling you to accelerate, scale, simplify and secure your development and release workflow.

1 of 74
Download to read offline
© 2014 Adobe Systems Incorporated.
All Rights Reserved.
Master Chef class
https://github.com/francoisledroff/connectcon-chef-repo
http://www.slideshare.net/francoisledroff/master-chef-class-learn-how-to-quickly-cook-delightful-cqaem-infrastructures
Francois Le Droff – Nicolas Peltier
Let’s cook delightful AEM infrastructures
/master-chef-class-learn-how-to-quickly-cook-delightful-cqaem-infrastructures
© 2014 Adobe Systems Incorporated.
All Rights Reserved.
@francoisledroff
© 2014 Adobe Systems Incorporated.
All Rights Reserved.
@npeltier
© 2014 Adobe Systems Incorporated.
All Rights Reserved.
Agenda
•!What
•!How
•!Why
© 2014 Adobe Systems Incorporated.
All Rights Reserved.
What ?
© 2014 Adobe Systems Incorporated.
All Rights Reserved.
“ An automation platform
that transforms
infrastructure into code ”

Recommended

CIRCUIT 2015 - AEM Infrastructure Automation with Chef Cookbooks
CIRCUIT 2015 - AEM Infrastructure Automation with Chef CookbooksCIRCUIT 2015 - AEM Infrastructure Automation with Chef Cookbooks
CIRCUIT 2015 - AEM Infrastructure Automation with Chef CookbooksICF CIRCUIT
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAndrew Khoury
 
AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013Andrew Khoury
 
CIRCUIT 2015 - Monitoring AEM
CIRCUIT 2015 - Monitoring AEMCIRCUIT 2015 - Monitoring AEM
CIRCUIT 2015 - Monitoring AEMICF CIRCUIT
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAshokkumar T A
 
The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)Venugopal Gummadala
 

More Related Content

What's hot

Adobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office HoursAdobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office HoursAndrew Khoury
 
CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013Andrew Khoury
 
New Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael MarthNew Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael MarthAEM HUB
 
The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6Jukka Zitting
 
Chef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Software, Inc.
 
Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Software, Inc.
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to ChefKnoldus Inc.
 
Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5Chef
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Software, Inc.
 
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Software, Inc.
 
Apache Jackrabbit Oak on MongoDB
Apache Jackrabbit Oak on MongoDBApache Jackrabbit Oak on MongoDB
Apache Jackrabbit Oak on MongoDBMongoDB
 
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2Node setup, resource, and recipes - Fundamentals Webinar Series Part 2
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2Chef
 
Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Chef
 
Community Cookbooks & further resources - Fundamentals Webinar Series Part 6
Community Cookbooks & further resources - Fundamentals Webinar Series Part 6Community Cookbooks & further resources - Fundamentals Webinar Series Part 6
Community Cookbooks & further resources - Fundamentals Webinar Series Part 6Chef
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Software, Inc.
 
Opscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with ChefOpscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with ChefChef Software, Inc.
 
Common configuration with Data Bags - Fundamentals Webinar Series Part 4
Common configuration with Data Bags - Fundamentals Webinar Series Part 4Common configuration with Data Bags - Fundamentals Webinar Series Part 4
Common configuration with Data Bags - Fundamentals Webinar Series Part 4Chef
 
Scaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem SessionScaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem SessionMichael Marth
 

What's hot (20)

Adobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office HoursAdobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office Hours
 
CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013
 
New Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael MarthNew Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael Marth
 
Aem offline content
Aem offline contentAem offline content
Aem offline content
 
The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6
 
Chef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation Setup
 
Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of Chef
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 
Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
 
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
 
Apache Jackrabbit Oak on MongoDB
Apache Jackrabbit Oak on MongoDBApache Jackrabbit Oak on MongoDB
Apache Jackrabbit Oak on MongoDB
 
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2Node setup, resource, and recipes - Fundamentals Webinar Series Part 2
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2
 
Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3
 
Community Cookbooks & further resources - Fundamentals Webinar Series Part 6
Community Cookbooks & further resources - Fundamentals Webinar Series Part 6Community Cookbooks & further resources - Fundamentals Webinar Series Part 6
Community Cookbooks & further resources - Fundamentals Webinar Series Part 6
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
 
Opscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with ChefOpscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with Chef
 
Common configuration with Data Bags - Fundamentals Webinar Series Part 4
Common configuration with Data Bags - Fundamentals Webinar Series Part 4Common configuration with Data Bags - Fundamentals Webinar Series Part 4
Common configuration with Data Bags - Fundamentals Webinar Series Part 4
 
Scaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem SessionScaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem Session
 
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance
 

Viewers also liked

AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentGabriel Walt
 
Enabing DevOps in an SDN World
Enabing DevOps in an SDN WorldEnabing DevOps in an SDN World
Enabing DevOps in an SDN WorldCisco DevNet
 
Agnostic Continuous Delivery
Agnostic Continuous DeliveryAgnostic Continuous Delivery
Agnostic Continuous DeliveryHervé Leclerc
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Tracy Kennedy
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 
DevOps & Security from an Enterprise Toolsmith's Perspective
DevOps & Security from an Enterprise Toolsmith's PerspectiveDevOps & Security from an Enterprise Toolsmith's Perspective
DevOps & Security from an Enterprise Toolsmith's Perspectivedev2ops
 
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)dev2ops
 
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsPublicis Sapient Engineering
 
Aem authentication vs idp
Aem authentication vs idpAem authentication vs idp
Aem authentication vs idpSaroj Mishra
 
CIRCUIT 2015 - Hybrid App Development with AEM Apps
CIRCUIT 2015 - Hybrid App Development with AEM AppsCIRCUIT 2015 - Hybrid App Development with AEM Apps
CIRCUIT 2015 - Hybrid App Development with AEM AppsICF CIRCUIT
 
User Interface customization for AEM 6
User Interface customization for AEM 6User Interface customization for AEM 6
User Interface customization for AEM 6Damien Antipa
 
AEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkAEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkPaolo Mottadelli
 
Microservices Architecture for AEM
Microservices Architecture for AEMMicroservices Architecture for AEM
Microservices Architecture for AEMMaciej Majchrzak
 
AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...
AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...
AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...AppDynamics
 

Viewers also liked (20)

Journey into dev ops
Journey into dev opsJourney into dev ops
Journey into dev ops
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
 
Enabing DevOps in an SDN World
Enabing DevOps in an SDN WorldEnabing DevOps in an SDN World
Enabing DevOps in an SDN World
 
Agnostic Continuous Delivery
Agnostic Continuous DeliveryAgnostic Continuous Delivery
Agnostic Continuous Delivery
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
(Re)discover your AEM
(Re)discover your AEM(Re)discover your AEM
(Re)discover your AEM
 
DevOps & Security from an Enterprise Toolsmith's Perspective
DevOps & Security from an Enterprise Toolsmith's PerspectiveDevOps & Security from an Enterprise Toolsmith's Perspective
DevOps & Security from an Enterprise Toolsmith's Perspective
 
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)
 
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
 
Aem authentication vs idp
Aem authentication vs idpAem authentication vs idp
Aem authentication vs idp
 
AEM - Client Libraries
AEM - Client LibrariesAEM - Client Libraries
AEM - Client Libraries
 
REST in AEM
REST in AEMREST in AEM
REST in AEM
 
CIRCUIT 2015 - Hybrid App Development with AEM Apps
CIRCUIT 2015 - Hybrid App Development with AEM AppsCIRCUIT 2015 - Hybrid App Development with AEM Apps
CIRCUIT 2015 - Hybrid App Development with AEM Apps
 
User Interface customization for AEM 6
User Interface customization for AEM 6User Interface customization for AEM 6
User Interface customization for AEM 6
 
AEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkAEM (CQ) eCommerce Framework
AEM (CQ) eCommerce Framework
 
Microservices Architecture for AEM
Microservices Architecture for AEMMicroservices Architecture for AEM
Microservices Architecture for AEM
 
Chef: Smart infrastructure automation
Chef: Smart infrastructure automationChef: Smart infrastructure automation
Chef: Smart infrastructure automation
 
Techzone 2014 presentation rundeck
Techzone 2014 presentation rundeckTechzone 2014 presentation rundeck
Techzone 2014 presentation rundeck
 
AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...
AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...
AppSphere 15 - DevOps and Agile: AppDynamics in Continuous Integration Enviro...
 

Similar to Master Chef class: learn how to quickly cook delightful CQ/AEM infrastructures

SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
SELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with ChefSELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with ChefChef Software, Inc.
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerGeorge Miranda
 
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Patrick McDonnell
 
Chef, Devops, and You
Chef, Devops, and YouChef, Devops, and You
Chef, Devops, and YouBryan Berry
 
Configuration Management with Puppet
Configuration Management with Puppet Configuration Management with Puppet
Configuration Management with Puppet Rachel Andrew
 
Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2Sylvain Tissot
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
ConFoo 2016: Development to Deployment
ConFoo 2016: Development to DeploymentConFoo 2016: Development to Deployment
ConFoo 2016: Development to DeploymentRachel Andrew
 
Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015Jennifer Davis
 
Using Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsUsing Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsClayton Parker
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker budMandi Walls
 
Chaione Ember.js Training
Chaione Ember.js TrainingChaione Ember.js Training
Chaione Ember.js Trainingaortbals
 
Using Nagios with Chef
Using Nagios with ChefUsing Nagios with Chef
Using Nagios with ChefBryan McLellan
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 

Similar to Master Chef class: learn how to quickly cook delightful CQ/AEM infrastructures (20)

The Environment Restaurant
The Environment RestaurantThe Environment Restaurant
The Environment Restaurant
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
 
SELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with ChefSELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with Chef
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and Packer
 
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
 
Chef, Devops, and You
Chef, Devops, and YouChef, Devops, and You
Chef, Devops, and You
 
Configuration Management with Puppet
Configuration Management with Puppet Configuration Management with Puppet
Configuration Management with Puppet
 
Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2
 
IT Automation with Chef
IT Automation with ChefIT Automation with Chef
IT Automation with Chef
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
ConFoo 2016: Development to Deployment
ConFoo 2016: Development to DeploymentConFoo 2016: Development to Deployment
ConFoo 2016: Development to Deployment
 
Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015
 
Using Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsUsing Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python Projects
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
 
Chaione Ember.js Training
Chaione Ember.js TrainingChaione Ember.js Training
Chaione Ember.js Training
 
Using Nagios with Chef
Using Nagios with ChefUsing Nagios with Chef
Using Nagios with Chef
 
Full-Stack CakePHP Deployment
Full-Stack CakePHP DeploymentFull-Stack CakePHP Deployment
Full-Stack CakePHP Deployment
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 

More from François Le Droff

Implémentez une intégration avec AEM presque sans code
Implémentez une intégration avec AEM presque sans codeImplémentez une intégration avec AEM presque sans code
Implémentez une intégration avec AEM presque sans codeFrançois Le Droff
 
Master chef and puppet show - Devoxx France 2014
Master chef and puppet show - Devoxx France 2014Master chef and puppet show - Devoxx France 2014
Master chef and puppet show - Devoxx France 2014François Le Droff
 
Soirée Flex/RIA au Nantes jug
Soirée Flex/RIA au Nantes jugSoirée Flex/RIA au Nantes jug
Soirée Flex/RIA au Nantes jugFrançois Le Droff
 
Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...
Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...
Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...François Le Droff
 
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open sourceSoirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open sourceFrançois Le Droff
 
Quality Best Practices & Toolkit for Enterprise Flex
Quality Best Practices & Toolkit for Enterprise FlexQuality Best Practices & Toolkit for Enterprise Flex
Quality Best Practices & Toolkit for Enterprise FlexFrançois Le Droff
 
Flex Services And Spring with Spring-Flex ParisJug
Flex Services And Spring with Spring-Flex ParisJugFlex Services And Spring with Spring-Flex ParisJug
Flex Services And Spring with Spring-Flex ParisJugFrançois Le Droff
 
The Spring of Adobe Flex Remoting
The Spring of Adobe Flex RemotingThe Spring of Adobe Flex Remoting
The Spring of Adobe Flex RemotingFrançois Le Droff
 
Flex Continuous Quality Builds Flex & (Ant || Maven)
Flex Continuous Quality Builds Flex & (Ant || Maven)Flex Continuous Quality Builds Flex & (Ant || Maven)
Flex Continuous Quality Builds Flex & (Ant || Maven)François Le Droff
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 

More from François Le Droff (13)

Implémentez une intégration avec AEM presque sans code
Implémentez une intégration avec AEM presque sans codeImplémentez une intégration avec AEM presque sans code
Implémentez une intégration avec AEM presque sans code
 
Master chef and puppet show - Devoxx France 2014
Master chef and puppet show - Devoxx France 2014Master chef and puppet show - Devoxx France 2014
Master chef and puppet show - Devoxx France 2014
 
Soirée Flex/RIA au Nantes jug
Soirée Flex/RIA au Nantes jugSoirée Flex/RIA au Nantes jug
Soirée Flex/RIA au Nantes jug
 
Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...
Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...
Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX ...
 
Flex & Java @ TourJUG
Flex & Java @ TourJUGFlex & Java @ TourJUG
Flex & Java @ TourJUG
 
Flex & Java @ NormandieJUG
Flex & Java @ NormandieJUGFlex & Java @ NormandieJUG
Flex & Java @ NormandieJUG
 
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open sourceSoirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
 
Quality Best Practices & Toolkit for Enterprise Flex
Quality Best Practices & Toolkit for Enterprise FlexQuality Best Practices & Toolkit for Enterprise Flex
Quality Best Practices & Toolkit for Enterprise Flex
 
Flash Catalyst Jug
Flash Catalyst JugFlash Catalyst Jug
Flash Catalyst Jug
 
Flex Services And Spring with Spring-Flex ParisJug
Flex Services And Spring with Spring-Flex ParisJugFlex Services And Spring with Spring-Flex ParisJug
Flex Services And Spring with Spring-Flex ParisJug
 
The Spring of Adobe Flex Remoting
The Spring of Adobe Flex RemotingThe Spring of Adobe Flex Remoting
The Spring of Adobe Flex Remoting
 
Flex Continuous Quality Builds Flex & (Ant || Maven)
Flex Continuous Quality Builds Flex & (Ant || Maven)Flex Continuous Quality Builds Flex & (Ant || Maven)
Flex Continuous Quality Builds Flex & (Ant || Maven)
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 

Recently uploaded

"Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ...
"Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ..."Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ...
"Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ...ISPMAIndia
 
AI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit BendigiriAI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit BendigiriISPMAIndia
 
Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...
Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...
Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...ISPMAIndia
 
maximum subarray ppt for killing camp students
maximum subarray ppt for killing camp studentsmaximum subarray ppt for killing camp students
maximum subarray ppt for killing camp studentsssuser82c38d
 
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)GDSCNiT
 
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdfAUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdfAutokey
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!Anthony Dahanne
 
Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Jeffrey Haguewood
 
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkDBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkTimothy Spann
 
killing camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdfkilling camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdfssuser82c38d
 
"Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A...
"Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A..."Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A...
"Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A...ISPMAIndia
 
LLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowLLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowNaoki (Neo) SATO
 
sql ppt for students who preparing for sql
sql ppt for students who preparing for sqlsql ppt for students who preparing for sql
sql ppt for students who preparing for sqlbharatjanadharwarud
 
Getting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptxGetting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptxmavinoikein
 
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...emili denli
 
OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20Shane Coughlan
 
killingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdfkillingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdfssuser82c38d
 
SPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product ManagementSPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product ManagementISPMAIndia
 
P1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 SmartsheetP1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 SmartsheetMatthewTHawley
 

Recently uploaded (20)

"Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ...
"Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ..."Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ...
"Taking an idea to a Product in Health diagnostics" by Dr. Geetha Manjunath, ...
 
AI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit BendigiriAI Product Management by Abhijit Bendigiri
AI Product Management by Abhijit Bendigiri
 
Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...
Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...
Product Manager vs Product Owner – Why Do Companies Still Struggle 23 Years A...
 
eLearning Content Development Company Code and Pixels.pdf
eLearning Content Development Company Code and Pixels.pdfeLearning Content Development Company Code and Pixels.pdf
eLearning Content Development Company Code and Pixels.pdf
 
maximum subarray ppt for killing camp students
maximum subarray ppt for killing camp studentsmaximum subarray ppt for killing camp students
maximum subarray ppt for killing camp students
 
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
Open Sprintera (Where Open Source Sparks a Sprint of Possibilities)
 
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdfAUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
AUTOKEYUNLOCKER-BRANDS-SUPPORT-STANDARD-VERSION.pdf
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
 
Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)
 
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkDBA Fundamentals Group: Continuous SQL with Kafka and Flink
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
 
killing camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdfkilling camp week 6 problem - maximal matrix.pdf
killing camp week 6 problem - maximal matrix.pdf
 
"Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A...
"Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A..."Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A...
"Discovery and Delivery through Product IntelliGenAI framework" by Ramkumar A...
 
LLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowLLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flow
 
sql ppt for students who preparing for sql
sql ppt for students who preparing for sqlsql ppt for students who preparing for sql
sql ppt for students who preparing for sql
 
Getting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptxGetting Started with Trello for Beginners.pptx
Getting Started with Trello for Beginners.pptx
 
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
The Game-Changer_ How Software Development Outsource Can Catapult Your Growth...
 
OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20OpenChain AI Study Group - North America and Europe - 2024-02-20
OpenChain AI Study Group - North America and Europe - 2024-02-20
 
killingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdfkillingcamp longest common subsequence.pdf
killingcamp longest common subsequence.pdf
 
SPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product ManagementSPM 2024 – Overview of and benefits of AI in Product Management
SPM 2024 – Overview of and benefits of AI in Product Management
 
P1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 SmartsheetP1 Inspection Types in Municity 5 Smartsheet
P1 Inspection Types in Municity 5 Smartsheet
 

Master Chef class: learn how to quickly cook delightful CQ/AEM infrastructures

  • 1. © 2014 Adobe Systems Incorporated. All Rights Reserved. Master Chef class https://github.com/francoisledroff/connectcon-chef-repo http://www.slideshare.net/francoisledroff/master-chef-class-learn-how-to-quickly-cook-delightful-cqaem-infrastructures Francois Le Droff – Nicolas Peltier Let’s cook delightful AEM infrastructures /master-chef-class-learn-how-to-quickly-cook-delightful-cqaem-infrastructures
  • 2. © 2014 Adobe Systems Incorporated. All Rights Reserved. @francoisledroff
  • 3. © 2014 Adobe Systems Incorporated. All Rights Reserved. @npeltier
  • 4. © 2014 Adobe Systems Incorporated. All Rights Reserved. Agenda •!What •!How •!Why
  • 5. © 2014 Adobe Systems Incorporated. All Rights Reserved. What ?
  • 6. © 2014 Adobe Systems Incorporated. All Rights Reserved. “ An automation platform that transforms infrastructure into code ”
  • 7. © 2014 Adobe Systems Incorporated. All Rights Reserved. Infrastructure ? noun ˈin-frə-ˌstrək-chər [1] A Collection of –!Resources: •! Network nodes •! File systems, files, folders, symbolic links, disk mounts •! Users, groups •! Packages, software •! Configurations –!Acting in concert –!To offer a service –! [1] Introduction to Chef
  • 8. © 2014 Adobe Systems Incorporated. All Rights Reserved. Infrastructure as Code? •! Does not only replace your shell scripts •! Does allow: –! to build your infra from a set of bare metal servers (called Nodes) Even on heterogeneous OS and Architecture –! to abstract the convergence of your infrastructure (your Nodes) through code –! to make this (Nodes) convergence idempotent State A --> State B (ex: install) Chef Client finished, 147/153 resources updated State B --> State B (ex: check) Chef Client finished, 0/153 resources updated State C --> State B (ex: back to normal) Chef Client finished, 48/153 resources updated
  • 9. © 2014 Adobe Systems Incorporated. All Rights Reserved. •! Created in 2009, Edited by Opscode/Chef •! Apache License •! On-top-of/in Ruby •! Very active community •! http://community.opscode.com •! #learnChef •! https://learnchef.opscode.com/ Chef ? p://community.opscode.com
  • 10. © 2014 Adobe Systems Incorporated. All Rights Reserved. What does Chef code look like ? •! Recipes •! Attributes •! Resources •! Cookbooks
  • 11. © 2014 Adobe Systems Incorporated. All Rights Reserved. Recipes Fundamental configuration element •! Authored in Ruby •! Queries , defines attributes •! Manipulates Resources •! Manipulates LW Resources •! Leverages Libraries & Templates •! Stored in Cookbooks –! Default Attributes –! Recipes –! LW Resource Providers –! Libraries –! Templates recipes cookbooks
  • 12. © 2014 Adobe Systems Incorporated. All Rights Reserved. •! aem-cookbook/recipes/default.rb case node['platform_family'] when 'rhel' log 'this platform family is supported' do level :info end else log 'this platform family is not supported' do level :warn end end •! aem-cookbook/attributes/node.rb default['aem']['mode'] = 'publish' default['aem']['port'] = '4503' default['aem']['url'] = 'http://localhost:'+ node['aem'] ['port'] default['aem']['mode'] = 'publish' default['aem']['port'] = '4503' default['aem']['url'] = 'http://localhost:'+ node['aemaem'] ['port'] aem-cookbook/recipes/default.rb case node['platform_family'] when 'rhel' log 'this platform family is supported' do level :info end else log 'this platform family is not supported' do level :warn end end Attributes attributes
  • 13. © 2014 Adobe Systems Incorporated. All Rights Reserved. Recipes : Resources & LW Resources •! aem-cookbook/recipes/default.rb remote_file node['aem']['quickstart_jar'] do source node['aem']['repo_url'] owner node['aem']['user'] group node['aem']['group'] checksum '3043859473' action :create_if_missing notifies :restart, 'service[aem]', :delayed end or artifact_file node['aem']['quickstart_jar'] do location 'com.day.cq:cq5:jar:5.5.0.20120220' nexus_configuration nexus_configuration_object owner node['aem']['user'] group node['aem']['group'] notifies :restart, 'service[aem]', :delayed end artifact_file node['aem']['quickstart_jar'] do location 'com.day.cq:cq5:jar:5.5.0.20120220' nexus_configuration nexus_configuration_object owner node['aem']['user'] group node['aem']['group'] notifies :restart, 'service[aem]', :delayed end remote_file node['aem']['quickstart_jar'] do source node['aem']['repo_url'] owner node['aem']['user'] group node['aem']['group'] checksum '3043859473' action :create_if_missing notifies :restart, 'service[aem]', :delayed end recipes
  • 14. © 2014 Adobe Systems Incorporated. All Rights Reserved. Recipes : AEM LW Resources •! tacit-aem-cookbook/recipes/author.rb node[:aem][:author][:deploy_pkgs].each do |pkg| aem_package pkg[:name] do version pkg[:version] aem_instance ‘author’ package_url pkg[:url] update pkg[:update] user node[:aem][:author][:admin_user] password node[:aem][:author][:admin_password] port node[:aem][:author][:port] group_id pkg[:group_id] recursive pkg[:recursive] properties_file pkg[:properties_file] version_pattern pkg[:version_pattern] action pkg[:action] end end node[:aem][:author][:deploy_pkgs].each do |pkg| aem_package pkg[:name] do version pkg[:version] aem_instance ‘author’ package_url pkg[:url] update pkg[:update] user node[:aem][:author][:admin_user] password node[:aem][:author][:admin_password] port node[:aem][:author][:port] group_id pkg[:group_id] recursive pkg[:recursive] properties_file pkg[:properties_file] version_pattern pkg[:version_pattern] action pkg[:action] end end recipes
  • 15. © 2014 Adobe Systems Incorporated. All Rights Reserved. –! aem-cookbook/recipes/start.rb ruby_block 'block_until_cq_operational' do block do Chef::Log.info 'Waiting until CQ is listening on port '+node['aem']['port'] until CQHelper.service_listening?(node['aem']['port']) sleep 1 Chef::Log.info('.') end Chef::Log.info 'Waiting until the CQ default page is responding' test_url = URI.parse(node['aem']['url']) until CQHelper.endpoint_responding?(test_url) sleep 1 Chef::Log.info('.') end end action :nothing end Recipes: Libraries recipes © 2014 Adobe Systems Incorporated.© 2014 Adobe Systems Incorporated. ruby_block 'block_until_cq_operational' do block do Chef::Log.info 'Waiting until CQ is listening on port '+node['aem']['port'] until CQHelper.service_listening?(node['aem']['port']) sleep 1 Chef::Log.info('.') end Chef::Log.info 'Waiting until the CQ default page is responding' test_url = URI.parse(node['aem']['url']) until CQHelper.endpoint_responding?(test_url) sleep 1 Chef::Log.info('.') end end action :nothing end
  • 16. © 2014 Adobe Systems Incorporated. All Rights Reserved. Cookbook patterns [1] •! Library cookbooks: –! https://github.com/RiotGames/artifact-cookbook –! https://github.com/francoisledroff/chef-vault-util •! Application cookbooks –! https://github.com/tacitknowledge/aem-cookbook –! https://github.com/francoisledroff/aem-cookbook –! https://github.com/onehealth-cookbooks/apache2 –! https://github.com/socrata-cookbooks/java –! https://github.com/hw-cookbooks/haproxy –! https://github.com/stevendanna/logrotate –! https://github.com/opscode-cookbooks/chef-splunk •! Organization specific –! Wrapper cookbooks –! Base cookbooks –! Environment cookbooks [1] http://blog.vialstudios.com/the-environment-cookbook-pattern/ Library cookbooks: ps://github.com/RiotGames/artifact-cookbook ps://github.com/francoisledro cookbooks
  • 17. © 2014 Adobe Systems Incorporated. All Rights Reserved. I got it
  • 18. © 2014 Adobe Systems Incorporated. All Rights Reserved. Wait a quick overview
  • 19. © 2014 Adobe Systems Incorporated. All Rights Reserved. Chef-server nodes
  • 20. © 2014 Adobe Systems Incorporated. All Rights Reserved. workstation Git Chef-server nodes ssh env. roles attributes recipes cookbooks
  • 21. © 2014 Adobe Systems Incorporated. All Rights Reserved. workstation Git Chef-server nodes RSA key Auth ssh knife env. roles attributes recipes Chef-DK data bags cookbooks RSA Keys
  • 22. © 2014 Adobe Systems Incorporated. All Rights Reserved. workstation Git Chef-server nodes RSA key Auth ssh knife env. roles attributes recipes Chef-DK data bags cookbooks RSA Keys Search API cookbooksorg data bags attributes env. recipes node objectrun-list rolesWeb UI versions
  • 23. © 2014 Adobe Systems Incorporated. All Rights Reserved. workstation Git Chef-server nodes RSA key Auth ssh RSA key Auth knife env. roles attributes recipes Chef-DK data bags cookbooks RSA Keys Search API cookbooksorg data bags attributes env. recipes node objectrun-list rolesWeb UI versions chef-clients RSA Key
  • 24. © 2014 Adobe Systems Incorporated. All Rights Reserved. Search APIknife workstation env. roles attributes cookbooks recipes Git org Chef-DK github Nexus opscode rubygem data bags attributes env. data bags cookbooks recipes Chef-server nodes RSA key Auth ssh https yymaven redhat RSA Keys node objectrun-list rolesWeb UI versions RSA key Auth chef-clients RSA Key
  • 25. © 2014 Adobe Systems Incorporated. All Rights Reserved. How ?
  • 26. © 2014 Adobe Systems Incorporated. All Rights Reserved. Use case 0 : one AEM Author author
  • 27. © 2014 Adobe Systems Incorporated. All Rights Reserved. Use case 0 : Chef Automation –! Install the jdk –! Download the jar –! Install it as a service –! A few aem cookbooks on github •! https://github.com/francoisledroff/aem-cookbook •! https://github.com/tacitknowledge/aem-cookbook •! https://github.com/manosriglis/chef-aem •! https://github.com/QVCItalia/chef-aem
  • 28. © 2014 Adobe Systems Incorporated. All Rights Reserved. OSS from opscode and elsewhere Chef, Ruby, rvm, bundler knife workstation Chef-DK opscode $ curl –L https://www.opscode.com/chef/install.sh | sudo bash $ curl -sSL https://get.rvm.io | bash -s stable –- ruby=1.9.3 $ gem install bundler http://www.getchef.com/downloads/chef-dk
  • 29. © 2014 Adobe Systems Incorporated. All Rights Reserved. workstation Git ssh A Chef repo in Git Every Chef automated infra needs a Chef Repository github $ git clone https://github.com/opscode/chef-repo.git Made available for you at https://github.com/francoisledroff/connectcon-chef-repo
  • 30. © 2014 Adobe Systems Incorporated. All Rights Reserved. node Get Few Machines/Nodes to deploy your code/infra to workstation ssh ~/workspace/github/connectcon-chef-repo on ! master! $ vagrant plugin install vagrant-berkshelf --plugin-version 2.0.1 $ cat Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "CentOS-6.4-x86_64" config.vm.hostname = "connectcon-francois" config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/ CentOS-6.4-x86_64-v20130427.box" config.berkshelf.enabled = true End $ vagrant up $ vagrant ssh Welcome to your Vagrant-built virtual machine. [vagrant@connectcon-francois ~]$
  • 31. © 2014 Adobe Systems Incorporated. All Rights Reserved. A Chef Server comes in 3 flavors •! On premise OS Chef Server •! On premise Enterprise Chef •! Hosted Enterprise Chef server •! Local Alternatives: •! Chef-zero •! Chef-solo Chef-server
  • 32. © 2014 Adobe Systems Incorporated. All Rights Reserved. A Chef Org top-level entity for role-based access org Chef-server https (ldap) Auth Web UI ps (ldap) Authps (ldap) Auth https://chef.corp.adobe.com/organizations
  • 33. © 2014 Adobe Systems Incorporated. All Rights Reserved. workstation Git ssh A few private keys to associate your new chef repo with your chef server user and org ~/workspace/github/connectcon-chef-repo on ! master! $ ll .chef total 24 connectcon-validator.pem knife.rb ledroff.pem org Chef-server Web UI https(ldap)Auth RSA Keys
  • 34. © 2014 Adobe Systems Incorporated. All Rights Reserved. Bootstrap your nodes knife workstation Chef-server RSAkeyAuth node org RSA Keys chef-clients RSA Key RSAkeyAuth ~/workspace/github/connectcon-chef-repo on ! master! $ knife bootstrap <your-node-fqdn> --sudo -x <your-sudoer>
  • 35. © 2014 Adobe Systems Incorporated. All Rights Reserved. Chef-server nodes RSA key Auth Search API attributes node objectrun-list chef-clients Node Objects
  • 36. © 2014 Adobe Systems Incorporated. All Rights Reserved. Start Coding: Manage your Ruby dependencies •! Use Bundler for RubyGem ~/workspace/github/connectcon-chef-repo on ! master! $ cat Gemfile source 'https://rubygems.org’ gem 'chef', '~> 11.10.0’ gem 'berkshelf', '~> 3.1.3‘ $ bundle install
  • 37. © 2014 Adobe Systems Incorporated. All Rights Reserved. Start Coding: Manage your Chef dependencies •! A few aem cookbooks on github •! https://github.com/francoisledroff/aem-cookbook •! https://github.com/tacitknowledge/aem-cookbook •! Use Berkshelf $ cat Berksfile source "https://api.berkshelf.com” cookbook 'ntp', '~> 1.5.4' cookbook 'chef-client', '~> 3.2.0’ cookbook 'artifact', git: 'https://github.com/francoisledroff/artifact- cookbook.git', tag: '1.11.4’ cookbook 'aem', git: 'https://github.com/francoisledroff/aem-cookbook
  • 38. © 2014 Adobe Systems Incorporated. All Rights Reserved. Upload your cookbooks chef-client and ntp declared in your chef server org knife workstation org Chef-DK Chef-server httpsRSAkeyAuth RSA Keyscookbooks ~/workspace/github/connectcon-chef-repo on ! master! $ berks install $ berks upload cookbooks
  • 39. © 2014 Adobe Systems Incorporated. All Rights Reserved. Run-list run_list "recipe[chef-client::default]", "recipe[chef-client::delete_validation]", "recipe[ntp]", "recipe[openssl::upgrade]"
  • 40. © 2014 Adobe Systems Incorporated. All Rights Reserved. Role Base name ”base” Description ”connecton base server role” run_list "recipe[chef-client::default]", "recipe[chef-client::delete_validation]", "recipe[ntp]", "recipe[openssl::upgrade]"
  • 41. © 2014 Adobe Systems Incorporated. All Rights Reserved. Typical Roles connectcon-chef-repo/roles/ name ”publish” Description ”connecton aem publish server role” run_list ”role[base]”,”recipe[aem::publish]” Mongo Author Publish Dispatcher HA/LB name "lb_dispatcher" description "connectcon roles for lb" run_list ”role[base]”,”recipe[haproxy::app_lb]” override_attributes('haproxy' => {'app_server_role' => ’dispatcher’}) Base name ”base” Description ”connecton base server role” run_list "recipe[chef-client::default]", "recipe[chef-client::delete_validation]", "recipe[ntp]", "recipe[openssl::upgrade]"
  • 42. © 2014 Adobe Systems Incorporated. All Rights Reserved. Apply Run-List to Nodesattributes https://chef.corp.adobe.com/organizations ~/workspace/github/connectcon-chef-repo on ! master! $ knife node list $ knife node edit one.node.fqdn
  • 43. © 2014 Adobe Systems Incorporated. All Rights Reserved. Chef-client run [root@ot1slu010 ~]# sudo chef-client Starting Chef Client, version 11.12.8 resolving cookbooks for run list: ["chef-client::delete_validation", "ntp", “aem::author", “aem::start”] * remote_file[/apps/publish/aem-author-4502.jar] action create_if_missing (up to date) * file[/apps/publish/license.properties] action create (up to date) * cookbook_file[/apps/author/serverctl] action create (up to date) * execute[java] action run (skipped due to not_if) * service[aem] action enable (up to date) Recipe: aaem::start * ruby_block[block_until_cq_operational] action nothing (skipped due to action :nothing) * log[ensure_cq_is_running] action write Recipe: aaem::default * service[aem] action start - start service service[aem] Recipe: aaem::start * ruby_block[block_until_cq_operational] action create - execute the ruby block block_until_cq_operational Running handlers: Running handlers complete Chef Client finished, 2/27 resources updated in 9.770664 seconds
  • 44. © 2014 Adobe Systems Incorporated. All Rights Reserved. So we have an Author : Use Case 0 AuthorAuthor { "name": ”<author-connectcon-fqdn>", "chef_environment": "dev”, "run_list": [ "role[author]" ] } $ knife node edit author-connectcon-fqdn
  • 45. © 2014 Adobe Systems Incorporated. All Rights Reserved. Let’s add a publish : Use Case 1 { "name": ”<publish-connectcon-fqdn>", "chef_environment": "dev”, "run_list": [ "role[publish]" ] } $ knife node edit publish-connectcon-fqdn Publish Author
  • 46. © 2014 Adobe Systems Incorporated. All Rights Reserved. And there is magic: Chef search API •! tacit-aem-cookbook/providers/replicator.rb https://github.com/tacitknowledge/aem-cookbook hosts = [] search(:node, %Q(role:"#{role}" AND aem_cluster_name:"#{cluster_name}")) do |n| log "Found host: #{n[:fqdn]}" hosts << { :ipaddress => n[:ipaddress], … :name => n[:fqdn] } end … hosts.each do |h| … end
  • 47. © 2014 Adobe Systems Incorporated. All Rights Reserved. Replication configuration happens #{role}:”publish” #{cluster_name}:”dev” Author Publish
  • 48. © 2014 Adobe Systems Incorporated. All Rights Reserved. Aem-Replicator API aem_replicator "replicate_to_publish_servers" do local_user node[:aem][:author][:admin_user] local_password node[:aem][:author][:admin_password] local_port node[:aem][:author][:port] remote_hosts node[:aem][:author][:replication_hosts] dynamic_cluster node[:aem][:author][:find_replication_hosts_dynamically] cluster_name node[:aem][:cluster_name] cluster_role node[:aem][:publish][:cluster_role] type :publish action :add end •! tacit-aem-cookbook/recipes/author.rb https://github.com/tacitknowledge/aem-cookbook
  • 49. © 2014 Adobe Systems Incorporated. All Rights Reserved. What about Secret Management ? aem_replicator "replicate_to_publish_servers" do local_user node[:aem][:author][:admin_user] local_password node[:aem][:author][:admin_password] local_port node[:aem][:author][:port] remote_hosts node[:aem][:author][:replication_hosts] dynamic_cluster node[:aem][:author][:find_replication_hosts_dynamically] cluster_name node[:aem][:cluster_name] cluster_role node[:aem][:publish][:cluster_role] type :publish action :add end •! tacit-aem-cookbook/recipes/author.rb https://github.com/tacitknowledge/aem-cookbook
  • 50. © 2014 Adobe Systems Incorporated. All Rights Reserved. Git UX/Dev/QA/Ops dev dev-stable prod ps Chef-server https RSA private key Auth chef-client chef-client chef-client chef-client https RSA private key Auth •! Chef encrypted data bags •! Encrypted for •! admin users •! whitelisted nodes •! Managed by chef-vault ruby gem •! Git Back up •! Encrypted obviously Encrypted Data Bags with Chef-vault
  • 51. © 2014 Adobe Systems Incorporated. All Rights Reserved. Chef-Vault in Action: include_recipe 'chef-vault-util::default' item = chef_vault_item(node['aem']['vault_accounts'], node['aem'] ['vault_accounts_cq_admin_item']) cq_admin_username = item[node['aem']['vault_accounts_username_property']] cq_admin_password = item[node['aem']['vault_accounts_password_property']] log 'the secret accounts credential was fetched from a chef-vault enabled encrypted data_bag for username '+ cq_admin_username do level :info end •! francois-aem-cookbook/recipes/secure.rb https://github.com/francoisledroff/aem-cookbook https://github.com/francoisledroff/chef-vault-util $ knife vault update accounts prod_cq_admin -J accounts/prod_cq_admin.json -A "ledroff," --mode client -S "role:aem_server environment:prod"
  • 52. © 2014 Adobe Systems Incorporated. All Rights Reserved. Let’s add a Dispatcher : Use Case 2 Dispatcher Author Publish DispatcherDispatcher { "name": ”<dispatcher-connectcon-fqdn>", "chef_environment": "dev”, "run_list": [ "role[dispatcher]" ] } $ knife node edit dispatcher-connectcon-fqdn Another Search Publish Another Search
  • 53. © 2014 Adobe Systems Incorporated. All Rights Reserved. Let’s Add a Load Balancer : Use Case 3 HA/LB Dispatcher { "name": ”<lb-connectcon-fqdn>", "chef_environment": "dev”, "run_list": [ "role[lb_dispatcher]" ] } $ knife node edit lb-connectcon-fqdn Author Publish Author Publish Publish Publish Dispatcher Dispatcher Dispatcher Another Search } DispatcherDispatcher DispatcherDispatcher Another Search
  • 54. © 2014 Adobe Systems Incorporated. All Rights Reserved. •! myapp-cookbook/recipes/log.rb logrotate_app 'aem' do cookbook 'logrotate' path node['myapp']['log_dir'] frequency node['myapp']['logrotate']['frequency'] rotate node['myapp']['logrotate']['rotate'] end include_recipe 'it-splunkforwarder::default’ •! myapp-cookbook/attributes/log.rb default.splunkforwarder.inputs = [ {"input_path" => "#{node['aem']['log_dir']}/error.log", … ] default.splunkforwarder.inputs = [ {"input_path" => "#{node['aem']['log_dir']}/error.log", … ] Let’s add log monitoring: Use Case 4 myapp /recipes/log.rb logrotate_app 'aem' do cookbook 'logrotate' path node['myapp']['log_dir'] frequency node['myapp']['logrotate']['frequency'] rotate node['myapp']['logrotate']['rotate'] end include_recipe 'it-splunkforwarder::default’ Dispatcher Author Publish Author Publish Publish Publish Dispatcher Dispatcher DispatcherDispatcherDispatcher DispatcherDispatcher DispatcherDispatcherDispatcherDispatcher Publish DispatcherDispatcherDispatcherDispatcherDispatcherDispatcher Publish Publish DispatcherDispatcher DispatcherDispatcher Publish DispatcherDispatcherDispatcherDispatcher Add the above in the base role Add the above in the base role
  • 55. © 2014 Adobe Systems Incorporated. All Rights Reserved. Let’s cluster things!
  • 56. © 2014 Adobe Systems Incorporated. All Rights Reserved. AEM Production Infrastructure LB/HA Dispatcher Publish Author MongoDB servers Dispatcher !" 3rd parties (your legacy, your cloud)
  • 57. © 2014 Adobe Systems Incorporated. All Rights Reserved. you got it ?
  • 58. © 2014 Adobe Systems Incorporated. All Rights Reserved. Search APIknife workstation env. roles attributes cookbooks recipes Git org Chef-DK github Nexus opscode rubygem data bags attributes env. data bags cookbooks recipes Chef-server nodes RSA key Auth ssh https yymaven redhat RSA Keys node objectrun-list rolesWeb UI versions RSA key Auth chef-clients RSA Key
  • 59. © 2014 Adobe Systems Incorporated. All Rights Reserved. #LearnChef Learn Stuff Automate IT infrastructure and application delivery Learn Chef Slide inspired by Spice up your recipe By Seth Vargo
  • 60. © 2014 Adobe Systems Incorporated. All Rights Reserved. What Stuff ? •! Git Stuff •! Ruby stuff •! VM / Container stuff •! Cloud stuff •! Network stuff •! *nix tools and stuff •! OS Stuff –! package management –! services •! Chef Community Stuff •! Build and packaging stuff •! Continuous Delivery stuff •! Monitoring stuff •! Analytics stuff •! Messaging stuff •! Security Stuff
  • 61. © 2014 Adobe Systems Incorporated. All Rights Reserved. Why ?
  • 62. © 2014 Adobe Systems Incorporated. All Rights Reserved. Devops? “ You built it You run it! ”
  • 63. © 2014 Adobe Systems Incorporated. All Rights Reserved. Chef, Devops ? No silver bullet. https://twitter.com/DEVOPS_BORAT/status/52857016670105600
  • 64. © 2014 Adobe Systems Incorporated. All Rights Reserved. Chef, Devops ? No silver bullet. https://twitter.com/mindweather/status/458653460234502144
  • 65. © 2014 Adobe Systems Incorporated. All Rights Reserved. Why ? “Accelerate, Simplify, Scale” •! Breaking down the wall of confusion •! As infra is code, it becomes: –! Testable –! Versionable –! Disposable –! Reproducible •! “If it’s not in the source control system, it does not exist” @bdelacretaz
  • 66. © 2014 Adobe Systems Incorporated. All Rights Reserved. https://www.flickr.com/photos/francoisledroff/6107220850/in/set-72157626126325552
  • 67. © 2014 Adobe Systems Incorporated. All Rights Reserved. https://www.flickr.com/photos/blmoregon/7883684692
  • 68. © 2014 Adobe Systems Incorporated. All Rights Reserved. AEM Production Infrastructure LB/HA Dispatcher Publish Author MongoDB servers Dispatcher !" 3rd parties (your legacy, your cloud)
  • 69. © 2014 Adobe Systems Incorporated. All Rights Reserved. One more publish? LB/HA Dispatcher Publish Author !" MongoDB servers Dispatcher !" 3rd parties (cloud stuff)
  • 70. © 2014 Adobe Systems Incorporated. All Rights Reserved. This needs to be configured LB/HA Dispatcher Publish Author MongoDB servers Dispatcher !" 3rd parties (cloud stuff)
  • 71. © 2014 Adobe Systems Incorporated. All Rights Reserved. A more complex production
  • 72. © 2014 Adobe Systems Incorporated. All Rights Reserved. Next scale of complexity…
  • 73. © 2014 Adobe Systems Incorporated. All Rights Reserved. Let’s Share the love
  • 74. © 2014 Adobe Systems Incorporated. All Rights Reserved.