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

Managed Puppet Servers

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Managed Puppet Servers

Speech at the Zürich Puppet Meetup in November 2015.

Avatar for Julian Meier

Julian Meier

November 10, 2015
Tweet

Other Decks in Technology

Transcript

  1. Idea & Goals • a small team (working in Luzern)

    • simple goal:
 automate tasks and help others within the company to do so
 (legacy - non-cloud services)
  2. Puppet • every team wants to start with Puppet… •

    every team has different requirements… • several layers of responsibilities: • OS-Team —> root ;-) • Application Team —> sudo (list of commands)
  3. ENC - External Node Classifier Simple solution with YAML and

    Hiera
 (https://github.com/Zetten/puppet-hiera-enc): puppet.conf:
 [master]
 node_terminus = exec
 external_nodes = /etc/puppetlabs/code/enc/enclassifier git checkout —> Puppet Module: vcsrepo + script returns simple YAML + protects environment + future: use any other system…
  4. Hieradata I hiera.yaml: --- :backends: - yaml - eyaml …

    :yaml: :datadir: /etc/puppetlabs/code/environments/%{environment}/hieradata … :eyaml: :datadir: /etc/puppetlabs/code/environments/%{environment}/hieradata :extension: eyaml :pkcs7_private_key: /etc/puppetlabs/puppet/keys/private_key.pkcs7.pem :pkcs7_public_key: /etc/puppetlabs/puppet/keys/public_key.pkcs7.pem
  5. Hieradata II hiera.yaml: --- … :hierarchy: - secure/nodes/%{::clientcert} - secure/services/%{::service}/%{::stack}/%{::role}

    - secure/services/%{::service}/%{::stack} - secure/services/%{::service}/%{::role} - nodes/%{::clientcert} - services/%{::service}/%{::stack}/%{::role} - services/%{::service}/%{::stack} - services/%{::service}/%{::role} - services/%{::service} - locations/%{::location} - common
  6. Roles & Profiles How we do it…
 —> Roles are

    defined in Hiera
 —> Profiles are Puppet Modules
 (shared / service specific)
 —> Forge / Internal Modules site.pp:
 hiera_include('default_classes', [])
 hiera_include($role,[])
 role_repository_server.yaml:

  7. Forge Module: ospuppet https://forge.puppetlabs.com/juame/ospuppet —> Manage Puppet Agent —> Manage

    Puppet Server —> Manage Puppet Master Configs Dependencies:
 - puppetlabs/inifile
 - puppetlabs/hocon
  8. ospuppet class { ::ospuppet::server:
 package_version => '2.1.1-1.el7',
 service_running => true,


    service_enabled => true,
 init_settings_java_xms => '2g',
 init_settings_java_xmx => '2g',
 init_settings_java_maxpermsize => '256m',
 init_settings_custom_settings => {},
 init_settings_custom_subsettings => {},
 puppetserver_max_active_instances => undef,
 puppetserver_admin_client_whitelist => [ $::fqdn ],
 puppetserver_custom_settings => {},
 webserver_client_auth => 'want',
 webserver_ssl_host => '0.0.0.0',
 webserver_ssl_port => '8140',
 webserver_custom_settings => {},
 } class { '::ospuppet::master': custom_settings = { "node_terminus" => { 'ensure' => 'present', 'setting' => 'node_terminus', 'value' => ‘exec', }, }, hiera_eyaml_package_version => '2.0.8', hiera_backends => [ 'yaml', 'eyaml' ], hiera_hierarchy => [ 'secure/nodes/%{::clientcert}', ... ‘common', ], hiera_yaml_datadir => …, }