Назад | Перейти на главную страницу

Переменная 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'

Нет, это недопустимый синтаксис в сборнике пьес. В playbook нет возможности включить вары, которые будут применяться ко всем играм.

Если вы хотите, чтобы переменные применялись к нескольким играм, и поэтому несколько хостов определяют их в вашем инвентаре или group_vars.

Вы также можете передавать переменные из командной строки, если вам нужны переменные для применения во многих играх, используя -e вариант.

Как упоминалось в сообщении @Zoredache, я бы использовал group_vars, чтобы определить группу для применения 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