Ansible: Можем ли мы иметь собственные имена для файлов host_vars - PullRequest
0 голосов
/ 27 апреля 2020

Что работает

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

../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"

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

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

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

1 Ответ

1 голос
/ 27 апреля 2020

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

allgrouphost1
allrouphost2

[master]
host1

[slave]
host2
host3
host4

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

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

С hosts file

host1 ansible_host=192.0.2.98 ansible_user=deploy

wih host_vars/host1.yml file

ansible_host: 192.0.2.98
ansible_user: deploy

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

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

См. Документацию для получения дополнительной информации и варианта использования.

...