Приоритет файла Ansible Inventory - PullRequest
0 голосов
/ 25 июня 2018

Я перечитывал приоритет vars в Ansible, и я не уверен, является ли поведение, которое я получаю, разработанным или нет.Вот мой инвентарь Ansible:

---

all:
  children:
    we:
      children:
        workers:
          hosts:
            worker-we-vm1:
              order: 1
            worker-ew-vm2:
              order: 2
          vars:
            size: "Standard_B2s"
        controllers:
          hosts:
            controller-we-vm:
              order: 1
          vars:
            size: "Standard_B1s"
      vars:
        ip_prefix: "10.60"
    scus:
      children:
        workers:
          hosts:
            worker-scus-vm1:
              order: 1
            worker-scus-vm2:
              order: 2
          vars:
            size: "Standard_B2s"
      vars:
        ip_prefix: "10.61"
  vars:
    azure_profile: "test"

Теперь я ожидаю, что для we виртуальных машин (например, worker-we-vm1) будет установлено ip_prefix на 10.60, а для виртуальных машин scus(например, worker-scus-vm1) будет иметь ip_prefix, установленный на 10.61 при доступе к hostvars.Но это не так, на всех виртуальных машинах ip_prefix установлено значение 10.60.

Может кто-нибудь помочь с пониманием, почему приоритет vars не работает должным образом?Я прочитал https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html, и кажется, что это противоречит тому, как обрабатываются родительские переменные и переменные одного уровня.

1 Ответ

0 голосов
/ 25 июня 2018

Пространство имен группы хостов Ansible является плоским, а не иерархическим, поэтому в вашем примере есть только одна группа workers.

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

Разделите вашу группу workers, например, на workers_we и workers_scus (и используйте шаблоны хостов, если это было причиной определения).

...