venafi.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" EOFVenafi как услуга:
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 как услуга tokenAPI-ключ для Venafi как услуги trust_bundleТекстовый файл, содержащий сертификаты доверительных anchor в формате PEM (текстовом), обычно требуется для Trust Protection Platform urlURL службы 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.ymlcertificate_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 }}.pemcertificate_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Указывает, будут ли криптографические активы генерироваться удаленно или локально, а затем предоставляться удаленному хосту
По умолчанию:falsecertificate_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Указывает, следует ли копировать файл закрытого ключа на удаленный хост
По умолчанию:truecertificate_before_expired_hoursКоличество часов до истечения срока действия сертификата, когда он может быть продлен
По умолчанию:72certificate_renewУказывает, следует ли продлевать сертификат, если он находится в окне "before_expired_hours" при запуске плейбука
По умолчанию:truecertificate_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