Puppet Camp Dublin - 06/2012

489 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
489
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Puppet Camp Dublin - 06/2012

  1. 1. Puppet Camp Dublin - 2012Andrés Pereira <apereira@gilt.com> Roland Tritsch <rtritsch@gilt.com>
  2. 2. Gilt in a nutshell ...•  5, 500, 1000/200, 300, 1, 18, ...
  3. 3. Gilt in a nutshell ...Frontend (HTML[5], CSS, JS, ...) •  2 DCs + Amazon EC2Load Balancing (Zeus) •  CentOS Linux •  CDN (Akamai) • Aggregation (Java, Scala, ...) Puppet, Cobbler, ...Load Balancing (Zeus) •  Zenoss, Nagios, ... •  Git & GerritServices (Java, Scala, Ruby, ...) •  JenkinsDatabase (PostgreSQL, MongoDB, ...)
  4. 4. Puppet at Gilt ...•  Weve been using Puppet for almost 3 years•  ~ 1000 puppet modules•  Typical setup o  Apache httpd+passenger for Puppetmaster o  Puppetcommander (MCollective plugin) to schedule puppet runs o  Puppet Dashboard (Reporting) o  In-house External Node Classifier (aka Mothership)
  5. 5. Puppet - Incremental rollout
  6. 6. Puppet - Incremental rollout•  Deployment of changes o  Commit to development branch o  Push changes for code review o  Once changes have been reviewed and verified, they get merged into development o  A canary flag can be set for a number of nodes o  Change is cherry-picked to master branch o  A tag from master is created and deployed   See behavior in the canary environment   Expand the canary env. Rinse & repeat   Remove canary flag
  7. 7. Puppet - External node Classifier http://mothership.sourceforge.net/
  8. 8. Puppet - External node Classifier•  Mothership o  In-house assets management & provisioning tool. It also acts as an External Node Classifier for Puppet   Can provision bare-metal & virtual machines   Integrated with Cobbler   Also manages users/groups & sudoers •  Synchronized to LDAP •  Puppet deploys sudoers file   DNS management   Hosts can have one or more labels (tags) that are mapped to Puppet modules
  9. 9. Lessons learned / Best practices ...Puppet ...• Dont just run it!• Node mgmt can become difficult (+100)• Keep change in mind (e.g. OS upgrades)Mothership ...• ... is not enough. You need at least 2 views o  Logical (deployed/reserved), Physical•  You need to live with Physical != Logical o  Physical will be generated. It is a feedback loop.
  10. 10. Next steps ...
  11. 11. Requirements ...•  Accelerate our ability to do incremental deployments (multiple times a day) o  ... with easy rollback o  ... accelerating our ability to innovate o  ... while maintaining 100% uptime•  The "Happy Path" needs to be without human intervention o  From Commit to A/B test
  12. 12. Architecture ... QA - Selenium / Deployment -Code - Gerrit TestComplete Puppet Ion Cannon Build - Jenkins/ Performance Analytics Nexus
  13. 13. Takeaways ...•  Keep your modules small, keep them simple•  Keep change in mind o  Do incremental rollout of changes o  Provide a default case in your puppet modules and use fail (sdtlib) as a default case.•  If you are looking for a complete CD platform, then you need to embed Puppet into a larger solution
  14. 14. Questions ...

×