Ansible: можем ли мы иметь собственные имена для файлов host_vars

Что работает

У меня есть доступный инвентарь, организованный следующим образом:

../project1
  |- group_vars
  |- host_vars
    |- 10.20.30.1.yml
       {{content like remote-endpoint="x.x.x.x", ... a very big var map... ,}}
    |- 10.20.30.2.yml
       {{content like remote-endpoint="y.y.y.y", ... a very big var map... ,}}
  inventory

содержимое моего файла инвентаря выглядит следующим образом:

10.20.30.1  hvar="host1"
10.20.30.2  hvar="host2"

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

Что я хотел сделать?

Я хотел, чтобы имена host_vars / * files * основывались на тегах (возможно) вроде - host1, host2 и т.д. вместо значения доступной переменной "inventory_hostsname". Это позволит мне дать некоторые специфические для функций имена, такие как master, slave и т.д.. Также в последнем случае имена файлов могут оставаться такими же, даже если хост изменяется.


person Vikas Verma    schedule 27.04.2020    source источник


Ответы (1)


Ansible дает возможность дать имя, как вы хотите. На самом деле это тоже предпочтительный способ. Вы можете определить все свои хосты в доступном файле hosts (не в / etc / hosts), как это.

allgrouphost1
allrouphost2

[master]
host1

[slave]
host2
host3
host4

Затем вы можете определить переменные в host_vars/host1.yml, host_vars/host2.yml и так далее.

Вы можете определить IP-адрес хоста в файле hosts или в конкретном файле переменных хоста с переменной ansible_host.

С hosts файлом

host1 ansible_host=192.0.2.98 ansible_user=deploy

с host_vars/host1.yml файлом

ansible_host: 192.0.2.98
ansible_user: deploy

Заголовки в скобках - это названия групп ([master], [slave]), которые используются для классификации хостов и принятия решения, какие хосты вы контролируете, в какое время и с какой целью.

Вы можете запускать playbooks по имени группы, чтобы они выполнялись только на тех хостах, которые принадлежат к этой группе. Вы также можете определить общие переменные в group_vars файле.

Дополнительные сведения и пример использования см. В документации.

person sakibmoon    schedule 27.04.2020