Как стать автором
Обновить

Комментарии 13

А с тегами там уже все хорошо, не знаете?
Я пока проблем с тегами не замечал, а что с ними было не так?
Ну вот например, такая конструкция в контексте плейбука или роли:
— roles: {role: foo, tags: [«one», «two»]}
не работает.
Было много обсуждений, но авторы вроде как ссылались, что исправление будет в версии 2.0.
проверил в 2.0 — работает, как со --skip-tags=, так и просто c --tags=
Честно говоря, ранее проблем с этим не замечал. В какой версии проявлялась проблема?
Все верно, если указывать тег в консоли, то работает. Не работает есть прописывать в плейбуке и в зависимостях роли как я писал выше.
В плее в таком виде — работает:
  roles:
    - role: selectel.grafana
      grafana_use_official_repository: no
      tags:
        - grafana
        - powerdns_dashboard

Не работает есть прописывать в плейбуке и в зависимостях роли как я писал выше.

Приведите, пожалуйста, более полный пример и где возникает ошибка. Особенно интересует часть про «в зависимостях роли».
ansible 1.9.4

Не работает:
cat roles/role_name/meta/main.yml
---
dependencies:
  - { role: role_one, repo: var_name }
  - { role: role_two, tags: ['single', 'common'] }

С плейбуками пробовал как в документации указано:
You may also apply tags to roles:
roles:
— { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
Так тоже не работало.

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

Как отметка факта выполнения роли — работает уже давно, иначе бы у меня всё сразу поломалось :) в 2.0 тоже работает. Однако действительно есть неоднозначности и расхождения:
  • 1.9.4: если у роли есть зависимости и они внутри не помечены тегом, то таски зависимостей не будут выполнены, только сама роль
  • 2.0b2: если у роли есть зависимости и они внутри не помечены тегом, то зависимостей выполняются.

Что касается указания зависимостей в meta для выполнения конкретных тасков требуемых ролей: не работает ни в одной из версий.

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

Можно конечно использовать переменные, но мне кажется удобней настраивать логику выполнения тегами (субъективно).
В свете недавних новостей вопрос к вам как в некоторой мере вовлечённому человеку: как вы относитесь к покупке Ansible компанией Red Hat? Как по вашему мнению это скажется на перспективах?
Скорее положительно. Минимум:

Так что точно не закапают :D Будут дальше улучшать интеграцию с Fedora/RHEL-based утилитами.
> Стратегии

А есть же вот такое уже. Если кроме linear/free ничего больше нет, то зачем оно?
async относится к выполнению таска, т.е. запустили таск и пошли дальше, причём сделали это на всей группе хостов синхронно.

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

Т.к. стратегии реализованы в виде плагинов, то можно реализовать свою специфичную логику (два важных таска — синхронно, следующие — асинхронно). Более подробно реализацию можно посмотреть в коде: github.com/ansible/ansible/blob/devel/lib/ansible/plugins/strategy
Зарегистрируйтесь на Хабре, чтобы оставить комментарий