Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Crmngr – Control Repository Manager

Crmngr – Control Repository Manager

A small CLI tool to help managing r10k control repositories

83a214d79bfcc25c2d446aedf550bc42?s=128

Tobias Brunner

November 11, 2015
Tweet

Transcript

  1. Crmngr – Control Repository Manager Or: We're bad at naming

    tools!
  2. 11/10/15 VSHN AG | http://vshn.ch 2 Agenda • VSHN? Or:

    How do I spell that? • Directory Environments • r10k • Crmngr (all the things!)
  3. 11/10/15 VSHN AG | http://vshn.ch 3 /me • Tobias Brunner

    aka tobru • VSHNeer • Puppetizer since 2011. Modules: – Smokeping – Knot DNS – Gitlab – Identity • Blog: https://tobrunet.ch • Twitter: @tobruzh
  4. 11/10/15 VSHN AG | http://vshn.ch 4 Company Profle | v

    ʒ | ˈ ɪ nn • Owner-operated Swiss company • 12 employees at the head office in Zurich • Service provider for DevOps, software delivery automation and confguration management • Partner for operations/hosting of web applications • Further specialty felds: Consulting, System Engineering, Continuous Delivery, Monitoring, Backup, 24/7 Support
  5. 11/10/2015 VSHN AG | http://vshn.ch 5 Directory Environments • Puppet

    Module environments • Directory environments default since Puppet 4 • Every environment has it's own: – main manifest – module versions – environment.conf (modulepath, manifest, confg_version, environment_timeout) • Located under $codedir/environments/<name> • puppet agent -t --environment myenvironment
  6. 11/10/2015 VSHN AG | http://vshn.ch 6 r10k (wow such tool

    names!) • Two purposes – Manage modules using a Puppetfile – Manage directory environments using git branches • Puppetfile – specify a list of modules to install – r10k puppetfile install moduledir '/etc/puppet/modules' mod 'puppetlabs/apache', '0.10.0' mod 'apache', :git => 'https://github.com/puppetlabs/puppetlabs-apache'
  7. 11/10/2015 VSHN AG | http://vshn.ch 7 r10k (wow such tool

    names!) • Environments – Save Puppetfile into git repository (Control Repository) – Create branch for each Puppet environment – Use r10k to deploy environments – r10k deploy environments – /etc/puppetlabs/r10k/r10k.yaml :cachedir: /var/cache/r10k :sources: puppet: basedir: /etc/puppetlabs/code/environments remote: git@git.mydomain.tld:r10k-control.git
  8. 11/10/2015 VSHN AG | http://vshn.ch 8 crmngr – Control Repository

    Manager • Challenges – Keep track of module versions (forge, git, …) – Manage many control repository branches – Compare branches – Mass update module versions
  9. 11/10/2015 VSHN AG | http://vshn.ch 9 crmngr – Control Repository

    Manager
  10. 11/10/2015 VSHN AG | http://vshn.ch 10 crmngr – Control Repository

    Manager • CLI tool crmngr / pip install crmngr • Works on git repository / edits Puppetfile in branch • Reporting: crmngr report – Filters available: by module, by environment, combination, unused modules, … crmngr report --branches Production --module gitlab Module: gitlab Version: Forge: vshn/gitlab: 1.5.0 [Latest: 1.6.0 (2015-11-06)] Used by: Production
  11. 11/10/2015 VSHN AG | http://vshn.ch 11 crmngr – Control Repository

    Manager • Example 2: Module report crmngr report --module gitlab Module: gitlab Version: Forge: vshn/gitlab: 1.5.0 [Latest: 1.6.0 (2015-11-06)] Used by: Customer1, Customer2, Customer3 Version: Forge: vshn/gitlab: 1.4.0 [Latest: 1.6.0 (2015-11-06)] Used by: Customer4, Customer5 Version: Forge: vshn/gitlab: 1.2.1 [Latest: 1.6.0 (2015-11-06)] Used by: Customer6
  12. 11/10/2015 VSHN AG | http://vshn.ch 12 crmngr – Control Repository

    Manager • Example 3: Branch report crmngr report --branches production Module: apache Version: Forge: puppetlabs/apache: 1.6.0 [Latest: 1.6.0 (2015-07-30)] Used by: production Module: apt Version: Forge: puppetlabs/apt: 2.1.0 [Latest: 2.2.0 (2015-09-29)] Used by: production Module: aptly Version: Git: https://github.com/gds-operations/puppet-aptly.git UNSPECIFIED [Latest: v0.3.0 (2015-04-23)] Used by: production ...
  13. 11/10/2015 VSHN AG | http://vshn.ch 13 crmngr – Control Repository

    Manager • Udating: crmngr update – Update stdlib module in all branches to latest forge version: crmngr update --module puppetlabs/stdlib --version – Update stdlib module in all branches to latest forge version. Additionally add the module to branches that currently lack the stdlib module: crmngr update --add --module puppetlabs/stdlib –version
  14. 11/10/2015 VSHN AG | http://vshn.ch 14 crmngr – Control Repository

    Manager • More examples: – Remove icinga modules from control repository branches that end with Vagrant: crmngr update --remove --module icinga --branches "*Vagrant" – Update apache module to git branch 2.0.x in control repository branch Devel: crmngr update --branches Devel --module apache –git git@github.com:puppetlabs/puppetlabs- apache.git --branch 2.0.x
  15. 11/10/2015 VSHN AG | http://vshn.ch 15 crmngr – Control Repository

    Manager • Roadmap – Put on Github under BSD-3-Clause license (soon!) – Iron out some UX issues – Add a few features like: • Creating and Removing environments • Update all modules to latest version • Template environments • Some more...
  16. 11/10/2015 VSHN AG | http://vshn.ch 16 Questions?

  17. 11/10/2015 VSHN AG | http://vshn.ch 17 We're hiring Speak to:

    @tobruzh, @aarnoaukia or any other VSHNeer