Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Refactoring Katello Installer modules - Ewoud Kohl van Wijngaarden

138 views

Published on

Foreman Birthday Event 2017: Refactoring Katello Installer modules by Ewoud Kohl van Wijngaarden

Published in: Software
  • Be the first to comment

  • Be the first to like this

Refactoring Katello Installer modules - Ewoud Kohl van Wijngaarden

  1. 1. Refactoring Katello Installer Modules Ewoud Kohl van Wijngaarden
  2. 2. Agenda ● Foreman overview ● Foreman & Katello installers ● Refactoring the modules
  3. 3. $ id ● Ewoud Kohl van Wijngaarden ● https://github.com/ekohl ● On a sabbatical ● Foreman installer team ● Katello installer team ● Foreman PowerDNS plugin author/maintainer
  4. 4. Foreman
  5. 5. Installation ● Repositories for CentOS/Fedora, Debian/Ubuntu ● Puppet-based installer ● Sane defaults for POC deployments ● Able to install, configure and manage: – Foreman app – Smart-proxies – Services: DNS, DHCP, TFTP, Puppet – Selected plugins
  6. 6. Foreman Installer Kafo
  7. 7. Kafo ● Ruby library written by the Foreman team ● Exposes puppet classes and parameters ● Inspection using puppet-strings ● Parameters set using Hiera ● Calls puppet apply ● Scenario’s
  8. 8. kafo_configure class kafo_configure { if $kafo_add_progress == 'true' { add_progress() } $password = load_kafo_password() hiera_include('classes') }
  9. 9. Simple puppet class class myapp ( String $package_name = ‘myapp’, String $version = ‘installed’, ) { package { $package_name: ensure => $version, } }
  10. 10. Puppet Module Pattern
  11. 11. Puppet modules ● theforeman – dhcp – dns – foreman – foreman_proxy – git – puppet – tftp ● voxpupuli-extlib ● voxpupuli-staging ● richardc-datacat ● puppetlabs – apache – apt – concat – firewall – inifile – mysql – postgresql – puppetdb – stdlib – xinetd
  12. 12. Puppet Forge Module Scores ● Code Quality ● Puppet Compatibility ● Metadata Quality ● How helpful are the docs? ● How easy to use? ● Does what it promises? ● Works without changes? ● Used in production?
  13. 13. How does puppet-foreman score?
  14. 14. How does puppet-foreman score? Based on 5 scores
  15. 15. How does puppet-puppet score? Based on 21 scores
  16. 16. How does puppet-dns score? Based on 10 scores
  17. 17. How does puppet-dhcp score? Based on 5 scores
  18. 18. Reusability in Puppet environments ● Need for configurability ● Community contributions ● Improved quality
  19. 19. katello-installer
  20. 20. Katello
  21. 21. Extends foreman-installer
  22. 22. Additional modules ● katello – candlepin – certs – common – foreman_proxy_content – katello – katello_devel – pulp – qpid – service_wait – camptocamp-systemd – jlambert121-trusted_ca – puppetlabs-mongodb – puppetlabs-vcsrepo – thias-squid3
  23. 23. Exposed modules are profiles
  24. 24. Different certificate handling
  25. 25. Two scenario’s
  26. 26. Cathedral vs bazaar
  27. 27. How does puppet-pulp score? Based on 8 scores
  28. 28. Refactoring
  29. 29. Goals ● Usability outside of the installer ● Allow deployment on separate machines ● Higher quality ● More community usage
  30. 30. puppet-certs refactored
  31. 31. puppet-pulp almost done
  32. 32. puppet-katello needs work
  33. 33. puppet-foreman_proxy_content needs work
  34. 34. puppet-katello_devel needs work
  35. 35. Questions?

×