在Ansible中,如何基于额外变量设置变量?

在Ansible中,如何基于额外变量设置变量?,ansible,ansible-2.x,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服务器/defaults/main.yml中,我有这个 --- us-east-1: US-WebServer.domain.com eu-east-1: EU-Webserver.domain.

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

$ ansible-playbook -i inventory web-server.yml -e "region=us-east-1"
我在多个地方使用变量“region”

现在在我的角色/web服务器/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 }}"

将变量重构为:

---
web_servers:
  us-east-1: US-WebServer.domain.com
  eu-east-1: EU-Webserver.domain.com
web_server: "{{ web_servers[region] }}"
这样,
web\u服务器
将根据
区域
值自动将模板转换为正确的地址