Пример заполненного файла vars.yml#

Получение значений параметров из HashiCorp Vault#

При интеграции с HashiCorp Vault возможно получение значений параметров ansible из него. Для этого при указании параметров в файле vars.yml вместо значений параметров используется синтаксис:

ansible_password: "{{ lookup('hashi_vault', 'url=*** auth_method=approle role_id=*** secret_id=*** secret=*** validate_certs=0') }}"

, где:

  • url – URL для подключения к HashiCorp Vault. Например: https://my.vault.address;

  • auth_method – метод аутентификации. Например: approle;

  • role_id – используемый role.id;

  • secret_id – используемый secret.id;

  • secret – путь:ключ для получаемого секрета. Например: kv1/company/secret_keys:jks_password;

  • validate_certs – проверка доверия сертификата HashiCorp Vault.

Параметры подключения и аутентификации запрашиваются у администраторов HashiCorp Vault.

В результате значение переменной ansible_password будет получено из HashiCorp Vault при запуске установки.

Базовый файл#

Базовый файл — это файл Ansible/inventories/!EXAMPLE!/group_vars/all/vars.yml, содержащий минимальное количество настроек для корректной установки приложения.

Пример заполненного базового файла vars.yml:

ansible_user: kafka # пользователь, под которым производится установка
ansible_password: "{{ kafka_password }}" # ssh пароль от пользователя

kafka: # блок настроек для Kafka
  keyStorePath: path/to/kafka-server.jks # путь от inventories/_стенд_/ до файла с хранилищем сертификатов, при установке загружается на сервер
  keyStorePassword: "{{ jks_password }}" # пароль от хранилища сертификатов
  keyPassword: "{{ jks_password }}" # пароль от ключа в хранилище
  trustStorePath:  path/to/kafka-server.jks # путь от inventories/_стенд_/ до файла с хранилищем доверенных сертификатов, при установке загружается на сервер
  trustStorePassword: "{{ jks_password }}" # пароль от хранилища доверенных сертификатов
  audit: # настройки аудита
    rest: false # отключена отправка событий аудита в rest интерфейс

Расширенный файл настроек#

Расширенный файл — файл Ansible/roles/kafka/defaults/main.yml, представляет из себя пример всех изменяемых настроек со значениями «по умолчанию». Любую из указанных настроек можно перенести в свой vars.yml для переопределения ее значения.

tmp_dir:  path/to/installer # путь до временной директории на конечных серверах
wait_for_start: 120 # время (в секундах) на корректный старт приложения (падает с ошибкой при превышении)
check_correct_start: true # проверка корректности запуска приложения по наличию строки в логе
ansible_no_log: true # отключить вывод паролей в лог/output
password_encoder_cli_path: # путь до утилиты для шифрования паролей (helper/encode_passwords.yml)
#inventory_for_acl: IFT # ограничение списка ACL по инвентори (для установки в инвентори, не совпадающем с inventory в релизе)

ansible_user: kafka # пользователь, под которым производится установка
ansible_password: "{{ kafka_password }}" # ssh пароль от пользователя

# авторизация под другим пользователем и его паролем
#ansible_become: 1
#ansible_become_method: su
#ansible_become_user: new_user
#ansible_become_pass: "{{ new_user_password }}"


# авторизация под другим пользователем с использованием sudo (при добавлении в sudoers: kafka ALL=(new_user) NOPASSWD:ALL)
#ansible_become: 1
#ansible_become_user: new_user

kafka:
  distr: kafka_2.13-2.7.2.tgz # путь до приложения относительно /files (tar.gz или tgz архив)
  installdir:  path/to/Apache/kafka # абсолютный путь на конечном сервере до приложения
  logdir:  path/to/Apache/kafka/logs # абсолютный путь на конечном сервере до логов приложения
  datadir:  path/to/KAFKADATA # абсолютный путь на конечном сервере до данных приложения (через запятую, если путей несколько)
  #backup_installdir_to: path/to/installer # если параметр задан, то создаваемый папки installdir попадает в эту директорию. Не должно совпадать с installdir
  service_name: kafka # имя сервиса
  cleanLog: true # очистить путь до логов при установке
  cleanData: false # очистить путь до данных при установке
  xms: 256m # начальный heap size
  xmx: 7G # максимальный heap size
  use_KRaft: true # использование механизма KRaft для кластеризации (при false используется zookeeper)
  #cluster_uuid: # используемый UUID для KRaft кластера (по умолчанию генерируется автоматически через ./bin/kafka-storage.sh random-uuid)
  port: 9093 # используемый порт
  controller_port: 9094 # порт контроллера при использовании KRaft
  jmxport: 7010 # порт для подключения по JMX
  jmx_security_enable: true # включение авторизации для JMX
  jmx_access_roles: # переменные для генерации доступов. Если переменная не определена, то текущие доступы не меняются
    - user: <user_name>
      access: readonly
      password: <user_password>
  #id: 3 # уникальный broker.id для брокера в кластере (по умолчанию: порядковый номер хоста в inventory)
  #superUser: CN=00000000.KafkaCluster1,OU=00CA,O=SBRF,L=Moscow,C=RU # DN суперпользователя, иначе берется DN сертификата
  autoCreateTopics: false # автосоздание топиков
  trustStorePath: path/to/kafka.jks # путь от inventories/_стенд_/ до файла с trustStore (или абсолютный на сервере при needUploadJks: false)
  trustStorePassword: PLACEHOLDER # пароль от trustStore
  keyStorePath: path/to/kafka.jks # путь от inventories/_стенд_/ до файла с keyStore (или абсолютный на сервере при needUploadJks: false)
  keyStorePassword: PLACEHOLDER # пароль от keyStore
  keyPassword: PLACEHOLDER # пароль от ключа в хранилище
  cipherSuites: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 # список шифров для TLS соединения
  #admin_rights: # список DN администраторов доступа
  #  - CN=custom_admin,ST=Moscow,C=RU
  #iniChange: # изменить или добавить значение в файле формата ini/properties
  #  - fileName: path/to/server.properties # полный путь до файла или относительно installdir
  #    changeList:
  #      - key: log.segment.bytes
  #        value: 1073741824
  #        section: Defaults # необязательное поле с именем [секции] для изменения
  #        state: absent # необязательное поле, при пустом value удаляет строчку с указанным key, при пустом section - удаляет секцию
  #  additionalJavaOpts: "-XX:+AlwaysPreTouch" # дополнительные опции для KAFKA_HEAP_OPTS в kafka-server-start.sh

zookeeper:
  distr: kafka_2.13-2.7.2.tgz # путь до приложения относительно /files (tar.gz или tgz архив)
  installdir: path/to/Apache/kafka # абсолютный путь на конечном сервере до приложения
  logdir: path/to/Apache/kafka/logs # абсолютный путь на конечном сервере до логов приложения
  datadir: path/to/zookeeper/ # абсолютный путь на конечном сервере до данных приложения
  #backup_installdir_to: path/to/installer # если параметр задан, то создается архив installdir в эту директорию. Не должно совпадать с installdir
  service_name: zookeeper # имя сервиса
  cleanLog: true # очистить путь до логов при установке
  cleanData: false # очистить путь до данных при установке
  xms: 128m # начальный heap size
  xmx: 1G # максимальный heap size
  port: 2181 # используемый порт
  jmxport: 7000 # порт для подключения по JMX
  jmx_security_enable: true # включение авторизации для JMX
  jmx_access_roles: # переменные для генерации доступов. Если переменная не определена, то текущие доступы не меняются
    - user: <user_name>
      access: readonly
      password: <user_password>
  #id: 3 # уникальный zookeeper id для quorum (по умолчанию: порядковый номер хоста в inventory)
  #superUser: CN=00000000.KafkaCluster1,OU=00CA,O=SBRF,L=Moscow,C=RU # DN суперпользователя, иначе берется DN сертификата
  quorumPorts: 2888:3888 # порты для quorum (первый - для лидера, второй - на всех хостах, включая лидера)
  trustStorePath: path/to/zookeeper.jks # путь от inventories/_стенд_/ до файла с trustStore
  trustStorePassword: PLACEHOLDER # пароль от trustStore
  keyStorePath: path/to/zookeeper.jks # путь от inventories/_стенд_/ до файла с keyStore
  keyStorePassword: PLACEHOLDER # пароль от keyStore
  cipherSuites: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 # список шифров для TLS соединения
  #iniChange: # изменить или добавить значение в файле формата ini/properties
  #  - fileName: path/to/zookeeper.properties # полный путь до файла или относительно installdir
  #    changeList:
  #      - key: tickTime
  #        value: 5000
  #        section: Defaults # необязательное поле с именем [секции] для изменения
  #        state: absent # необязательное поле, при пустом value удаляет строчку с указанным key, при пустом section - удаляет секцию
  #additionalJavaOpts: "-XX:+AlwaysPreTouch" # дополнительные опции для KAFKA_HEAP_OPTS в zookeeper-server-start.sh