Как исключить группу ресурсов из «всех» по умолчанию в Ansible? - PullRequest
0 голосов
/ 20 декабря 2018

Я настраиваю небольшой проект в ansible с общим узлом для других проектов.Этот узел является CI Runner и редко должен быть целью Playbook.

Я хочу исключить группу из all по умолчанию

Текущее решение, которое у меня есть, состоит в том, чтобы просто иметь группу под названием «свидетели» и исключить ее из всехplaybooks, которые запускают all

hosts:

[groupA]
node1
[bystanders]
ci-node

playbook_example:

hosts: all:!bystanders
...

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

1 Ответ

0 голосов
/ 20 декабря 2018

Я задал этот вопрос где-то еще, и были упомянуты Динамическая инвентаризация сценарии.

Динамическая инвентаризация возвращает «все» и «разгруппированы», поэтому мы можем манипулировать результатами для этих переменныхс динамическими сценариями инвентаризации.

{
    "_meta": {
            "hostvars": {}
    },
    "all": {
            "children": [
                    "ungrouped"
            ]
    },
    "ungrouped": {}
 }

Тем не менее, в этом разговоре было упомянуто, что «все» является чем-то вроде анти-паттерна, и во-первых, избегать его может быть хорошей идеей.«все» означает «все», и в этом случае ничто, относящееся к конкретному проекту, не должно использовать «все».

Так что я думаю, что это отвечает на вопрос для меня.Я буду избегать использования всего, и в случае, если мне действительно нужно это сделать, я воспользуюсь сценариями динамической инвентаризации

...