在Ansible中,如何根据extra-vars设置变量?

时间:2017-03-24 17:35:37

标签: ansible ansible-2.x

假设我正在为不同的AWS区域设置Web服务器,例如us-east-1和eu-east-1。我这样做

$ ansible-playbook -i inventory web-server.yml -e "region=us-east-1"

我在多个地方使用变量“region”。

现在我的角色/ web-server / defaults / main.yml我有这个

---
us-east-1: US-WebServer.domain.com
eu-east-1: EU-Webserver.domain.com

在一项任务中,我如何进入defaults / main.yml文件并将其设置为另一个名为“web_server?”的变量。然后我在角色的不同部分使用web_server。我知道我可以做到这一点,但有更好的方法吗?

- name: Setup web server for US region
  set_fact: web_server={{ us-eeast-1 }}
  when: "'us-east-1' in {{ region }}"
- name: Setup web server for EU region
  set_fact: web_server={{ eu-eeast-1 }}
  when: "'eu-east-1' in {{ region }}"

1 个答案:

答案 0 :(得分:1)

将您的vars重构为:

---
web_servers:
  us-east-1: US-WebServer.domain.com
  eu-east-1: EU-Webserver.domain.com
web_server: "{{ web_servers[region] }}"

这样web_server会根据region值自动模板到正确的地址。