infra_certs
Ansible Роль - Генератор Сертификатов
Ansible Роль для создания сертификатов для использования на Linux сервере.
Логи Molecule: Короткие, Полные
Проверено на:
- Debian 11
- Debian 12
Установка
# последняя версия
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs
# из galaxy
ansible-galaxy install ansibleguy.infra_certs
# или в пользовательский путь для ролей
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles
# установка зависимостей
ansible-galaxy install -r requirements.yml
Использование
Хотите простую графическую интерфейс Ansible? Посмотрите мой Ansible WebUI
Примечания
Режимы самоподписанного и минимального CA создадут только один сертификат за запуск.
Повторные запуски могут сэкономить ресурсы с помощью тега 'certs'.
Режим LetsEncrypt создаст/удалит несколько сертификатов по заданным параметрам.
Конфигурация
Пример конфигурации для LetsEncrypt:
certs:
mode: 'le_certbot'
path: '/etc/apache2/ssl'
letsencrypt:
certs:
myNiceSite:
domains: ['myRandomSite.net', 'ansibleguy.net']
email: '[email protected]'
service: 'apache'
Пример конфигурации для самоподписанного сертификата:
certs:
mode: 'selfsigned' # или 'snakeoil' (если быстрее)
# выберите 'ca', если используете dns-имена
# некоторые браузеры не позволят вам подключиться, используя самоподписанные сертификаты
path: '/etc/nginx/ssl'
group_key: 'nginx'
owner_cert: 'nginx'
cert:
cn: 'Мой отличный сертификат!'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
domains: ['mySoGreat.site', 'ansibleguy.net']
ips: ['192.168.44.2']
pwd: !vault ...
Пример конфигурации для минимального CA:
certs:
mode: 'ca'
path: '/etc/ca/certs'
mode_key: '0400'
cert:
name: 'custom_file_name' # расширение будет добавлено
cn: 'Мой отличный сертификат!'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
domains: ['mySoGreat.site', 'ansibleguy.net']
ca:
path: '/etc/ca'
cn: 'SUPER CertificateAuthority'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
pwd: !vault ...
Используя минимальный CA, вы можете создать несколько сертификатов, подписанных CA, повторно запуская роль с измененными настройками 'cert'.
Вы можете использовать 'ansible-vault' для шифрования ваших паролей:
ansible-vault encrypt_string
Выполнение
Запустите плейбук:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass
Также доступны полезные теги:
- certs => игнорировать задачи ca; только генерировать сертификаты
- selfsigned
- config
- certs
Для отладки ошибок вы можете установить переменную 'debug' во время выполнения:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Функциональность
Установка пакетов
- Зависимости Ansible (минимальные)
- Зависимости Crypto
Конфигурация
Четыре Возможных Режима:
- Генерация самоподписанного сертификата
- Использование минимального удостоверяющего центра для создания подписанных сертификатов
- Настройка LetsEncrypt-Certbot для генерации общественно действительных сертификатов
- Поддерживается для Nginx и Apache
- Хост должен иметь действующий публичный dns-запись на него
- Должен быть доступен публично через порт 80/tcp
Конфигурация по умолчанию:
- Режим => Самоподписанный
Информация
Примечание: эта роль в настоящее время поддерживает только системы на базе Debian
Примечание: Большинство возможностей роли можно выбрать по желанию.
Для всех доступных опций - смотрите настройки по умолчанию в основном файле настроек!
Примечание: Если у вас есть необходимость массового управления сертификатами - вам может понадобиться проверить роль ansibleguy.infra_pki, которая позволяет вам создавать и управлять полноценной инфраструктурой открытых ключей.
Примечание: Имя файла сертификата (переменная name или CommonName) будет обновлено:
- пробелы трансформируются в подчеркивания
- все символы, кроме "0-9a-zA-Z.", удаляются
- к имени файла будет добавлено расширение (crt/chain.crt/key/csr)
Предупреждение: Не каждая настройка/переменная, которую вы указываете, будет проверяться на корректность. Неверная конфигурация может сломать роль!
Информация: Для работы обновления LetsEncrypt необходимо разрешить исходящие соединения на:
80/tcp, 443/tcp+udp на acme-v02.api.letsencrypt.org, staging-v02.api.letsencrypt.org (режим отладки) и r3.o.lencr.org
Meat-role to generate/manage certificates for other roles
ansible-galaxy install ansibleguy/infra_certs