Добавление переменной Ansible в шаблон конфигурации Cassandra Yaml - PullRequest
0 голосов
/ 11 февраля 2019

Я использую Ansible для настройки кластера AWS Cassandra и пытаюсь передать динамические IP-адреса в файл шаблона YML.Мне назначены IP-адреса для групповой переменной Ansible, и я хочу использовать это при заполнении моей конфигурации Cassandra YML.В Play 1 я изначально назначаю группу следующим образом:

file : roles/gather_cassandra_hosts/tasks/main.yml

- name: Setup hosts for Cassandra nodes
  add_host: hostname={{ node.public_dns_name }} groups=cassandraNodes

Затем в Play 2 я пытаюсь использовать эту переменную для установки следующей стандартной конфигурации Cassandra:

file : roles/install_cassandra/tasks/main.yml

- name: Override cassandra.yaml file
  template:
    src: cassandra.yaml
    dest: apache-cassandra-3.11.3/conf/
  with_items:
    - cassandraNodes

.

file : roles/install_cassandra/templates/cassandra.yaml

listen_address: {{ cassandraNodes }}

Но я получаю следующую ошибку:

failed: [ec2-xx-xx-xx-xx.region-1.compute.amazonaws.com] (item=cassandraNodes) => {
    "changed": false,
    "item": "cassandraNodes",
    "msg": "AnsibleUndefinedVariable: 'cassandraNodes' is undefined"
}

Вначале я могу использовать cassandraNodes очень хорошо, чтобы определить мои узлы ...

- name: Play 2. Install Cassandra
  hosts: cassandraNodes

... но именно эта замена в шаблоне, похоже, не может его найти.

1 Ответ

0 голосов
/ 11 февраля 2019

Хорошо, для меня сработало определение другой переменной в разделе vars для Play 2 и передача этого значения в шаблон:

Playbook:

vars:
  nodes: "{{ groups['cassandraNodes'] }}"

Роль:

- name: Override cassandra.yaml file
  template:
    src: cassandra.yaml
    dest: apache-cassandra-3.11.3/conf/
  with_items:
  - nodes

Шаблон:

listen_address: {{ nodes }}
...