主机上方的 Ansible 变量

主机上方的 Ansible 变量

主机上方的 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 fileallvars 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

相关内容