向cassandra配置模板yaml添加ansible变量

krcsximq  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(699)

我正在使用ansible设置一个aws cassandra集群,并尝试将动态ip传递给一个yml模板文件。我将IP分配给ansible组变量,并希望在填充cassandra config 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

…但只是模板中的这个替换似乎找不到它。

mrzz3bfm

mrzz3bfm1#

好的,所以对我有效的是在 varsPlay 2 ,并将该值传递给模板:
剧本:

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 }}

相关问题