2014-09-04 1 views
36

В Ansible 1.7, я могу использовать -tags из командной строки, чтобы запускать только подмножество задач этих плейбуков.Ansible: в playbook отфильтруйте роль тегами (тегами) без прохождения в командной строке

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

Сначала я подумал, что это была эта команда, но это делает наоборот: пометка задач этими тегами вместо их фильтрации на основе этого.

roles: 
    - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] } 

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

+0

Кстати, причина, по которой я хочу это сделать, - запустить все задачи установки пакета на несколько ролей, чтобы я мог создать AMI, который кэширует все обновления/обновления/установки. Тогда я могу использовать это как базовый AMI. Попросите сценарий работать и просто укажем через командную строку на данный момент –

ответ

39

Вы только следующие варианты с текущей версией анзибль:

  1. Задание метки в командной строке
  2. использовать переменную вместо тегов к условно запускать задачи
  3. Разделите веб-сервер роль в нескольких ролях и использование зависимостей ролей для общих задач

Этот запрос функции has come up on the mailing list a few times и я не видел никаких указаний от команды разработчиков t шляпу он будет добавлен в качестве новой функции.

+14

Удивленный больше людей не требуют этого! Спасибо за ответ на этот вопрос. –

0

Использование условных обозначений может удовлетворить ваши потребности.

Вы можете увидеть больше информации в моем ответе на аналогичный вопрос другого человека here.

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