在 Ansible 中,如何根据 extra-vars 设置变量?
In Ansible, how do I set a variable based on extra-vars?
假设我正在为不同的 AWS 区域设置 Web 服务器,例如 us-east-1 和 eu-east-1。我这样做
$ ansible-playbook -i inventory web-server.yml -e "region=us-east-1"
我在多个地方使用变量 "region"。
现在在我的 roles/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 }}"
将您的变量重构为:
---
web_servers:
us-east-1: US-WebServer.domain.com
eu-east-1: EU-Webserver.domain.com
web_server: "{{ web_servers[region] }}"
这样 web_server
将根据 region
值自动模板化为正确的地址。
假设我正在为不同的 AWS 区域设置 Web 服务器,例如 us-east-1 和 eu-east-1。我这样做
$ ansible-playbook -i inventory web-server.yml -e "region=us-east-1"
我在多个地方使用变量 "region"。
现在在我的 roles/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 }}"
将您的变量重构为:
---
web_servers:
us-east-1: US-WebServer.domain.com
eu-east-1: EU-Webserver.domain.com
web_server: "{{ web_servers[region] }}"
这样 web_server
将根据 region
值自动模板化为正确的地址。