将 Ansible 变量添加到 Cassandra 配置模板 Yaml
Adding a Ansible variable to Cassandra config template Yaml
我正在使用 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
...不过就是模板中的这个替换好像找不到了
好的,所以对我有用的是在 vars
部分为 Play 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 }}
我正在使用 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
...不过就是模板中的这个替换好像找不到了
好的,所以对我有用的是在 vars
部分为 Play 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 }}