Ansible: как запустить конкретный хост в Vagrant?

У меня сложная установка Ansible с несколькими хостами в моем групповом файле. Что-то вроде этого.

# hosts/groups

[local]
127.0.0.1

[server1]
server1.domain.com

[server2]
server2.domain.com

[group1]
local
server1

[group2]
local
server2

Таким образом, я могу запустить обе группы против localhost: 2222, который является моим ящиком Vagrant, однако они обе будут выполнены. Для тестирования я бы очень предпочел выбрать, какую настройку я хотел бы протестировать. Я экспериментировал с аргументами и условными операторами --extra-vars, что довольно некрасиво. Есть ли способ использовать аргумент extra_vars с конфигурацией хоста. Используя такую ​​команду, как ...

ansible-playbook playbook.yml -i hosts -l 127.0.0.1:2222 --extra-vars "vhost=server1.domain.com"

Или я совершенно не прав.


person Falk Schuetzenmeister    schedule 20.06.2016    source источник
comment
Я не совсем понимаю, что вы пытаетесь сделать. Вы хотите запустить те же сценарии на своей локальной машине разработки, что и на производственных узлах?   -  person Xiong Chiamiov    schedule 22.06.2016
comment
Извините за непонятность, у меня есть производственная установка с довольно большим количеством (в основном не связанных) машин. Создавая еще один, я хотел бы запустить только эту конкретную машину на моем бродячем экземпляре, чтобы посмотреть, как идут дела.   -  person Falk Schuetzenmeister    schedule 22.06.2016
comment
Я не совсем понимаю, что вы имеете в виду, говоря «запускать только эту конкретную машину против моего бродячего экземпляра»; Вы имеете в виду, что хотите запустить только конкретную роль или playbook против своего бродячего экземпляра?   -  person Xiong Chiamiov    schedule 23.06.2016
comment
Если быть точным, все записи / роли в playbook, назначенные определению хоста. В основном, чтобы иметь копию хост-машины в бродяге. Учитывая приведенный выше пример, я хотел бы, чтобы операции выполнялись для group1, но не один раз для group2, как в приведенном выше примере. Но может я совершенно ошибаюсь.   -  person Falk Schuetzenmeister    schedule 23.06.2016
comment
О, я понимаю - ваш локальный компьютер имитирует несколько типов серверов (server1 и server2), и вы хотите протестировать только один из этих типов.   -  person Xiong Chiamiov    schedule 24.06.2016


Ответы (1)


Я не думаю, что есть простой способ сделать это, изменив способ выполнения Ansible.

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

[$]> ansible-playbook -l 127.0.0.1:2222 group1.yaml

для запуска конфигурации group1 только для вашего экземпляра разработки.

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

- include: group1.yaml
- include: group2.yaml
person Xiong Chiamiov    schedule 24.06.2016