как получить текущий исполняющий хост group_name, а не group_names в ansible? - PullRequest
0 голосов
/ 07 января 2020

Я прочитал Как вы получаете название группы исполняющей роли в ansible
Я также прочитал https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html
, но я не могу понять it.

Если один и тот же IP-адрес хоста в разных группах хостов, я думаю: «ansible отделяется при выполнении хоста, он должен принадлежать только одному имени группы, а не имени группы».
Как я могу получить текущий исполняющий хост gorup_name, а не group_names?

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Звучит так, будто вы хотите, чтобы группа эквивалентна inventory_hostname. К сожалению, его не существует. В качестве обходного пути вы можете рассмотреть возможность установки дополнительной переменной во время выполнения. Пример: --extra-vars targetgroup=group1

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

0 голосов
/ 07 января 2020

Во-первых,

вы можете написать один хост в нескольких группах.

Второй,

По моему мнению, получение 'group_name' для запуска хоста не имеет смысла

Независимо от того, что вы используете ad-ho c (playbook), вы должны указать, для какой группы хостов вы хотите выполнить команду (роль), all группа должна быть записана в вашей команде ansible (роль) даже если вы хотите выполнить на всех хостах.

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

В-третьих,

Даже если вы запускаете команду (роль) в двух группах, которые имеют одинаковые узлы, почему вы хотите знать, из какой группы находится узел?

ОБНОВЛЕНИЕ:

1. Как и в моем исходном ответе, вы можете определить множество групп, включающих один и тот же хост.

Например, это инвентарь file

[production]
machine01
machine02
[staging]
mchines01

And Используя это условие судейства в задачах.

when:
  - inventory_hostname in groups['production']

2. И вы также можете добавить теги для указанных c задач.

Для Экземпляр

- name: set hostname
  hostname:
    name: machine03
  tags:
    - production
    - staging

- name: reboot
  reboot:
    reboot_timeout: 1200
  tags:
    - staging

Запуск ansible - PlayBook общего с опцией -t

-t TAGS, --tags=TAGS  only run plays and tasks tagged with these values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...