letsencrypt
Ansible LetsEncrypt
Роль для автоматизации сертификатов LetsEncrypt.
Стабильность: бета.
Требуемая версия Ansible: 2.x
Что она делает?
Эта роль устанавливает официальный клиент Certbot, устанавливает его и выдает или обновляет сертификат для вашего выбранного домена.
Функционал следующий:
- Проверено на Ubuntu 14.04 и Debian 8, Debian 9
- Включает только один домен на роль
- Работает только в режиме
certonly
Пул-реквесты приветствуются для добавления дополнительного функционала.
Установка
Вы можете установить роль напрямую из Galaxy следующим образом:
ansible-galaxy install jaywink.letsencrypt
Подробности
Путь и версия клиента Cerbot
Ubuntu 14.04, Debian 8
- Клиент будет установлен в
/opt/certbot
под root - Каждый запуск будет загружать код клиента Certbot из проверенной версии. Вы можете установить конкретную версию Certbot с помощью переменной
letsencrypt_certbot_version
.
Debian 9
- Клиент будет установлен через APT в стандартное место платформы в соответствии с последней версией в репозиториях.
Важные моменты
Список служб, которые должны быть остановлены до и (пере)запущены после получения нового сертификата, может быть настроен с помощью переменной
letsencrypt_pause_services
.Используется режим
certonly
, что означает отсутствие автоматической установки веб-сервера.После выдачи сертификата вы можете найти его в
/etc/letsencrypt/live/<domainname>
Подсказка: используйте это в вашей конфигурации Apache2, например, в вашей основной роли. Просто убедитесь, что вы не пытаетесь запустить Apache2 с активным виртуальным хостом без запуска роли LetsEncrypt сначала!
SSLCertificateFile /etc/letsencrypt/live/{{ letsencrypt_domain }}/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/{{ letsencrypt_domain }}/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/{{ letsencrypt_domain }}/chain.pem
Важно! Если эта роль не сработает в части запроса сертификата, возможно, вы остановили службы - будьте осторожны!
Если сертификат был запрошен ранее, эта роль автоматически попытается его обновить, если это возможно. Отключите эту функцию, установив
letsencrypt_force_renew
вfalse
. В этом случае обновление не будет пытаться осуществить, если сертификат не нуждается в обновлении.Поддомен
www.
будет автоматически запрошен вместе с сертификатом.- Чтобы отключить это поведение, установите
letsencrypt_request_www
вfalse
в ваших переменных.
- Чтобы отключить это поведение, установите
Требования
Проверено на следующих системах:
- Ubuntu 14.04 и Debian 8, Debian 9
- Apache2 и Nginx
- Ansible 2.x
Переменные роли
Обязательные
letsencrypt_domain
- Домен, для которого выдается сертификат.letsencrypt_email
- Ваш email как владельца сертификата.
Необязательные
letsencrypt_certbot_args
- Дополнительные аргументы командной строки, которые будут переданы Certbot — будут объединены сletsencrypt_certbot_default_args
. Смотрите документацию Certbot для аргументов, которые можно передать.letsencrypt_certbot_default_args
- Пожалуйста, смотритеdefaults/main.yml
, какие аргументы по умолчанию. Также вы можете добавить, чтобы переопределить все аргументы для Certbot, например, для использования другого плагина, установив их с помощью этой переменной.letsencrypt_certbot_verbose
- Сделать вывод Certbot в консоль (по умолчаниюtrue
).letsencrypt_certbot_version
- Установить конкретную версию Certbot, например, git тэг или ветку. Обратите внимание, что минимальная версия Certbot, которую мы поддерживаем, составляет 0.6.0. Не влияет на Debian 9.letsencrypt_force_renew
- Определяет, нужно ли всегда пытаться обновить, по умолчаниюtrue
.letsencrypt_pause_services
- Список служб для остановки/запуска во время вызова Certbot.letsencrypt_request_www
- Автоматически запрашиватьwww.
(по умолчаниюtrue
).
Пример Playbook
Эта роль лучше всего работает, когда включена непосредственно перед вашей основной ролью сайта, например. Или ее можно использовать в отдельном playbook, как показано ниже.
Эта роль должна выполняться от имени root на целевом хосте.
---
- hosts: myhost
become: yes
become_user: root
roles:
- role: ansible-letsencrypt
letsencrypt_email: [email protected]
letsencrypt_domain: example.com
letsencrypt_pause_services:
- apache2
Лицензия
MIT
Информация об авторе
Джейсон Робинсон (@jaywink) - mail@jasonrobinson.me - https://jasonrobinson.me - https://twitter.com/jaywink
Особая благодарность Стефану Грёнке (@gronke) за его работу над расширением этой роли.
Смотрите CONTRIBUTORS для полного списка участников.
ansible-galaxy install jaywink/ansible-letsencrypt