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.
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
Optional: Créer un fichier d'inventaire, par exemple
inventory.file
:$ *touch inventory.file* (toucher le fichier d'inventaire)
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
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 exemplewebserver
. 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 exemplemycert
. -
Le paramètre
dns
correspond au domaine à inclure dans le certificat, par exemplewww.example.com
. -
Définissez le paramètre
ca
en fonction de l'autorité de certification que vous souhaitez utiliser pour émettre le certificat, par exempleself-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 exemplesystemctl 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 exemplesystemctl start httpd.service
.
-
Attribuez au paramètre
Définir le rôle de
rhel-system-roles.certificate
sousroles
.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
-
Définissez
- Enregistrer le fichier.
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)
.