Пример заполненного файла 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