19.4. Spécification des commandes à exécuter avant ou après l'émission d'un certificat à l'aide du rôle de système certificate

Avec le rôle certificate, vous pouvez utiliser Ansible Core pour exécuter une commande avant et après l'émission ou le renouvellement d'un certificat.

Dans l'exemple suivant, l'administrateur veille à arrêter le service httpd avant l'émission ou le renouvellement d'un certificat auto-signé pour www.example.com, et à le redémarrer ensuite.

Note

Par défaut, certmonger essaie automatiquement de renouveler le certificat avant qu'il n'expire. Vous pouvez désactiver cette fonction en définissant le paramètre auto_renew dans le manuel de jeu Ansible sur no.

Conditions préalables

  • Le paquetage Ansible Core est installé sur la machine de contrôle.
  • Le paquetage rhel-system-roles est installé sur le système à partir duquel vous souhaitez exécuter le playbook.

Procédure

  1. Optional: Créer un fichier d'inventaire, par exemple inventory.file:

    $ *touch inventory.file* (toucher le fichier d'inventaire)
  2. Ouvrez votre fichier d'inventaire et définissez les hôtes sur lesquels vous souhaitez demander le certificat, par exemple :

    [webserver]
    server.idm.example.com
  3. Créez un fichier playbook, par exemple request-certificate.yml:

    • Définissez hosts pour inclure les hôtes sur lesquels vous souhaitez demander le certificat, par exemple webserver.
    • Définissez la variable certificate_requests de manière à ce qu'elle contienne les éléments suivants :

      • Attribuez au paramètre name le nom souhaité pour le certificat, par exemple mycert.
      • Le paramètre dns correspond au domaine à inclure dans le certificat, par exemple www.example.com.
      • Définissez le paramètre ca en fonction de l'autorité de certification que vous souhaitez utiliser pour émettre le certificat, par exemple self-sign.
      • Attribuez au paramètre run_before la valeur de la commande que vous souhaitez exécuter avant l'émission ou le renouvellement de ce certificat, par exemple systemctl stop httpd.service.
      • Attribuez au paramètre run_after la commande que vous souhaitez exécuter après l'émission ou le renouvellement de ce certificat, par exemple systemctl start httpd.service.
    • Définir le rôle de rhel-system-roles.certificate sous roles.

      Il s'agit du fichier du playbook pour cet exemple :

      ---
      - hosts: webserver
        vars:
          certificate_requests:
            - name: mycert
              dns: www.example.com
              ca: self-sign
              run_before: systemctl stop httpd.service
              run_after: systemctl start httpd.service
      
        roles:
          - rhel-system-roles.certificate
  4. Enregistrer le fichier.
  5. Exécutez le manuel de jeu :

    *ansible-playbook -i inventory.file request-certificate.yml* $ *ansible-playbook -i inventory.file request-certificate.yml* $ *ansible-playbook -i inventory.file

Ressources supplémentaires

  • Voir le fichier /usr/share/ansible/roles/rhel-system-roles.certificate/README.md.
  • Voir la page de manuel ansible-playbook(1).