Я создаю Ansible роль для развертывания Elasti c Stack и различных битов. У меня все ES-серверы запущены и работают, и сейчас я работаю над развертыванием различных необходимых мне битов.
Я создаю шаблон Jinja для файлов yaml конфигурации битов. Мне нужно идентифицировать мои узлы приема и порт. Я развертываю все из Foreman, поэтому я использую параметры там, чтобы переопределить значения по умолчанию, установленные в моих ролях.
У меня есть переменная массива, настроенная так: ingest_nodes: ["node1", "node2", "node3"]
У меня тоже самое, что и для master_nodes , Чтобы получить этот массив в шаблоне для шаблона файлаasticsearch.yml, я использую {{ master_nodes|to_yaml }}
, и это приводит к результатам, которые мне нужны в этом файле.
Но для файла конфигурации beats, похоже, мне нужно добавить порт (который я также определил как переменную) для каждого узла.
Я ищу способ сделать это в шаблоне. Я сделал это таким образом, чтобы сделать кластер масштабируемым. Если мне нужно больше узлов загрузки или каких-либо других узлов, я просто добавляю имя хоста в соответствующую переменную массива, собираю новую ВМ и повторно запускаю ansible на всех узлах, чтобы получить обновленные конфигурации.
Из приведенных ниже переменных:
ingest_nodes: ["node1", "node2", "node3"]
elastic_port: 9200
Мне нужно, чтобы вывод шаблона был таким:
host: [node1:9200, node2:9200, node3:9200]