ansible_role_venafi
:warning: Этот проект с поддержкой сообщества достиг своего окончания и будет получать только обновления, связанные с безопасностью, и критические исправления ошибок. Вся функциональность этого проекта (и даже больше) доступна в Ansible Collection for Venafi, которая активно разрабатывается. Переходить на нее просто: установите коллекцию venafi.machine_identity
с помощью Ansible Galaxy и замените role: venafi.ansible_role_venafi
на role: venafi.machine_identity.certificate
в ваших плейбуках. Пожалуйста, переходите по мере возможностей.
Rol для Venafi в Ansible
Это решение добавляет возможности получения сертификатов в Red Hat Ansible, безупречно интегрируясь с Venafi Trust Protection Platform или Venafi как услуга таким образом, чтобы обеспечить соответствие корпоративной политике безопасности и предоставить видимость выпуска сертификатов на уровне всей компании.
:red_car: Попробуйте наши примеры интеграции сегодня
Позвольте нам показать вам шаг за шагом, как добавить сертификаты в вашу автоматизацию Инфраструктуры как код с помощью Ansible.
ПРИМЕЧАНИЕ Если вы не видите примера для используемого вами продукта, загляните позже. Мы усердно работаем над добавлением новых примеров интеграции.
Требования
Просмотрите предварительные условия Venafi, затем установите Ansible и VCert-Python (версии 0.10.0 или выше) с помощью pip
:
pip install ansible vcert --upgrade
Использование с Ansible Galaxy
Для получения дополнительной информации об Ansible Galaxy, посетите https://galaxy.ansible.com/docs/using/installing.html
Установите Роль Venafi для Ansible из Ansible Galaxy:
ansible-galaxy install venafi.ansible_role_venafi
Создайте файл
credentials.yml
и заполните его параметрами подключения:Trust Protection Platform:
cat <<EOF >>credentials.yml access_token: 'p0WTt3sDPbzm2BDIkoJROQ==' url: 'https://tpp.venafi.example' zone: "DevOps\\Ansible" trust_bundle: "/path/to/bundle.pem" EOF
Venafi как услуга:
cat <<EOF >>credentials.yml token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' zone: 'Business App\\Enterprise CIT' EOF
Роль Venafi для Ansible поддерживает следующие параметры подключения и учетные данные:
Имя переменной Описание access_token
Токен доступа к Trust Protection Platform для API приложения "ansible-by-venafi" password
[УСТАРЕВШИЙ] Пароль WebSDK Trust Protection Platform, используйте access_token
, если это возможноtest_mode
Когда "истина", роль работает без подключения к Trust Protection Platform или Venafi как услуга token
API-ключ для Venafi как услуги trust_bundle
Текстовый файл, содержащий сертификаты доверительных anchor в формате PEM (текстовом), обычно требуется для Trust Protection Platform url
URL службы Venafi (например, "https://tpp.venafi.example"), обычно относится только к Trust Protection Platform user
[УСТАРЕВШИЙ] Имя пользователя WebSDK Trust Protection Platform, используйте access_token
, если это возможноzone
Папка политики для TPP или имя приложения и API-псевдоним шаблона выпуска для VaaS (например, "Business App\Enterprise CIT") Используйте
ansible-vault
для шифрования файлаcredentials.yml
с использованием пароля. Это необязательно, но настоятельно рекомендуется. Как только вы знаете пароль, вы всегда можете расшифровать файл, чтобы внести изменения, а затем зашифровать его снова. Дополнительную информацию смотрите на https://docs.ansible.com/ansible/latest/user_guide/vault.html.ansible-vault encrypt credentials.yml
Напишите простой плейбук, например,
sample.yml
.- hosts: localhost roles: - role: venafi.ansible_role_venafi certificate_cert_dir: "/tmp/etc/ssl/{{ certificate_common_name }}"
Запустите плейбук.
ansible-playbook sample.yml --ask-vault-pass
Запуск плейбука сгенерирует сертификат и поместит его в папку /tmp/etc/ssl/. Параметр
--ask-vault-pass
необходим, если вы зашифровали файлcredentials.yml
. Дополнительные переменные плейбука могут быть добавлены для указания свойств сертификата и ключевой пары, местоположений файлов и для переопределения стандартных настроек.Имя переменной Описание credentials_file
Имя файла, содержащего учетные данные и параметры подключения к Venafi
По умолчанию:credentials.yml
certificate_common_name
Общее имя, запрашиваемое для сертификата.
По умолчанию:"{{ ansible_fqdn }}"
certificate_alt_name
Список Альтернативных имен субъекта для запроса сертификата, разделенный запятой. Каждое значение должно начинаться с типа SAN.
Пример:"DNS:host.example.com,IP:10.20.30.40,email:[email protected]"
certificate_privatekey_type
Алгоритм ключа: "RSA" или "ECDSA"
По умолчанию:"RSA"
(от VCert)certificate_privatekey_size
Размер ключа в битах для RSA-ключей
По умолчанию:"2048"
(от VCert)certificate_privatekey_curve
Элиптическая кривая для ECDSA-ключей
По умолчанию:"P251"
(от VCert)certificate_privatekey_passphrase
Пароль для шифрования закрытого ключа certificate_chain_option
Указывает, должен ли корневой сертификат CA появляться "последним" (по умолчанию) или "первыми" в цепочке файлов certificate_cert_dir
Локальный родительский каталог, где будут храниться криптографические активы
По умолчанию:"/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path
Локальный каталог, где будут храниться файлы сертификатов
По умолчанию:{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem
certificate_chain_path
Локальный каталог, где будут храниться файлы цепочки сертификатов
По умолчанию:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path
Локальный каталог, где будут храниться файлы закрытых ключей
По умолчанию:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path
Локальный каталог, где будут храниться файлы запросов на подпись сертификатов
По умолчанию:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
certificate_remote_execution
Указывает, будут ли криптографические активы генерироваться удаленно или локально, а затем предоставляться удаленному хосту
По умолчанию:false
certificate_remote_cert_path
Каталог на удаленном хосте, где будут храниться файлы сертификатов
По умолчанию:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path
Каталог на удаленном хосте, где будут храниться файлы цепочки сертификатов
По умолчанию:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path
Каталог на удаленном хосте, где будут храниться файлы закрытых ключей
По умолчанию:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_copy_private_key_to_remote
Указывает, следует ли копировать файл закрытого ключа на удаленный хост
По умолчанию:true
certificate_before_expired_hours
Количество часов до истечения срока действия сертификата, когда он может быть продлен
По умолчанию:72
certificate_renew
Указывает, следует ли продлевать сертификат, если он находится в окне "before_expired_hours" при запуске плейбука
По умолчанию:true
certificate_force
Указывает, следует ли запрашивать новый сертификат каждый раз при запуске плейбука
По умолчанию:false
Значения по умолчанию определены в файле defaults/main.yml.
Подготовка демо-среды Docker для запуска Ansible
(По желанию) Подготовьте демонстрационную среду. Если вы хотите использовать свою собственную инвентаризацию, обновите файл tests/inventory.
Чтобы запустить наш тестовый/демо плейбук, вам понадобится роль для развертывания Docker. Загрузите ее в каталог
tests/roles/provision_docker
:git clone https://github.com/chrismeyersfsu/provision_docker.git tests/roles/provision_docker
Затем создайте образы Docker, необходимые для демо-скрипта:
docker build ./tests --tag local-ansible-test
Демонстрационные сертификаты будут помещены в каталог
/tmp/ansible/etc/ssl
на хосте Ansible. Оттуда они будут распределены по каталогу/etc/ssl/
удаленных хостов.Генерируйте файл учетных данных для Trust Protection Platform или Venafi как услуги, как описано в вышеуказанном разделе.
Запустите плейбук Ansible (удалите
docker_demo=true
, если хотите использовать свою собственную инвентаризацию). Содержимоеcredentials.yml
будет использоваться для определения того, используется ли Trust Protection Platform или Venafi как услуга. Если вы установите параметрtoken
, плейбук предполагает, что вы используете Venafi как услугу. Если вы установите параметрыaccess_token
илиpassword
, плейбук предполагает, что вы используете Trust Protection Platform.ansible-playbook -i tests/inventory \ tests/venafi-playbook-example.yml \ --extra-vars "credentials_file=credentials.yml docker_demo=true" \ --ask-vault-pass
Вы будете запрошены на ввод пароля для расшифровки
credentials.yml
, как и раньше. Исходный файл для учетных данных можно переопределить с помощью переменной credentials_file, что можно указать в командной строке с помощью параметра--extra-vars
, как показано.
Пример плейбука
- hosts: servers
roles:
- role: "ansible-role-venafi"
certificate_common_name: "{{ ansible_fqdn }}.venafi.example.com"
certificate_cert_dir: "/tmp/ansible/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_chain_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
# Где выполнять модуль venafi_certificate. Если установлено значение false, сертификат будет
# создан на хосте ansible master и затем скопирован на удаленный сервер.
certificate_remote_execution: false
# Удаленное место для установки сертификата.
certificate_remote_cert_dir: "/etc/ssl"
certificate_remote_cert_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.key"
# Установите значение false, если не хотите копировать закрытый ключ в удаленное место.
certificate_copy_private_key_to_remote: true
Для примеров плейбуков посмотрите в файл venafi-playbook-example.yml.
Для примеров ролей посмотрите в файл venafi-role-playbook-example.yml.
Для получения дополнительной информации о том, как использовать роли, посетите https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html.
Лицензия
Copyright © Venafi, Inc. Все права защищены.
Это решение лицензировано под лицензией Apache, версия 2.0. См. LICENSE
для полного текста лицензии.
Пожалуйста, направляйте вопросы/комментарии на opensource@venafi.com.
Streamline machine identity (certificate and key) acquisition using Venafi vcert.
ansible-galaxy install Venafi/ansible-role-venafi