2017-01-06 8 views
-2

Я пытаюсь запустить анзибль с помощью следующей команды,Run анзибль на группу конкретных хостов

ansible-playbook provision.yml -l webserver 

И мой хост файл содержит следующие группы хостов,

[webclient] 
172.29.4.75 
[webserver] 
172.29.4.76 

Мой provision.yml также содержит 2 хоста, как показано ниже,

- hosts: webclient 
    user: centos 
    roles: 
    - nginx 
    - nvm 
- hosts: webserver 
    user: centos 
    roles: 
    - tomcat 

Моя проблема здесь даже мысли я использую «-l веб-сервера» роли, определенные для WebClient также работает в хостах webclient. Как я могу управлять им для запуска только определенных групп хостов?

+0

Ваша команда должна вернуть ошибку, которой не соответствует группа. Проблема заключается в том, что вы не копировали содержимое вопроса из своих реальных файлов и таким образом размещали вымышленную историю вместо проверяемого примера. – techraf

+0

Да, поскольку файл yml был большой, я только что свел его. исправленный веб-сервер в файле hosts также находится под вопросом. Моя проблема: опции -l не работают должным образом для определенных групп хостов –

+0

Нет, файл файла инвентаризации невелик, он содержит четыре строки, и с этим файлом команда правильно запускает игру в одной оставшейся группе. Разумеется, вы не загрузили книгу, потому что вам было слишком сложно использовать одну задачу «debug» вместо ролей. Так что лучше возложить эту нагрузку на того, кто читает вопрос. – techraf

ответ

1

Моя проблема здесь даже считается, что я использую роли «-l webserver», указанные для webclient, также выполняется в хостах webclient. Как я могу управлять им для запуска только определенных групп хостов?

Это обычно означает, что у вас есть тот же хост под webserver и webclient групп.

Передача -l webserver говорит анзибль использовать все хозяина из инвентаря, которые находятся под webserver группы.
Когда Ansible начинает игру - hosts: webclient, он ищет совпадения в инвентаре, а затем уменьшает совпадение с хостами с аргумента limit. Поэтому, если у вас есть хост, который находится под webserver и webclient, Ansible будет выполнять задания от webclient играть за них.

+0

, так как я могу запускать роли, специфичные только для «hosts: webserver» в моем «provision.yml», указанном выше –

+0

См. [Лучшие практики] (http://docs.ansible.com/ansible/playbooks_best_practices.html# верхний уровень playbooks-являются-разделенным-ролью). Вы должны разделить проигрыватели на разные файлы и включить их в свой верхний уровень. –

Смежные вопросы