ansibleguy.infra_certs
Rôle Ansible - Générateur de Certificats
Rôle Ansible pour créer des certificats à utiliser sur un serveur Linux.
Logs Molecule : Court, Complet
Testé sur :
- Debian 11
- Debian 12
Installation
# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs
# depuis galaxy
ansible-galaxy install ansibleguy.infra_certs
# ou pour un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles
# installer les dépendances
ansible-galaxy install -r requirements.yml
Utilisation
Vous voulez une interface Ansible simple ? Découvrez ma WebUI Ansible
Remarques
Les modes auto-signé et minimal-ca ne créeront qu'un seul certificat par exécution.
Les réexécutions peuvent économiser du temps en utilisant le tag 'certs'.
Le mode LetsEncrypt créera/retirera plusieurs certificats comme défini.
Configuration
Exemple pour la configuration LetsEncrypt :
certs:
mode: 'le_certbot'
path: '/etc/apache2/ssl'
letsencrypt:
certs:
myNiceSite:
domains: ['myRandomSite.net', 'ansibleguy.net']
email: '[email protected]'
service: 'apache'
Exemple pour la configuration auto-signée :
certs:
mode: 'selfsigned' # ou 'snakeoil' (si plus rapide)
# choisissez 'ca' si vous utilisez des noms DNS
# certains navigateurs ne vous laisseront pas vous connecter avec des certificats auto-signés
path: '/etc/nginx/ssl'
group_key: 'nginx'
owner_cert: 'nginx'
cert:
cn: 'Mon super certificat !'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
domains: ['mySoGreat.site', 'ansibleguy.net']
ips: ['192.168.44.2']
pwd: !vault ...
Exemple pour la configuration minimal-CA :
certs:
mode: 'ca'
path: '/etc/ca/certs'
mode_key: '0400'
cert:
name: 'nom_fichier_personnalisé' # l'extension sera ajoutée
cn: 'Mon super certificat !'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
domains: ['mySoGreat.site', 'ansibleguy.net']
ca:
path: '/etc/ca'
cn: 'SUPER Autorité de Certification'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
pwd: !vault ...
En utilisant le mode minimal-CA, vous pouvez créer plusieurs certificats signés par la CA en relançant le rôle avec des paramètres de 'cert' modifiés.
Vous voudrez peut-être utiliser 'ansible-vault' pour chiffrer vos mots de passe :
ansible-vault encrypt_string
Exécution
Exécutez le playbook :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass
Il existe également quelques tags utiles disponibles :
- certs => ignorer les tâches CA ; générez uniquement des certificats
- auto-signé
- config
- certs
Pour déboguer des erreurs, vous pouvez définir la variable 'debug' à l'exécution :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Fonctionnalité
Installation de paquets
- Dépendances d'Ansible (minimales)
- Dépendances Crypto
Configuration
Quatre modes possibles :
- Générer un certificat auto-signé
- Utiliser une Autorité de Certification minimale pour créer des certificats signés
- Configurer LetsEncrypt-Certbot pour générer des certificats valides publiquement
- Supporté pour Nginx et Apache
- L'hôte doit avoir un enregistrement DNS public valide pointé vers lui
- Doit être accessible publiquement sur le port 80/tcp
Configuration par défaut :
- Mode => Auto-signé
Info
Remarque : ce rôle ne supporte actuellement que les systèmes basés sur Debian
Remarque : La plupart des fonctionnalités du rôle peuvent être activées ou désactivées.
Pour toutes les options disponibles, voir la configuration par défaut située dans le fichier de configuration principal!
Remarque : Si vous avez besoin de gérer des certificats en masse, vous voudrez peut-être consulter le rôle ansibleguy.infra_pki qui vous permet de créer et de gérer une Infrastructure Publique Key.
Remarque : Le nom du fichier du certificat (variable name telle que définie ou autrement CommonName) sera mis à jour :
- les espaces sont transformés en traits de soulignement
- tous les caractères sauf "0-9a-zA-Z." sont supprimés
- l'extension de fichier (crt/chain.crt/key/csr) sera ajoutée
Avertissement : Tous les paramètres/variables que vous fournissez ne seront pas vérifiés pour leur validité. Une mauvaise configuration pourrait casser le rôle !
Info : Pour le renouvellement LetsEncrypt, vous devez autoriser les connexions sortantes vers :
80/tcp, 443/tcp+udp vers acme-v02.api.letsencrypt.org, staging-v02.api.letsencrypt.org (mode débogage) et r3.o.lencr.org
Meat-role to generate/manage certificates for other roles
ansible-galaxy install ansibleguy.infra_certs