jaywink.letsencrypt
Ansible LetsEncrypt
Un rôle pour automatiser les certificats LetsEncrypt.
Stabilité : bêta.
Version d'Ansible requise : 2.x
Que fait-il ?
Ce rôle va récupérer le client Certbot officiel, l'installer et délivrer ou renouveler un certificat pour le domaine de votre choix.
Fonctionnalités :
- Testé sur Ubuntu 14.04 et Debian 8, 9
- Un domaine par inclusion de rôle seulement
- Fonctionne uniquement en mode
certonly
Les Pull Requests sont les bienvenues pour ajouter plus de fonctionnalités.
Installation
Vous pouvez installer le rôle directement depuis Galaxy comme suit :
ansible-galaxy install jaywink.letsencrypt
Détails
Emplacement et version du client Certbot
Ubuntu 14.04, Debian 8
- Le client sera installé dans
/opt/certbot
en tant que root - Chaque exécution récupérera le code du client Certbot depuis une version de publication vérifiée. Vous pouvez définir une version spécifique de Certbot en utilisant la variable
letsencrypt_certbot_version
.
Debian 9
- Le client sera installé via APT à l'emplacement standard de la plateforme selon la dernière version dans les dépôts.
Choses à savoir
Une liste des services à arrêter avant et (re) démarrer après l'obtention d'un nouveau certificat peut être configurée en utilisant la variable
letsencrypt_pause_services
.Le mode
certonly
est utilisé, ce qui signifie qu'il n'y a pas d'installation automatique du serveur web.Après la délivrance du certificat, vous pouvez le trouver dans
/etc/letsencrypt/live/<nom de domaine>
Astuce, utilisez ceci dans votre configuration Apache2, par exemple, dans votre rôle principal. Assurez-vous simplement de ne pas essayer de démarrer Apache2 avec le virtualhost actif sans que le rôle LetsEncrypt soit d'abord exécuté !
SSLCertificateFile /etc/letsencrypt/live/{{ letsencrypt_domain }}/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/{{ letsencrypt_domain }}/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/{{ letsencrypt_domain }}/chain.pem
Remarque ! Si ce rôle échoue lors de la demande de certificat, vous avez peut-être arrêté des services - faites attention !
Si le certificat a déjà été demandé auparavant, ce rôle tentera automatiquement de le renouveler, si possible. Désactivez cette fonctionnalité en définissant
letsencrypt_force_renew
surfalse
. Aucun renouvellement ne sera tenté dans ce cas si le certificat n'est pas à renouveler.Un sous-domaine
www.
sera automatiquement demandé avec le certificat.- Pour désactiver ce comportement, définissez
letsencrypt_request_www
surfalse
dans vos variables.
- Pour désactiver ce comportement, définissez
Exigences
Testé avec les systèmes suivants :
- Ubuntu 14.04 et Debian 8, 9
- Apache2 et Nginx
- Ansible 2.x
Variables de rôle
Obligatoires
letsencrypt_domain
- Domaine pour lequel le certificat est requis.letsencrypt_email
- Votre adresse email en tant que propriétaire du certificat.
Optionnelles
letsencrypt_certbot_args
- Arguments supplémentaires de ligne de commande à passer à Certbot - seront combinés avecletsencrypt_certbot_default_args
. Consultez la documentation de Certbot pour les arguments que vous pouvez passer.letsencrypt_certbot_default_args
- Veuillez consulterdefaults/main.yml
pour voir les arguments par défaut. Vous pourriez aussi ajouter pour remplacer tous les arguments de Certbot, par exemple pour utiliser un autre plugin, définissez-les avec cette variable.letsencrypt_certbot_verbose
- Faire en sorte que Certbot affiche les informations dans la console (par défauttrue
).letsencrypt_certbot_version
- Définir une version spécifique de Certbot, par exemple un tag ou une branche git. Notez que la version la plus ancienne de Certbot que nous supportons est 0.6.0. N'a pas d'effet sur Debian 9.letsencrypt_force_renew
- Si l'on doit toujours tenter le renouvellement, par défauttrue
.letsencrypt_pause_services
- Liste des services à arrêter/démarrer lors de l'appel à Certbot.letsencrypt_request_www
- Demandewww.
automatiquement (par défauttrue
).
Exemple de Playbook
Ce rôle fonctionne mieux lorsqu'il est inclus juste avant votre rôle principal, par exemple. Ou il peut être utilisé dans un playbook individuel, comme ci-dessous.
Ce rôle doit devenir root sur l'hôte cible.
---
- hosts: myhost
become: yes
become_user: root
roles:
- role: ansible-letsencrypt
letsencrypt_email: email@example.com
letsencrypt_domain: example.com
letsencrypt_pause_services:
- apache2
Licence
MIT
Informations sur l'auteur
Jason Robinson (@jaywink) - mail@jasonrobinson.me - https://jasonrobinson.me - https://twitter.com/jaywink
Un grand merci à Stefan Grönke (@gronke) pour son travail sur l'expansion de ce rôle.
Voir CONTRIBUTORS pour une liste complète des contributeurs.
ansible-galaxy install jaywink.letsencrypt