A Tale in Automation
The Slow Roast of Puppet
Agenda
• Platform Overview
• Platform Details
• Puppet in our Environment
• Our Use Case
• Puppet vs Ansible
• Script Dev Process
• Results
• Future Enhancements
Platform Overview
Established Cloud platform
FedRAMP Moderate
Platform
(ALM, CI/CD, Scanning Capabilities)
Infrastructure
(VMs, Network, OS)
Source Code
Management
Continuous
Integration
Monitoring
Collaboration
Spaces
Automation
CSP
Scanning
Agile Tools
RE-USE
RE-USE
RE-USE
21 Different Web Sites
8 Database Servers, 10
Web Servers
- Prod Servers
- Staging Servers
- Test Integration
- Failover Environment
1 Billion Web Hits
17 Production Deployments per
month
Confluence
Code
Review*
Code
Visualizer
*
JIRA
(Agile Mgmt)
Code Quality*
Application Deployment Pipeline
Selenium
Jmeter*
HP Fortify
Functional Testing
Performance Testing
Static Security
Analysis
WebInspect
Dynamic Security
Analysis
aXe Accessiblity
Engine*
Git/Stash
(Source
Control)
NEXUS
(Artifact
Repository)
Bamboo &
Jenkins
(CI Server)
Build
Tool
Quality Testing
Usability Testing
IDE
Sonatype CLM
Supply Chain Security
Analysis
PIV/OMB MAX
(IDAM)
(Key Mgmt)*
(ISCM/CDM)*
SPLUNK
(Log Mgmt)
New Relic
(App Perf Mon.)
(Cloud Mgmt)*
OTRSS
(Asset Mgmt)
Ansible
(Config Mgmt)
Ansible
(Infra Auto)
Application
Version
Promotion
Change
Detection
Deployment Artifact
Archiving
Build
History
Documentatio
n
Check-
In
History
Code
Review
Source Code
Dependency
Management
Pull/Push
Legend
Knowledge Management
Agile Project Management
Code Review
Development
Continuous Integration
(CI)
Continuous Testing (CT)
Operational Monitoring
ISCM / Security
Infrastructure Mgmt
*Function not currently
deployed
On Demand Auto
Deployment
Automated
Deploy
Test Tools
Dev/Test Staging Production DR
Platform Details
Controlled Auto
Deploy
Puppet in Our Environment
Puppet used to handle some functionality in our environment,
such as –
• Management of certain configuration files
• Deploying database information to different websites
Our Use Case
Technical Rational • Different server types and configurations
• Various dependencies
• Tight deadline
Team Level Rational • Low learning curve
• Versioning and Configuration Management
The database layer is being re-architected, all new scripts are needed.
Should we continue to use Puppet or move to Ansible?
Puppet vs Ansible
Puppet Ansible
Requires an Agent Agent-Less
High Learning Curve Low Learning Curve
Limited Documentation Highly Documented
Low Team Experience with Puppet Python Experience
No Loop Functionality All the Loops, Procedural
Dependencies Not Standard to Linux Standard to Linux
Complicated Scripts Scripts are Human Readable
First Release 2005 First Release 2012
Script Comparison
Script Development Process
Infrastructure as Code
• Scripts are developed and maintained in Git
• Code Reviews to Refactor Playbooks
Results
Roadmap
A
Converted to Ansible
Automatically run security
scans
CodeDX
Quality and Visualization
Lint & Grapher
Auto-run Jmeter /
Selenium tests on
code merge
Testing
Better orchestration and
auditing
Ansible Tower
Use Ansible to build and
manage Docker
containers
Containerization
Integrate other Red hat
Products
OpenShift

A tale in automation (Puppet to Ansible)

  • 1.
    A Tale inAutomation The Slow Roast of Puppet
  • 2.
    Agenda • Platform Overview •Platform Details • Puppet in our Environment • Our Use Case • Puppet vs Ansible • Script Dev Process • Results • Future Enhancements
  • 3.
    Platform Overview Established Cloudplatform FedRAMP Moderate Platform (ALM, CI/CD, Scanning Capabilities) Infrastructure (VMs, Network, OS) Source Code Management Continuous Integration Monitoring Collaboration Spaces Automation CSP Scanning Agile Tools RE-USE RE-USE RE-USE 21 Different Web Sites 8 Database Servers, 10 Web Servers - Prod Servers - Staging Servers - Test Integration - Failover Environment 1 Billion Web Hits 17 Production Deployments per month
  • 4.
    Confluence Code Review* Code Visualizer * JIRA (Agile Mgmt) Code Quality* ApplicationDeployment Pipeline Selenium Jmeter* HP Fortify Functional Testing Performance Testing Static Security Analysis WebInspect Dynamic Security Analysis aXe Accessiblity Engine* Git/Stash (Source Control) NEXUS (Artifact Repository) Bamboo & Jenkins (CI Server) Build Tool Quality Testing Usability Testing IDE Sonatype CLM Supply Chain Security Analysis PIV/OMB MAX (IDAM) (Key Mgmt)* (ISCM/CDM)* SPLUNK (Log Mgmt) New Relic (App Perf Mon.) (Cloud Mgmt)* OTRSS (Asset Mgmt) Ansible (Config Mgmt) Ansible (Infra Auto) Application Version Promotion Change Detection Deployment Artifact Archiving Build History Documentatio n Check- In History Code Review Source Code Dependency Management Pull/Push Legend Knowledge Management Agile Project Management Code Review Development Continuous Integration (CI) Continuous Testing (CT) Operational Monitoring ISCM / Security Infrastructure Mgmt *Function not currently deployed On Demand Auto Deployment Automated Deploy Test Tools Dev/Test Staging Production DR Platform Details Controlled Auto Deploy
  • 5.
    Puppet in OurEnvironment Puppet used to handle some functionality in our environment, such as – • Management of certain configuration files • Deploying database information to different websites
  • 6.
    Our Use Case TechnicalRational • Different server types and configurations • Various dependencies • Tight deadline Team Level Rational • Low learning curve • Versioning and Configuration Management The database layer is being re-architected, all new scripts are needed. Should we continue to use Puppet or move to Ansible?
  • 7.
    Puppet vs Ansible PuppetAnsible Requires an Agent Agent-Less High Learning Curve Low Learning Curve Limited Documentation Highly Documented Low Team Experience with Puppet Python Experience No Loop Functionality All the Loops, Procedural Dependencies Not Standard to Linux Standard to Linux Complicated Scripts Scripts are Human Readable First Release 2005 First Release 2012
  • 8.
  • 9.
    Script Development Process Infrastructureas Code • Scripts are developed and maintained in Git • Code Reviews to Refactor Playbooks
  • 10.
  • 11.
    Roadmap A Converted to Ansible Automaticallyrun security scans CodeDX Quality and Visualization Lint & Grapher Auto-run Jmeter / Selenium tests on code merge Testing Better orchestration and auditing Ansible Tower Use Ansible to build and manage Docker containers Containerization Integrate other Red hat Products OpenShift

Editor's Notes

  • #4 Hosts all of the public sites for DHS
  • #5 Walk through what a typical deployment from a tenant going through dev, stage, and prod is like
  • #6 Used a little but not extensively, no plans to expand the use of it Was extremely slow when deploying out database information. Took over 10 minutes
  • #7 Rogue engineer writing bad scripts and messing up configuration files
  • #8 Tab syntax with spaces makes it easier to read. Fun fact: The name "Ansible" references a fictional instantaneous hyperspace communication system (as featured in Orson Scott Card's Ender's Game (1985),[10] and originally invented by Ursula K. Le Guin for her novel Rocannon's World (1966)). Ansible was acquired by Red Hat in October 2015.
  • #9 120 lines in Puppet, 16 in Ansible No For loops in Puppet No tab delimitation on Syntax Lots of redundancy for our use case.
  • #10 When reviewing playbooks, make better use of variables, secrets, modules, templates, roles
  • #11 All configuration files, such as httpd.conf, vhosts, php.ini, etc are all tracked