ansible_role_venafi

Venafi
Лицензия Apache 2.0
Поддержка сообщества
Совместимость с TPP 17.3+ и VaaS
: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.

Продукты Доступные примеры интеграции...
F5 BIG-IP Как настроить безопасную доставку приложений с помощью F5 BIG-IP и роли Venafi Ansible
Citrix ADC Как настроить безопасную доставку приложений с помощью Citrix ADC и роли Venafi 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

  1. Установите Роль Venafi для Ansible из Ansible Galaxy:

    ansible-galaxy install venafi.ansible_role_venafi
    
  2. Создайте файл 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")
  3. Используйте ansible-vault для шифрования файла credentials.yml с использованием пароля. Это необязательно, но настоятельно рекомендуется. Как только вы знаете пароль, вы всегда можете расшифровать файл, чтобы внести изменения, а затем зашифровать его снова. Дополнительную информацию смотрите на https://docs.ansible.com/ansible/latest/user_guide/vault.html.

    ansible-vault encrypt credentials.yml
    
  4. Напишите простой плейбук, например, sample.yml.

    - hosts: localhost
      roles:
        - role: venafi.ansible_role_venafi
          certificate_cert_dir: "/tmp/etc/ssl/{{ certificate_common_name }}"
    
  5. Запустите плейбук.

    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

  1. (По желанию) Подготовьте демонстрационную среду. Если вы хотите использовать свою собственную инвентаризацию, обновите файл tests/inventory.

    1. Чтобы запустить наш тестовый/демо плейбук, вам понадобится роль для развертывания Docker. Загрузите ее в каталог tests/roles/provision_docker:

      git clone https://github.com/chrismeyersfsu/provision_docker.git tests/roles/provision_docker
      
    2. Затем создайте образы Docker, необходимые для демо-скрипта:

      docker build ./tests --tag local-ansible-test
      

    Демонстрационные сертификаты будут помещены в каталог /tmp/ansible/etc/ssl на хосте Ansible. Оттуда они будут распределены по каталогу /etc/ssl/ удаленных хостов.

  2. Генерируйте файл учетных данных для Trust Protection Platform или Venafi как услуги, как описано в вышеуказанном разделе.

  3. Запустите плейбук 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
Лицензия
apache-2.0
Загрузки
3895
Владелец
Venafi solutions find, protect and secure machine identities for our hyper-connected world.