Использование подстановочного знака в группе инвентаризации Ansible не работает должным образом - PullRequest
1 голос
/ 11 февраля 2020

Работает Ansible 2.9.3

Работая в большой среде с ежедневным приходом и уходом узлов, мне нужно использовать подстановочные имена узлов в группе узлов: ie:

[исключенные_хосты]

host01

host02

host03

[все]

хост *

in моя пьеса у меня есть


  • имя: "Тестирование работы с группами хостов"

    хосты: все, исключенные_хосты

    подключение: локальное

    задачи:

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

Так что Ansible не работает, как можно предположить.

лучший способ заставить это работать?

Я пытался: hosts: "{{ansible_hostname}}" ,! exclude_hosts

, но он ошибочно считался неверным синтаксисом yaml.

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

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Мне удалось найти решение моей проблемы:

---
- name: "Add host name to thishost group"

hosts: localhost

connection: local

tasks:

- name: "add host"

  ini_file:

    path: /opt/ansible/etc/hosts

    section: thishost

    option: "{{ ansible_hostname }}"

    allow_no_value: yes

-  meta: refresh_inventory

  - name: "Do tasks on all except excluded_hosts"

hosts: thishost,!excluded_hosts

connection: local

tasks:

Что он делает, так это добавляет имя хоста в группу под названием "thishost" при запуске playbook. Затем он обновляет файл инвентаря и запускает следующую игру. Это позволяет избежать необходимости постоянно обновлять инвентарь тысячами хостов и избегать использования групповых символов и диапазонов.

0 голосов
/ 11 февраля 2020

Blaster,

Вы уже пытались назначить хосты по IP-адресу?

You can use wildcard patterns ... IP addresses, as long as the hosts are named in your inventory by ... IP address:

192.0.\*
\*.example.com
\*.com**

https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html

...