1

伙计们,在我的 .j2 模板中,我想像这样使用来自每个主机的 ansible 变量

dc_suffix={{ ansible_ec2_placement }}

但是,"msg": "AnsibleUndefinedVariable: ERROR! 'ansible_ec2_placement' is undefined"}出现错误。

ansible 获取特定实例的可用区的正确语法是什么?ec2_facts文档很少

4

2 回答 2

2

我已经能够做到这一点:

- name: Gather facts
  action: ec2_facts
  register: ec2_facts

然后在模板中:

dc_suffix={{ ec2_facts.ansible_facts.ansible_ec2_placement_availability_zone }}

这样做有什么问题吗?

谢谢!

于 2016-02-17T17:44:12.520 回答
0

这可能比@Cmag 的答案更简单,至少对于 ansible v 1.9:

- name: gather ec2 facts
  action: ec2_facts

- name: display AZ
  debug: msg="region is {{ ansible_ec2_placement_availability_zone }}"

在 shell 中,您可以使用以下命令查看 ec2_facts 设置的所有事实:

echo "localhost ansible_connection=local" >inv
ansible -m ec2_facts localhost -i inv

这将打印出大量 json 格式的变量。

于 2017-01-14T00:00:18.903 回答