Puppet 6.x

Étude en cours ...

Pré-requis / Entrants

  • CentOS 7 minimal
  • Partitionnement reco ANSSI
  • Selinux activé (What else !)
  • Sources
    • Dépôt CentOS
    • Sélection parmi EPEL
    • Puppet
    • Produire des rpm et avoir les sources.
    • Doit être signé

Références documentaires

Architecture

On retrouve 4 éléments:

  • puppet-agent sur les nœuds à configurer
  • puppetserver le puppetmaster
  • puppetdb optionnel mais permet de gérer des dashboard
  • puppetdb-termini: puppetserver <-----> puppetdb

Installation

En pré requis, il faut récupérer paquets rpm depuis puppet

  • L'agent et le serveurs s'installent avec yum install ...
  • Puppetdb peut s'installer avec yum install. Il est aussi possible de l'installer en utilisant les modules puppetdb mis à disposition sur puppetforge

TODO: définir ces processus d'installation et de gestion des modules

puppetserver

$ rpm -Uvh http://yum.puppetlabs.com/puppet/puppet-release-el-7.noarch.rpm
$ yum install -y puppetserver

# 206 MB en plus
#  ====================================================================================================================================================================================================================================
#   Package                                                              Architecture                                    Version                                                Dépôt                                            Taille
#  ====================================================================================================================================================================================================================================
#  Installation :
#   puppetserver                                                         noarch                                          6.3.0-1.el7                                            puppet                                            74 M
#  Installation pour dépendances :
#   avahi-libs                                                           x86_64                                          0.6.31-19.el7                                          base                                              61 k
#   copy-jdk-configs                                                     noarch                                          3.3-10.el7_5                                           base                                              21 k
#   cups-libs                                                            x86_64                                          1:1.6.3-35.el7                                         base                                             357 k
#   java-1.8.0-openjdk-headless                                          x86_64                                          1:1.8.0.201.b09-2.el7_6                                updates                                           32 M
#   javapackages-tools                                                   noarch                                          3.4.1-11.el7                                           base                                              73 k
#   libjpeg-turbo                                                        x86_64                                          1.2.90-6.el7                                           base                                             134 k
#   libxslt                                                              x86_64                                          1.1.28-5.el7                                           base                                             242 k
#   lksctp-tools                                                         x86_64                                          1.0.17-2.el7                                           base                                              88 k
#   net-tools                                                            x86_64                                          2.0-0.24.20131004git.el7                               base                                             306 k
#   pcsc-lite-libs                                                       x86_64                                          1.8.8-8.el7                                            base                                              34 k
#   puppet-agent                                                         x86_64                                          6.4.1-1.el7                                            puppet                                            22 M
#   python-javapackages                                                  noarch                                          3.4.1-11.el7                                           base                                              31 k
#   python-lxml                                                          x86_64                                          3.2.1-4.el7                                            base                                             758 k
#   tzdata-java                                                          noarch                                          2019a-1.el7                                            updates                                          187 k
#  
#  Résumé de la transaction
#  ====================================================================================================================================================================================================================================

Répertoires impactés (Pas fini)

/opt/puppetlabs: 200MB
  bin/
    facter       -> /opt/puppetlabs/puppet/bin/wrapper.sh
    hiera        -> /opt/puppetlabs/puppet/bin/wrapper.sh
    puppet       -> /opt/puppetlabs/puppet/bin/wrapper.sh
    puppetserver -> ../server/apps/puppetserver/bin/puppetserver
  facter/facts.d/
  puppet/
    bin/
    cache/
    include/
    lib/
    modules/
    share/
    ssl/
    vendor_modules/
    VERSION
  pxp-agent/
    modules/
       pxp-module-puppet
    spool/
    tasks-cache/

  server/
    apps/puppetserver/
    bin/puppetserver -> ../apps/puppetserver/bin/puppetserver
    data/

/etc/puppetlabs: 68K

/usr/lib/systemd/system/puppetserver.service
/usr/lib/tmpfiles.d/puppetserver.conf
/var/log/puppetlabs/puppetserver
/var/run/puppetlabs/puppetserver

Usages

En suivant le tutoriel de pppet learning

$ curl -O \
'https://pe-education-vms.s3.amazonaws.com/learning/learning_puppet_vm-6.7.zip'
$ unzip learning_puppet_vm-6.7.zip
$ tar xvf puppet-2019.0.1-learning-6.7.ova
$ qemu-img convert -O qcow2 learning-disk1.vmdk /srv/virtu/libvirt/images/puppet-learning-6.7.qcow2
# Créer une machine Redhat 7.6  : 2 vcpu / 4096 GB / utiliser le disque qcow2
$ virt-manager

Puppet resource

En local, utiliser puppet resource

Exemple:

$ puppet resource file /tmp/test
$ puppet resource file /tmp/test content='Hello Puppet'

$ puppet resource package
$ puppet resource package ensure=present

REMARQUE: utile pour la configuration plutôt que apply !

Cycle de dialogue mde client / master

  • puppet agent : crée et soumet son CSR
  • Puppet server : signe le certificat
  • Puppet agent

    • pluginsync : récupération des extensions
    • collecte des fact
    • envoie catalog request contenant les fact
  • Puppet server

    • compile le catalog
    • renvoie le catalog
  • Puppet Agent

    • exécute le catalog

Configuration

  • site.pp
  • PE console (avantage intéressant)
  • external code classifier

Divers

C'est intéressant d'utiliser puppet en ligne de commande pour récupérer des informations locale intéressantes dans les scripts

puppet config print modulepath

Valider du code

puppet parser validate ficier.pp

Template

Regarder les epp

fact

Utiliser maintenant $facts['fqdn'] à la place de $fqdn ou $::fqdn

puppet job

$ puppet access
$ puppet job ... comment ça fonctionne ce truc !!!

Management

$ puppet module list
$ puppet module install

Puppetfile

Utiliser PuppetFile pour mettre les dépendances et la configuration de la forge. C'est utiliser par puppet deploy ... Il faut voir si c'est présent dans la version opensource

L'idée est:

  • configuration du pointeur vers le dépôt Git
  • puppet code deploy production --wait

puppet sur centOS 7

Installation

 $ sudo rpm -Uvh https://yum.puppet.com/puppet6/puppet6-release-el-7.noarch.rpm
 # sudo yum install puppet-bolt

 $ sudo yum clean all && yum search puppet
 puppet-agent.x86_64 : The Puppet Agent package contains all of the elements needed to run puppet, including ruby,
                     : facter, and hiera.
 puppet-client-tools.x86_64 : PuppetDB CLI for querying Puppet data
 puppet-release.noarch : Release packages for the Puppet repository
 puppet6-release.noarch : Release packages for the Puppet 6 repository
 puppetdb.noarch : Puppet Labs puppetdb. Contains: Puppet-integrated catalog and fact storage (puppetlabs/puppetdb
                 : 6.2.0,org.clojure/clojure 1.10.0,puppetlabs/puppetdb 6.2.0)
 puppetdb-termini.noarch : Termini for puppetdb. Contains terminus for:puppetdb (version 6.2.0)
 puppetserver.noarch : Puppet Labs puppetserver. Contains: Puppet Server (puppetlabs/puppetserver
                     : 6.2.1,org.clojure/clojure 1.10.0,org.clojure/clojurescript 1.10.238,puppetlabs/puppetserver
                     : 6.2.1,puppetlabs/trapperkeeper-webserver-jetty9 2.3.1)
 pdk.x86_64 : Puppet Development Kit
 puppet-bolt.x86_64 : Stand alone task runner

Conversion des modules existants

==================================

# https://puppet.com/docs/pdk/1.x/pdk_converting_modules.html

pdk convert

Inconvénient, pose des questions pour générer le fichier metadata.json. Une solution est de générer le fichier metadata.json et d'utiliser --force en ligne de commande de pdk convert

La commande ajoute plusieurs fichiers standards à tous les modules. => Voir si on utilise tout :

   .fixtures.yml
   .gitattributes
   .gitignore
   .gitlab-ci.yml
   .pdkignore
   .puppet-lint.rc
   .rspec
   .rubocop.yml
   .travis.yml
   .vscode/extensions.json 
   .yardopts
   CHANGELOG.md
   Gemfile
   README.md
   Rakefile
   appveyor.yml
   data/
   hiera.yaml
   metadata.json
   spec/

En utilisant --template-url, on peut aussi décider d'avoir des fichiers de spécifiques.

# il faut voir comment générer ça avant. pdk validate pdk build

https://puppet.com/docs/puppet/6.4/environments_creating.html erreur dans la doc envronmen.conf

https://puppet.com/docs/puppet/6.4/modules_fundamentals.html#concept-1234
motd n'est pas surligné en entier.

Modules

=========

https://forge.puppet.com/puppetlabs/netapp https://puppet.com/presentations/use-puppet-manage-your-netapp-storage-infrastructure

https://puppet.com/presentations/manage-your-switches-servers