主机上方的 Ansible 变量
你好,可以像这样为多主机创建一个变量吗?
vars:
some_vars: "./Prometheus/roles/" # <---- THIS Variable?
- hosts: lxd1
vars_files:
- Prometheus/vars/grafana_vars.yml
become: true
roles:
- '{{ some_vars }}Stouts.grafana' <--- var usage
- hosts: lxd1
vars_files:
- Prometheus/vars/exporters_common_vars.yml
become: true
roles:
- './Prometheus/roles/ansible-prometheus-exporters-common'
答案1
不,这不是剧本中的有效语法。剧本中没有办法包含适用于所有剧本的变量。
如果您希望将变量应用于多个剧本,那么多个主机可以在您的库存或 group_vars 中定义它们。
-e
如果您需要使用该选项将变量应用于许多游戏,您也可以从命令行传递变量。
答案2
正如@Zoredache 帖子中提到的,我将使用 group_vars 来定义一个组以将变量应用于所有主机。
为了做到这一点,我将使用以下库存文件:
[dev-servers] # inventory for dev servers
dev1.example.com
dev2.example.com
[production-servers] # inventory for production servers
prod1.example.com
prod2.example.com
[allvars:children] # group vars to apply for all hosts
dev-servers
production-servers
[productionvars:children] # group vars to apply for only production
production-servers
[devvars:children] # group vars to apply for only dev
dev-servers
然后,您将必须创建一个专用group_vars file
的allvars group
,请在此处找到目录布局的示例:
inventory_host # inventory file
group_vars/
allvars.yml # here we assign variables to all hosts
productionvars.yml # here we assign variables to only prod hosts
devvars.yml # here we assign variables to only dev hosts