É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
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