08-TP-Modules.md

TP Modules

Contexte

Dans les TPs précédents vous avez manipulé les objets les plus importants de puppet:

  • ressources
  • classes
  • defined types

La force incontestable de puppet est la modularité, et la distribuabilité du code, matérialisés par les modules. Les modules sont à puppet ce que les RPMs sont à RedHat Linux : une manière de "packager" la gestion d'un composant logiciel.

Objectifs

  • savoir utiliser les sous-commandes puppet module *
  • modifier un module existant
  • optionnel : publier un module sur la forge puppetlabs

Exercice 1: récupérer un module de la forge puppetlabs

  1. récupérez le module ccin2p3/formation_puppet
    curl -O https://puppet-formation.pages.in2p3.fr/cours/master/ccin2p3-formation_puppet-0.1.1.tar.gz
    
  2. installer le module ccin2p3/formation_puppet
    sudo puppet module install ccin2p3-formation_puppet-0.1.1.tar.gz
    
  3. lisez la documentation de ce module
  4. écrire un manifest reprenant l'exemple du paragraphe "Usage" de la documentation, et l'appliquer avec sudo puppet apply. Appelez-le TP-module.pp
  5. en analysant la sortie de la commande sudo puppet apply répondez aux questions suivantes:
    • quels fichiers sont créés ou modifiés lors du premier apply ?
    • même question au deuxième apply
  6. Où se trouve le code de la classe formation_puppet::motd ?
  7. Modifiez le code du module formation_puppet:
    # décompressez l'archive d'origine
    tar xvfz ccin2p3-formation_puppet-0.1.1.tar.gz
    # modifiez la classe `formation_puppet::motd` afin que le contenu du fichier généré dans `/etc/motd` contienne en plus le nom de l'OS (voire d'autres *facts* de la machine)
    cd ccin2p3-formation_puppet-0.1.1
    vi manifests/motd.pp
    # incrémentez la version en 0.2.0
    vi metadata.json
    # ajoutez une entrée au "changelog"
    vi CHANGELOG.md
    # rebuildez le module
    pdk build
    # installez le module màj
    sudo puppet module install pkg/ccin2p3-formation_puppet-0.2.0.tar.gz -f
    
  8. Quels sont les modules utilisés par le module formation_puppet ?

Note

Vous devrez rebuilder et réinstaller le module après chaque modification.