Динамически фильтровать хосты в файле инвентаризации - PullRequest
0 голосов
/ 10 сентября 2018

Наша структура инвентаризации довольно стандартна, у нас есть основная папка инвентаря, подпапка для каждого отдельного сайта, которая содержит список хостов на определенном сайте и папку group_vars для каждого сайта, где мы храним дополнительные переменные для сайта / устройства:

inventory:
   ---> site1:
          hosts.txt
          ---> group_vars:
                site1.yml  

Пока что мы пытаемся создавать новые инвентаризации / сайты только в том случае, если на них работают все наши книги с книгами, но сейчас мы достигли той точки, когда нам нужно работать на сайтах, где мы знаем, что некоторые книги будут выходить из строя (или будут работать только для определенных hosts), поэтому мы хотели бы добавить несколько флагов в файлы инвентаризации (т. е. в [group: vars] или для каждого хоста), чтобы эти хосты можно было пропустить. Е.Г.

[group1]
host1
host2     
host3  playbook1_enabled: true

[group1:vars]
playbook1_enabled: false

На этом этапе список хостов для playbook1 должен быть отфильтрован только для host3:

ansible-playbook -i inventory/site1/hosts.txt playbook1.yml --list-hosts

playbook: playbook1.yml

play #1 (all): PLAYBOOK    TAGS: []
pattern: [u'all']
hosts (1):
  host3

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

Кто-нибудь знает, возможно ли это вообще? Если нет, каковы альтернативы? Я имею в виду, как лучше всего отслеживать, какая книга воспроизведения может работать на каком сайте / хостах, и автоматически исключать хосты, на которых эта книга не может работать?

Любое понимание этого вопроса приветствуется !!

...