Top Banner
SNEAK PEEK The Puppet Environment at Fairfax Media / Domain Group Dejan Golja // Gonzalo Servat
27

Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Jul 28, 2015

Download

Software

Puppet Labs
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

SNEAK PEEK The Puppet Environment at Fairfax Media / Domain Group

Dejan Golja // Gonzalo Servat

Page 2: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Introduction

Dejan GoljaSenior Systems Engineer // Fairfax Media

Twitter @dejangolja

Page 3: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Introduction

Gonzalo ServatSenior DevOps Engineer // Domain Group

Twitter @gservat

Page 4: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Who are we?

Page 5: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Our Puppet History

☁ Early Puppet adopters … since version 0.25.X

☁ Large scale environment with distributed team

☁ We made every possible mistake

We’re on our 3rd major Puppet implementation!

Page 6: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Lessons Learned

☁ Do NOT make changes directly on the Puppet Master

☁ DO your testing - lint, code validation, etc.

☁ Do NOT pollute your downloaded official modules

☁ DO define and document the standard workflow

☁ Do NOT store sensitive data into modules

Page 7: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Example of ugliness (old site.pp)

Page 8: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Standardised process for deploying changes

Easily repeatable for multiple

environments

Puppet “V3” Requirements

High Availability

Bring order to our modules

Page 9: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Ingredients

☁ Packer

☁ Puppetlabs R10k

☁ Custom Ruby Service - “Captain Hook”

☁ Notification Systems - Slack/Flowdock

EC2 ASG ELB

SNS SQS RDS

CloudFormation

Page 10: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

☁ Module preferences☁ Puppetlabs supported☁ Vendor supported☁ Puppet approved☁ Custom modules (role/profile)

☁ Create module guidelines else it gets very messy!☁ Each module lives in a separate Git repository

Puppet Modules

Page 11: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Git Flow

Feature Branch

Workflow

Page 12: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Architecture

Page 13: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Puppet Client

Page 14: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Puppet CA

Page 15: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Puppet Masters

Page 16: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Puppet DB

Page 17: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Architecture

Page 18: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

$ aws cloudformation create-stack \

--stack-name puppetmaster-staging \

--templatebody file://infrastructure-puppetmaster.template \

--parameters \

ParameterKey=Environment,ParameterValue=staging \

ParameterKey=InstanceType,ParameterValue=m3.large \

ParameterKey=MinScalingGroupSize,ParameterValue=2 \

ParameterKey=MaxScalingGroupSize,ParameterValue=4

CloudFormation Example

Page 19: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Awesome, so we have a neat-looking HA/FT set-up…

…but how do we manage pushing changes to Puppet Masters?!

Page 20: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

☁ Puppet masters can “come and go” randomly

☁ Keep the modules up to date per environment

☁ K.I.S.S. - Tame the learning curve for the team

☁ Avoid reinventing the wheel

Challenges

Page 21: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

OUR SOLUTION

Page 22: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

P3 Workflow

Page 23: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

1. Make changes and commit/push to git server2. Git server triggers post-commit hook (POST) to Captain Hook server3. Captain Hook server validates the payload & creates new message:

☁ Full refresh ➩ r10k deploy environment -p☁ Light refresh ➩ r10k deploy environment☁ Module refresh ➩ r10k deploy module <name>

4. Captain hook server pushes new message to SNS5. Captain hook client polls & reads messages ( ➩ r10k)6. … and we get notified in slack/flowdock/dashboard

Typical Puppet Workflow

Page 24: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

DEMO

Page 25: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

☁ Fairfax is a large scale complex environment

☁ Many systems engineers are constantly pushing changes

☁ Puppet architecture designed for HA and fault tolerance

☁ Puppet workflow helps us deploy changes to multiple

masters safely and easily

Summary

Page 26: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media
Page 27: Puppet Camp Sydney 2015: Sneak peek into the Puppet environment at Fairfax Media

Our Blogshttp://engineering.fairfaxmedia.com.au/

http://tech.domain.com.au/

Our Codehttp://github.com/fairfaxmedia

Your Feedback or QuestionsYou can contact us on twitter: @dejangolja @gservat

Before you go ...