certbot_nginx
Certbot NGINX
Простая роль Ansible для установки certbot
с плагином NGINX на Ubuntu 16.04 и Ubuntu 18.04.
Эта роль будет:
- Добавит PPA-репозиторий
certbot
- Установит пакеты
certbot
иpython-certbot-nginx
- Пакет
certbot
добавит задачуrenew
в cron и таймер systemd (Подробнее) - Сгенерирует SSL-сертификаты Let's Encrypt для указанного
domain_name
.
Предупреждение
Если у вас уже установлен Nginx с настроенным сайтом, который указывает на файлы в /etc/letsencrypt
, задача по созданию сертификата не будет выполнена (пример).
В общем случае рекомендуется выполнять эту роль перед любой другой ролью, устанавливающей и настраивающей Nginx.
Переменные роли
domain_name: www.mydomain.io
letsencrypt_email: [email protected]
certbot_nginx_cert_name: mycert # необязательно
certbot_version: 0.31.0-1+ubuntu{{ ansible_distribution_version }}.1+certbot+1 # необязательно
certbot_nginx_version: 0.31.0-1+ubuntu{{ ansible_distribution_version }}.1+certbot+1 # необязательно
Если указано, значение certbot_nginx_cert_name
будет передано как аргумент --cert-name
для certbot, который используется для идентификации сертификата в команде certbot, такой как certbot delete
. Вы увидите список сертификатов, идентифицированных по этому имени, выполнив команду certbot certificates
. Это имя также будет использоваться как пути к файлам сертификата в /etc/letsencrypt/live/
.
Пример Playbook - Один сертификат
# Playbook
- hosts: servers
roles:
- role: coopdevs.certbot_nginx
vars:
domain_name: www.mydomain.io
letsencrypt_email: [email protected]
Пример Playbook - Создание нескольких сертификатов
Также позволяет генерировать и управлять несколькими сертификатами на одном хосте. Вы можете определить переменную domain_names
и настроить роль, чтобы включить эту роль в цикле.
# Playbook
- hosts: servers
roles:
- role: coopdevs.certbot_nginx
vars:
letsencrypt_email: [email protected]
- role: certificates
vars:
domain_names:
- community.coopdevs.org
- forms.coopdevs.org
Создание пользовательской роли, включающей роль certbot_nginx
, которая генерирует сертификаты:
# certificates.yml Role
---
- name: Установить SSL сертификаты
include_role:
name: vendor/coopdevs.certbot_nginx
tasks_from: certificate.yml
with_items: "{{ domain_names }}"
loop_control:
loop_var: domain_name
Вам нужно объявить
loop_control
, чтобы сопоставить переменнуюitem
циклаwith_item
сloop_var
, заданным какdomain_name
. См. документацию поloop_control
Обновление существующих сертификатов
Если данные для вашего сайта изменились с момента создания сертификата, вы можете обновить список доменов. Роль проверяет разницу между доменами, присутствующими в сертификате, и списком предоставленных доменов, и решает, нужно ли обновлять сертификат или нет. Если вы хотите принудить процесс обновления, вы можете сделать это, установив certbot_force_update: true
или передав --extra-vars "certbot_force_update=true"
через командную строку.
Тестовая среда Let's Encrypt
Эта роль включает переменную letsencrypt_staging
, которая по умолчанию равна no
. Для разработки или отладки можно установить ее в yes
, например, передав переменные через командную строку --extra-vars "letsencrypt_staging=yes"
Это приведет к использованию тестовой среды Let's Encrypt и уменьшит вероятность возникновения ограничений по количеству запросов.
Лицензия
BSD
Информация об авторе
Coopdevs http://coopdevs.org
free software for Social and Solidarity Economy
ansible-galaxy install coopdevs/certbot_nginx