SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Outline Goal A Problem to Solve Tools Practical Examples
Building a loosely coupled toolchain with
Rundeck and Puppet
Steven Meunier
21 June 2014
Outline Goal A Problem to Solve Tools Practical Examples
1 Goal
What are we trying to achieve?
Influences
Infrastructure
2 A Problem to Solve
3 Tools
What do we need
Something to trigger a change
Somewhere to store the data for the change
Something to perform the change
Helping the tools help us
4 Practical Examples
Generic Deployment Flow
Updating Hiera Data
Rundeck
Outline Goal A Problem to Solve Tools Practical Examples
Goal
To have a loosely coupled deployment toolchain that leverages
our desire to manage the servers based on state
Implies decisions have already been made regarding kind of
tooling and server management:
Tools that perform a particular function and do it well
Tools can be swapped out if needed
Concept of state can be extended to deployments if viewed
as a process of changing the server state
Outline Goal A Problem to Solve Tools Practical Examples
Influences
Deployment models from glu
Infrastructure as data from ansible
Puppet server state
http://dev2ops.org/2012/05/using-rundeck-and-chef-to-
build-devops-toolchains-at-chefcon/
Outline Goal A Problem to Solve Tools Practical Examples
Normal Puppet Infrastructure
Puppet Infrastructure
Outline Goal A Problem to Solve Tools Practical Examples
Deployment Infrastructure Built On Top Of Puppet
Deployment Infrastructure
Outline Goal A Problem to Solve Tools Practical Examples
Ready . . . Set . . .
By tableatny (BXP135671) [CC-BY-2.0], Source:
http://upload.wikimedia.org/wikipedia/commons/1/13/Athlete_at_starting_block.jpg
Outline Goal A Problem to Solve Tools Practical Examples
Go!
By David A. Brandenburg, U.S. Navy (http://www.navy.mil/; VIRIN: 100517-N-7643B-048) [Public domain], Source:
http://upload.wikimedia.org/wikipedia/commons/2/2a/Sack_race.jpg
Outline Goal A Problem to Solve Tools Practical Examples
Know your Problem Domain
Deadlines
Restrictions imposed by Security Team
Team requirements
Release management (easy interface, keep track of
versions, support all our applications and release process)
Development (APIs for jenkins, low (preferably no) adoption
barrier for development)
Operations (operations maintain control, integrate with
puppet, mcollective)
Outline Goal A Problem to Solve Tools Practical Examples
What do we need?
Something to trigger a change
Somewhere to store the information for the change
Something to perform the change
Outline Goal A Problem to Solve Tools Practical Examples
Something to trigger a change
Rundeck
Rundeck is an automation console
Makes use of existing puppet infrastructure
Can automate whatever we want, not just deployments
Fine grained access controls
Easily extensible through plugins — even if you don’t know
Java
Deployments triggered manually or via Jenkins
Outline Goal A Problem to Solve Tools Practical Examples
Somewhere to store the data for the change
Hiera data
“Infrastructure as code” → “Infrastructure as data”
Hiera data for configuration using Puppet 3’s data binding
Change configuration without editing puppet manifests or
templates
property_files::parent_prefix: /srv/tomcat6/foo/conf
property_files::property_files:
- foo.properties
- bar.properties
properties_foo.properties:
database.name: fooDB
timeout: 100
Outline Goal A Problem to Solve Tools Practical Examples
Something to perform the change
Puppet & MCollective
Puppet manages all aspects of the server — nothing is
manual
Mcollective is an orchestration tool using activemq to
trigger agents across servers
MCollective manage non-state managed aspects or
temporary state changes
starting/stopping queues
database deployments
Outline Goal A Problem to Solve Tools Practical Examples
No matter what you think you’ve got...
Spaceballs, c 1987 MGM Studios, Source:
http://s3.amazonaws.com/mgm-assets/assets/Image/1266267325/41135/SPACEBAL-still-003-x.jpg
Outline Goal A Problem to Solve Tools Practical Examples
Sometimes your princess is a hairy guy in a dress
Spaceballs, c 1987 MGM Studios, Source:
http://img.pandawhale.com/65424-Spaceballs-Celebrity-stunt-dou-DZzt.jpeg
Outline Goal A Problem to Solve Tools Practical Examples
Tools need help to make them fit
Git: steep learning curve
Rundeck: needs extra plugins to fit your workflow
Puppet: duplicate declarations; ordering; limitations of
hiera
MCollective: can be unreliable if used as a source of node
truth; time needed to build the agents
Ruby: it’s critical if you’re using puppet + mcollective
Outline Goal A Problem to Solve Tools Practical Examples
Generic Deployment Flow
Create deployment window with no puppet interference
Build rpms from deployable unit (if applicable)
Disable monitoring
Compare and update configuration (if applicable)
Update version parameter in hiera data
Kick off puppet run
Restart service
Re-enable monitoring
Outline Goal A Problem to Solve Tools Practical Examples
Deployment Configuration Committer
Ruby script with the goal of reducing manual actions
related to configuration
Works with java properties files and context xml files
Builds a hash of properties in the release and compares it
against the current properties
Uploads any changes to Gerrit for review
Outline Goal A Problem to Solve Tools Practical Examples
An example tomcat application in Hiera
tomcat_context:
ROOT:
version: xx.yy.zz
tomcat_instance:
foo: {}
tomcat_context:
ROOT:
artifact: foo
artifact_provider: file
artifact_target: ROOT.war
artifact_url: http//repo.example.com/war
instance: foo
rundeck_job:
foo: {}
Outline Goal A Problem to Solve Tools Practical Examples
Puppet Rundeck Job Type
@@rundeck_job { "${project}/${group}/${name}_${hostname}":
ensure => $ensure,
jobname => $name,
project => $project,
group => $group,
definition => template($template),
}
Outline Goal A Problem to Solve Tools Practical Examples
Rundeck Conditional Local Command
#!/bin/sh
COMMAND_TRUE=$1
COMMAND_FALSE=$2
CONDITION="[ $3 ]"
EXIT_CODE=0
if [ "x$COMMAND_FALSE" == "x" ]
then
if eval $CONDITION
then
$COMMAND_TRUE
EXIT_CODE=$?
fi
else
if eval $CONDITION
then
$COMMAND_TRUE
EXIT_CODE=$?
else
$COMMAND_FALSE
EXIT_CODE=$?
fi
fi
exit $EXIT_CODE
Outline Goal A Problem to Solve Tools Practical Examples
Rundeck Conditional Local Command
Outline Goal A Problem to Solve Tools Practical Examples
Thank You

Weitere ähnliche Inhalte

Was ist angesagt?

QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
Rodrigo Russo
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings
Haufe-Lexware GmbH & Co KG
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Weaveworks
 

Was ist angesagt? (20)

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)
 
SkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid CloudSkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid Cloud
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
 
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
CI is dead, long live CI
CI is dead, long live CICI is dead, long live CI
CI is dead, long live CI
 
CI/CD for everyone else
CI/CD for everyone elseCI/CD for everyone else
CI/CD for everyone else
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
 
Scaling Jenkins
Scaling Jenkins Scaling Jenkins
Scaling Jenkins
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 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
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using Jenkins
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
 
Ice breaker with dev ops
Ice breaker with dev opsIce breaker with dev ops
Ice breaker with dev ops
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
 
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
 
Safe deployments with Blue-Green and Spinnaker
Safe deployments with Blue-Green and SpinnakerSafe deployments with Blue-Green and Spinnaker
Safe deployments with Blue-Green and Spinnaker
 

Andere mochten auch

Andere mochten auch (10)

DTO #ChefConf2012
DTO #ChefConf2012DTO #ChefConf2012
DTO #ChefConf2012
 
Porting Puppet to OpenBSD
Porting Puppet to OpenBSD Porting Puppet to OpenBSD
Porting Puppet to OpenBSD
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
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)
 
Rundeck Open Source Workflow Automation
Rundeck Open Source Workflow AutomationRundeck Open Source Workflow Automation
Rundeck Open Source Workflow Automation
 
RunDeck
RunDeckRunDeck
RunDeck
 
Adobe Presents Internal Service Delivery Platform at Velocity 13 Santa Clara
Adobe Presents Internal Service Delivery Platform at Velocity 13 Santa ClaraAdobe Presents Internal Service Delivery Platform at Velocity 13 Santa Clara
Adobe Presents Internal Service Delivery Platform at Velocity 13 Santa Clara
 
Support and Initiate a DevOps Transformation
Support and Initiate a DevOps TransformationSupport and Initiate a DevOps Transformation
Support and Initiate a DevOps Transformation
 
Workflow Engines for Hadoop
Workflow Engines for HadoopWorkflow Engines for Hadoop
Workflow Engines for Hadoop
 
Rundeck & Ansible
Rundeck & AnsibleRundeck & Ansible
Rundeck & Ansible
 

Ähnlich wie Building a loosely coupled toolchain with Rundeck and Puppet

UiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptxUiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptx
Rohit Radhakrishnan
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
Pascal Rapicault
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and Projects
Fedir RYKHTIK
 
Alm Specialist Toolkit Team System 2008 Deep Dive
Alm Specialist Toolkit   Team System 2008 Deep DiveAlm Specialist Toolkit   Team System 2008 Deep Dive
Alm Specialist Toolkit Team System 2008 Deep Dive
Christian Thilmany
 

Ähnlich wie Building a loosely coupled toolchain with Rundeck and Puppet (20)

Five Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed CultureFive Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed Culture
 
DevOps Workflows in the Windows Ecosystem - April 21
 DevOps Workflows in the Windows Ecosystem - April 21 DevOps Workflows in the Windows Ecosystem - April 21
DevOps Workflows in the Windows Ecosystem - April 21
 
DevOps Workflows in the Windows Ecosystem - 21 April 2020
 DevOps Workflows in the Windows Ecosystem - 21 April 2020 DevOps Workflows in the Windows Ecosystem - 21 April 2020
DevOps Workflows in the Windows Ecosystem - 21 April 2020
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps Workshop
 
UiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptxUiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptx
 
Continuous Database Delivery - 7/12/2018
Continuous Database Delivery - 7/12/2018Continuous Database Delivery - 7/12/2018
Continuous Database Delivery - 7/12/2018
 
Continous integration-leon-kehl-2010
Continous integration-leon-kehl-2010Continous integration-leon-kehl-2010
Continous integration-leon-kehl-2010
 
Automate Yourself Out of a Job: Safely Delegate the Management of your Azure...
Automate Yourself Out of a Job:  Safely Delegate the Management of your Azure...Automate Yourself Out of a Job:  Safely Delegate the Management of your Azure...
Automate Yourself Out of a Job: Safely Delegate the Management of your Azure...
 
Automated Deployment in Support of Continuous Integration to Transform SDLC
Automated Deployment in Support of Continuous Integration to Transform SDLCAutomated Deployment in Support of Continuous Integration to Transform SDLC
Automated Deployment in Support of Continuous Integration to Transform SDLC
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Leveraging Open Source Automation: A Selenium WebDriver Example
Leveraging Open Source Automation: A Selenium WebDriver ExampleLeveraging Open Source Automation: A Selenium WebDriver Example
Leveraging Open Source Automation: A Selenium WebDriver Example
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
Migrating to Cloud: Inhouse Hadoop to Databricks (3)
Migrating to Cloud: Inhouse Hadoop to Databricks (3)Migrating to Cloud: Inhouse Hadoop to Databricks (3)
Migrating to Cloud: Inhouse Hadoop to Databricks (3)
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and Projects
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
 
Alm Specialist Toolkit Team System 2008 Deep Dive
Alm Specialist Toolkit   Team System 2008 Deep DiveAlm Specialist Toolkit   Team System 2008 Deep Dive
Alm Specialist Toolkit Team System 2008 Deep Dive
 
Drools & jBPM Info Sheet
Drools & jBPM Info SheetDrools & jBPM Info Sheet
Drools & jBPM Info Sheet
 

Kürzlich hochgeladen

Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
mphochane1998
 

Kürzlich hochgeladen (20)

Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
Wadi Rum luxhotel lodge Analysis case study.pptx
Wadi Rum luxhotel lodge Analysis case study.pptxWadi Rum luxhotel lodge Analysis case study.pptx
Wadi Rum luxhotel lodge Analysis case study.pptx
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
Engineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planesEngineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planes
 
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxOrlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.
 
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLEGEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARHAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best ServiceTamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
 

Building a loosely coupled toolchain with Rundeck and Puppet

  • 1. Outline Goal A Problem to Solve Tools Practical Examples Building a loosely coupled toolchain with Rundeck and Puppet Steven Meunier 21 June 2014
  • 2. Outline Goal A Problem to Solve Tools Practical Examples 1 Goal What are we trying to achieve? Influences Infrastructure 2 A Problem to Solve 3 Tools What do we need Something to trigger a change Somewhere to store the data for the change Something to perform the change Helping the tools help us 4 Practical Examples Generic Deployment Flow Updating Hiera Data Rundeck
  • 3. Outline Goal A Problem to Solve Tools Practical Examples Goal To have a loosely coupled deployment toolchain that leverages our desire to manage the servers based on state Implies decisions have already been made regarding kind of tooling and server management: Tools that perform a particular function and do it well Tools can be swapped out if needed Concept of state can be extended to deployments if viewed as a process of changing the server state
  • 4. Outline Goal A Problem to Solve Tools Practical Examples Influences Deployment models from glu Infrastructure as data from ansible Puppet server state http://dev2ops.org/2012/05/using-rundeck-and-chef-to- build-devops-toolchains-at-chefcon/
  • 5. Outline Goal A Problem to Solve Tools Practical Examples Normal Puppet Infrastructure Puppet Infrastructure
  • 6. Outline Goal A Problem to Solve Tools Practical Examples Deployment Infrastructure Built On Top Of Puppet Deployment Infrastructure
  • 7. Outline Goal A Problem to Solve Tools Practical Examples Ready . . . Set . . . By tableatny (BXP135671) [CC-BY-2.0], Source: http://upload.wikimedia.org/wikipedia/commons/1/13/Athlete_at_starting_block.jpg
  • 8. Outline Goal A Problem to Solve Tools Practical Examples Go! By David A. Brandenburg, U.S. Navy (http://www.navy.mil/; VIRIN: 100517-N-7643B-048) [Public domain], Source: http://upload.wikimedia.org/wikipedia/commons/2/2a/Sack_race.jpg
  • 9. Outline Goal A Problem to Solve Tools Practical Examples Know your Problem Domain Deadlines Restrictions imposed by Security Team Team requirements Release management (easy interface, keep track of versions, support all our applications and release process) Development (APIs for jenkins, low (preferably no) adoption barrier for development) Operations (operations maintain control, integrate with puppet, mcollective)
  • 10. Outline Goal A Problem to Solve Tools Practical Examples What do we need? Something to trigger a change Somewhere to store the information for the change Something to perform the change
  • 11. Outline Goal A Problem to Solve Tools Practical Examples Something to trigger a change Rundeck Rundeck is an automation console Makes use of existing puppet infrastructure Can automate whatever we want, not just deployments Fine grained access controls Easily extensible through plugins — even if you don’t know Java Deployments triggered manually or via Jenkins
  • 12. Outline Goal A Problem to Solve Tools Practical Examples Somewhere to store the data for the change Hiera data “Infrastructure as code” → “Infrastructure as data” Hiera data for configuration using Puppet 3’s data binding Change configuration without editing puppet manifests or templates property_files::parent_prefix: /srv/tomcat6/foo/conf property_files::property_files: - foo.properties - bar.properties properties_foo.properties: database.name: fooDB timeout: 100
  • 13. Outline Goal A Problem to Solve Tools Practical Examples Something to perform the change Puppet & MCollective Puppet manages all aspects of the server — nothing is manual Mcollective is an orchestration tool using activemq to trigger agents across servers MCollective manage non-state managed aspects or temporary state changes starting/stopping queues database deployments
  • 14. Outline Goal A Problem to Solve Tools Practical Examples No matter what you think you’ve got... Spaceballs, c 1987 MGM Studios, Source: http://s3.amazonaws.com/mgm-assets/assets/Image/1266267325/41135/SPACEBAL-still-003-x.jpg
  • 15. Outline Goal A Problem to Solve Tools Practical Examples Sometimes your princess is a hairy guy in a dress Spaceballs, c 1987 MGM Studios, Source: http://img.pandawhale.com/65424-Spaceballs-Celebrity-stunt-dou-DZzt.jpeg
  • 16. Outline Goal A Problem to Solve Tools Practical Examples Tools need help to make them fit Git: steep learning curve Rundeck: needs extra plugins to fit your workflow Puppet: duplicate declarations; ordering; limitations of hiera MCollective: can be unreliable if used as a source of node truth; time needed to build the agents Ruby: it’s critical if you’re using puppet + mcollective
  • 17. Outline Goal A Problem to Solve Tools Practical Examples Generic Deployment Flow Create deployment window with no puppet interference Build rpms from deployable unit (if applicable) Disable monitoring Compare and update configuration (if applicable) Update version parameter in hiera data Kick off puppet run Restart service Re-enable monitoring
  • 18. Outline Goal A Problem to Solve Tools Practical Examples Deployment Configuration Committer Ruby script with the goal of reducing manual actions related to configuration Works with java properties files and context xml files Builds a hash of properties in the release and compares it against the current properties Uploads any changes to Gerrit for review
  • 19. Outline Goal A Problem to Solve Tools Practical Examples An example tomcat application in Hiera tomcat_context: ROOT: version: xx.yy.zz tomcat_instance: foo: {} tomcat_context: ROOT: artifact: foo artifact_provider: file artifact_target: ROOT.war artifact_url: http//repo.example.com/war instance: foo rundeck_job: foo: {}
  • 20. Outline Goal A Problem to Solve Tools Practical Examples Puppet Rundeck Job Type @@rundeck_job { "${project}/${group}/${name}_${hostname}": ensure => $ensure, jobname => $name, project => $project, group => $group, definition => template($template), }
  • 21. Outline Goal A Problem to Solve Tools Practical Examples Rundeck Conditional Local Command #!/bin/sh COMMAND_TRUE=$1 COMMAND_FALSE=$2 CONDITION="[ $3 ]" EXIT_CODE=0 if [ "x$COMMAND_FALSE" == "x" ] then if eval $CONDITION then $COMMAND_TRUE EXIT_CODE=$? fi else if eval $CONDITION then $COMMAND_TRUE EXIT_CODE=$? else $COMMAND_FALSE EXIT_CODE=$? fi fi exit $EXIT_CODE
  • 22. Outline Goal A Problem to Solve Tools Practical Examples Rundeck Conditional Local Command
  • 23. Outline Goal A Problem to Solve Tools Practical Examples Thank You