znerol.certhub

Rôle Ansible : Certhub

Statut de Construction

Installe certhub et git-gau sur des serveurs linux contrôlés par systemd.

Exigences

  • Git
  • OpenSSL
  • Rsync si la machine cible fonctionne en tant que serveur SSL/TLS.
  • Soit certbot, dehydrated ou lego lorsque la machine cible fonctionne comme contrôleur.

Variables du Rôle

Ce rôle contient plusieurs fichiers de tâche. Le fichier de tâche principal en importe seulement certains :

  1. certhub-system-setup.yml : Crée l'utilisateur et le groupe certhub, le répertoire de configuration et prépare le répertoire personnel.
  2. certhub-software-setup.yml : Récupère et installe certhub et git-gau.
  3. certhub-git-setup.yml : Configure user.name et user.email de git.
  4. certhub-repo-setup.yml : Initialise le dépôt git local certs.

Les fichiers de tâches suivants contiennent des étapes de configuration supplémentaires :

  1. certbot-noroot-config.yml : Simplifie l'utilisation de certbot en tant qu'utilisateur non privilégié certhub en plaçant un fichier cli.ini approprié.

Les fichiers de tâches suivants contiennent des étapes pour configurer l'acquisition et le déploiement des certificats.

  1. Environnement pour les unités systemd : Variables contenant des chemins vers des fichiers d'environnement respectés par toutes les unités systemd certhub.
  2. repo-push-units.yml : Met en place les unités systemd responsables de pousser le dépôt certs vers les serveurs SSL/TLS dès qu'il change.
  3. certbot-run-units.yml : Met en place les unités systemd responsables de la délivrance/renouvellement d'un certificat et aussi de sa surveillance pour expiration (contrôleur).
  4. lego-run-units.yml : Met en place les unités systemd responsables de la délivrance/renouvellement d'un certificat et aussi de sa surveillance pour expiration (contrôleur).
  5. cert-export-units.yml : Met en place les unités systemd responsables du déploiement d'un certificat sur un serveur SSL/TLS, recharge les services concernés et/ou envoie les certificats vers des destinations spécifiées.

Variables pour certhub-system-setup.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_user_group: certhub
certhub_user_name: certhub
certhub_user_shell: /usr/bin/git-shell

certhub_home_dir_path: /var/lib/certhub
certhub_home_dir_mode: 0755

certhub_config_dir_path: /etc/certhub
certhub_config_dir_owner: root
certhub_config_dir_group: root
certhub_config_dir_mode: 0755

certhub_status_dir_path: "{{ certhub_home_dir_path }}/status"
certhub_status_dir_owner: "{{ certhub_user_name }}"
certhub_status_dir_group: "{{ certhub_user_group }}"
certhub_status_dir_mode: 0755

certhub_certs_dir_path: "{{ certhub_home_dir_path }}/certs"
certhub_certs_dir_owner: "{{ certhub_user_name }}"
certhub_certs_dir_group: "{{ certhub_user_group }}"
certhub_certs_dir_mode: 0755

certhub_private_dir_path: "{{ certhub_home_dir_path }}/private"
certhub_private_dir_owner: "{{ certhub_user_name }}"
certhub_private_dir_group: "{{ certhub_user_group }}"
certhub_private_dir_mode: 0700

certhub_repo_path: "{{ certhub_home_dir_path}}/certs.git"

Variables pour certhub-software-setup.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_certhub_version: v1.0.0
certhub_certhub_checksum: "{{ certhub_certhub_releases[certhub_certhub_version]['checksum'] }}"
certhub_certhub_url: "{{ certhub_certhub_releases[certhub_certhub_version]['url'] }}"
certhub_certhub_prefix: /usr/local
certhub_certhub_archive_path: "{{ certhub_private_dir_path }}/certhub-dist-{{ certhub_certhub_version }}.tar.gz"

certhub_gitgau_version: v1.3.0
certhub_gitgau_checksum: "{{ certhub_gitgau_releases[certhub_gitgau_version]['checksum'] }}"
certhub_gitgau_url: "{{ certhub_gitgau_releases[certhub_gitgau_version]['url'] }}"
certhub_gitgau_prefix: /usr/local
certhub_gitgau_archive_path: "{{ certhub_private_dir_path }}/git-gau-dist-{{ certhub_gitgau_version }}.tar.gz"

Les variables certhub_certhub_releases et certhub_gitgau_releases contiennent des urls et des checksums de toutes les versions publiques. Définissez certhub_certhub_version et certhub_gitgau_version pour spécifier une version particulière.

Variables pour certhub-git-setup.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_git_user_name: "{{ certhub_user_name }}"
certhub_git_user_email: "{{ certhub_user_name }}@{{ ansible_fqdn }}"

Variables pour certhub-repo-setup.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_repo_init_path: "{{ certhub_repo_path }}"
certhub_repo_init_message: Init

La configuration du dépôt git est ignorée lorsque certhub_repo_init_path est une chaîne vide.

Variables pour certbot-noroot-config.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_certbot_cli_ini_path: "{{ certhub_home_dir_path }}/.config/letsencrypt/cli.ini"
certhub_certbot_cli_ini_content: ""
certhub_certbot_work_dir: "{{ certhub_private_dir_path }}/certbot/work"
certhub_certbot_logs_dir: "{{ certhub_private_dir_path }}/certbot/logs"
certhub_certbot_config_dir: "{{ certhub_private_dir_path }}/certbot/config"

La variable certhub_certbot_cli_ini_content peut être utilisée pour fournir une configuration supplémentaire pour certbot. Par exemple, staging=true pour sélectionner l'environnement de staging lors de l'évaluation.

Environnement pour les unités systemd

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

# Fichier d'environnement optionnel partagé par toutes les instances et services certhub.
certhub_env_path: "{{ certhub_config_dir_path }}/env"
# Fichier d'environnement optionnel par instance partagé par tous les services certhub.
certhub_cert_env_path: "{{ certhub_config_dir_path}}/{{ certhub_cert_slug }}.env"
# Fichier d'environnement optionnel par service partagé par toutes les instances de service certhub.
certhub_unit_env_path: "{{ certhub_config_dir_path}}/{{ certhub_unit_prefix }}.env"
# Fichier d'environnement optionnel par instance et par service.
certhub_cert_unit_env_path: "{{ certhub_config_dir_path}}/{{ certhub_cert_slug }}.{{ certhub_unit_prefix }}.env"

certhub_env_owner: root
certhub_env_group: "{{ certhub_user_group }}"
certhub_env_mode: 0640

Utilisez ces variables dans des tâches personnalisées copy ou template pour peupler les fichiers env avec la configuration des services certhub. Remarque : Il n'y a pas de valeur par défaut pour certhub_unit_prefix. Cette variable doit être définie avec l'un des préfixes d'unités de service certhub valides actuellement :

  • certhub-cert-expiry
  • certhub-cert-export
  • certhub-cert-reload
  • certhub-cert-send
  • certhub-certbot-run
  • certhub-dehydrated-run
  • certhub-lego-run

Variables pour repo-push-units.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_repo_push_user: "{{ certhub_user_name }}"
certhub_repo_push_host: "{{ inventory_hostname }}"
certhub_repo_push_path: "{{ certhub_repo_path }}"
certhub_repo_push_remote: "{{ '{:s}@{:s}:{:s}'.format(certhub_repo_push_user, certhub_repo_push_host, certhub_repo_push_path) }}"
certhub_repo_push_path_unit: "{{ lookup('pipe', 'systemd-escape [email protected] ' + certhub_repo_push_remote | quote) }}"

Spécifiez certhub_repo_push_remote pour remplacer complètement le remote.

Variables pour certbot-run-units.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_cert_slug: "{{ inventory_hostname }}"

certhub_cert_expiry_timer_unit: "certhub-cert-expiry@{{ certhub_cert_slug }}.timer"
certhub_certbot_run_path_unit: "certhub-certbot-run@{{ certhub_cert_slug }}.path"

Définissez certhub_cert_slug pour spécifier l'instance de certificat.

Variables pour lego-run-units.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_cert_slug: "{{ inventory_hostname }}"

certhub_cert_expiry_timer_unit: "certhub-cert-expiry@{{ certhub_cert_slug }}.timer"
certhub_lego_run_path_unit: "certhub-lego-run@{{ certhub_cert_slug }}.path"

Définissez certhub_cert_slug pour spécifier l'instance de certificat.

Variables pour cert-export-units.yml

Les variables disponibles sont listées ci-dessous, ainsi que leurs valeurs par défaut (voir defaults/main.yml):

certhub_cert_slug: "{{ inventory_hostname }}"

certhub_cert_export_path_unit: "certhub-cert-export@{{ certhub_cert_slug }}.path"

certhub_cert_services: []

certhub_cert_reload_config_path: "{{ certhub_config_dir_path }}/{{ certhub_cert_slug }}.services-reload.txt"
certhub_cert_reload_path_unit: "certhub-cert-reload@{{ certhub_cert_slug }}.path"

certhub_cert_destinations: []

certhub_cert_send_config_path: "{{ certhub_config_dir_path }}/{{ certhub_cert_slug }}.destinations-send.txt"
certhub_cert_send_path_unit: "certhub-cert-send@{{ certhub_cert_slug }}.path"

Définissez certhub_cert_slug pour spécifier l'instance de certificat. Une liste des unités de service systemd qui devraient être rechargées chaque fois que l'instance de certificat change peut être définie à l'aide de certhub_cert_services. Une liste des destinations où le certificat doit être envoyé peut être spécifiée dans certhub_cert_destinations.

Dépendances

Aucune.

Exemple de Playbook

```

  • name: Configuration du contrôleur Certhub hosts: certhub-controller tasks:

    • name: Dépendances Certhub présentes package: name: - certbot - git - lexicon - openssl state: present

    • name: Certhub présent import_role: name: znerol.certhub

  • name: Configuration du Serveur TLS hosts: tls-server tasks:

    • name: Dépendances Certhub présentes package: name: - git - openssl state: present

    • name: Certhub présent import_role: name: znerol.certhub

    • name: Configuration des unités de poussée du dépôt delegate_to: nom-du-contrôleur-certhub import_role: name: znerol.certhub tasks_from: repo-push-units.yml

  • name: Configuration du Certificat TLS hosts: tls-server tasks:

    • vars: certhub_cert_services: - nginx import_role: name: znerol.certhub tasks_from: cert-export-units.yml

    • name: Configuration des unités de certbot delegate_to: nom-du-contrôleur-certhub import_role: name: znerol.certhub tasks_from: certbot-run-units.yml

    • name: CSR Certbot installé delegate_to: nom-du-contrôleur-certhub become: yes become_user: root copy: dest: "{{ certhub_cert_csr_path }}" owner: root group: root mode: 0644 content: | -----BEGIN CERTIFICATE REQUEST----- MIH6MIGhAgEAMBYxFDASBgNVBAMMC2V4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI KoZIzj0DAQcDQgAE1XubF1Uc4T595zSzikHAJTkXRlV5Fn5MhVUhr/18bm++5z2j 759NpRh/gbEieCT4sKZ0fUcPWBrLp5zf0CFaYqApMCcGCSqGSIb3DQEJDjEaMBgw FgYDVR0RBA8wDYILZXhhbXBsZS5jb20wCgYIKoZIzj0EAwIDSAAwRQIhANwIuwCc 45XooSB4bleXURLDGuChxcdFYYSHnnQjArizAiBYefMa83Kk1AJUIArnJ0Rk162D Fw3tPbiEVAmmvl0/5A== -----END CERTIFICATE REQUEST-----

    • name: Configuration certbot installée delegate_to: nom-du-contrôleur-certhub become: yes become_user: root copy: dest: "{{ certhub_certbot_config_path }}" owner: root group: root mode: 0644 content: | staging=true agree-tos=true register-unsafely-without-email=true manual-public-ip-logging-ok=true preferred-challenges=dns manual=true manual-auth-hook=/usr/local/lib/certhub/certbot-hooks/hook-lexicon-auth manual-cleanup-hook=/usr/local/lib/certhub/certbot-hooks/hook-lexicon-cleanup

    • name: Environnement d'unité certbot configuré delegate_to: nom-du-contrôleur-certhub become: yes become_user: root vars: certhub_unit_prefix: certhub-certbot-run copy: dest: "{{ certhub_cert_unit_env_path }}" owner: "{{ certhub_env_owner }}" group: "{{ certhub_env_group }}" mode: "{{ certhub_env_mode }}" content: | CERTHUB_LEXICON_PROVIDER=cloudflare LEXICON_CLOUDFLARE_USERNAME="myusername@example.com" LEXICON_CLOUDFLARE_TOKEN="cloudflare-api-token"

Licence

BSD

À propos du projet

Certhub - centralized certificate management the unix way

Installer
ansible-galaxy install znerol.certhub
Licence
Unknown
Téléchargements
276
Propriétaire