ansibleguy.infra_certs

Rôle Ansible - Générateur de Certificats

Rôle Ansible pour créer des certificats à utiliser sur un serveur Linux.

Offrez-moi un café

Statut du test Molecule Statut du test YamlLint Statut du test PyLint Statut du test Ansible-Lint Ansible Galaxy

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

À propos du projet

Meat-role to generate/manage certificates for other roles

Installer
ansible-galaxy install ansibleguy.infra_certs
Licence
other
Téléchargements
7.6k
Propriétaire
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg