NS 🇷🇺
Ну, вот. Берете эти факты и фильтруете фильтрами по нужным параметрам
так все равно получется фильтровать переменную по переменной
Timur
Список переменных фильтровать по имени, да
Timur
Это более правильный способ, чем компоновать имя переменной из переменных, в большинстве случаев
NS 🇷🇺
за идею спасибо, хорошо когда есть варианты для выбора =)
Navern
ansible_run_tags вроде
спасибо, классно. Доступно кстати только с 2.5 ансибла
Vladislav 👻
подскажите, можно как-то вызвать роль с тегом? запуск самого плейбук будет без тега
Timur
за идею спасибо, хорошо когда есть варианты для выбора =)
А так по имени переменной выше сказали. Но этого лучше избегать, судя по опыту. Динамические имена переменных способны генерировать непредсказуемые ошибки во многих ситуациях. И их очень тяжело траблшутить
Vladislav 👻
идет вся роль
Timur
Что именно не канает?
Timur
идет вся роль
А что должно идти?
Vladislav 👻
только тот момент, который с тегом
Anonymous
Здравствуйте, я использую SecureCRT для создания port forward моим PC и удаленным Jumpbox, а затем я могу использовать настройки прокси-сервера socks в браузере для навигации по IP-адресам за Jumpbox. Есть ли способ использовать тот же метод с Ansible? Я хочу запустить Ansible на локальной виртуальной машине вместо того, чтобы запускать на удаленном Jumpbox. Ответ может быть на русском языке. (used google to translate the whole text)
Timur
только тот момент, который с тегом
Что вы хотите сделать-то?
Timur
Непонятно
Vladislav 👻
запустить из роли таски только с определнным тегом
Timur
Роль вызывается в плейбуке же?
Vladislav 👻
да
Vladislav 👻
но плейбук вызывается без тега
Timur
You can ONLY filter tasks based on tags from the command line with --tags or --skip-tags. Adding “tags:” in any part of a play (including roles) adds those tags to the contained tasks.
Vladislav 👻
я в курсе
Timur
Отфильтровать таски по тегам можно только из комманд-лайна
Vladislav 👻
поэтому и спросил, есть какой-то вариант
Timur
Если плейбук вызывается без этих ключей - никакой фильтрации не будет
Timur
поэтому и спросил, есть какой-то вариант
Не использовать теги для этого
Vladislav 👻
получается, общий кусок проще вынести в отдельную роль
Timur
Использовать параметры в роли и conditionals
Timur
Можно просто нужные куски включать инклудом с проверкой условия
Vladislav 👻
это понятно, но условие надо определить и управлять им
Timur
А тегами не надо?
Vladislav 👻
тег уже есть в роли, а так получается, надо роль переписывать всю, чтобы заложить новую логику
Timur
Если теги в роли, то что вам мешает запускать просто плейбуку с нужным ключом?
Vladislav 👻
ничего, но тогда плейбук становится не универсальным, т.к. полная раскатка с нуля не будет работать
Vladislav 👻
вот как вы собираетесь контролить потом, где вам надо плейбук запускать просто, где с тегами и какими, а где лимитировать хосты?
Timur
ничего, но тогда плейбук становится не универсальным, т.к. полная раскатка с нуля не будет работать
Вообще ничего непонятно. Зачем вам теги тогда? Если нужен везде один плейбук с одним и тем же набором параметров.
Timur
вот как вы собираетесь контролить потом, где вам надо плейбук запускать просто, где с тегами и какими, а где лимитировать хосты?
Ну, вообще-то, использование тегов подразумевает, что вы знаете - зачем они нужны и как их использовать.
Timur
Непонятен смысл тегов в описанном случае
Vladislav 👻
У меня есть роль, например, раскатать ссш ключ и поставить пакет, но группе хостов надо только ключ или только пакет
Vladislav 👻
Скорее всего, логичнее разделить эти роли...
Timur
Проще не смешивать разные роли
Vladislav 👻
Проще не смешивать разные роли
Ну это просто пример, по факту это одна роль для хадупа, но сейчас вот надо подключить еще одну машину и просто прокинуть ключ, поэтому вопрос и возник...
Artëm
А кто-нибудь использовал модуль xml?
Artëm
В чем вопрос?
Не могу понять как создать два элемента одинакового названия с тем же набором аттрибутов, но с разными значения у этих аттрибутов. В частности, это датасорс у томката
𝔹𝕠𝕣𝕚𝕤
Не могу понять как создать два элемента одинакового названия с тем же набором аттрибутов, но с разными значения у этих аттрибутов. В частности, это датасорс у томката
Тоже столкнулся с этой проблемой. Думаю надо попробовать в xpath указать селектор по аттрибуту. Что-то вроде /bla/a[contains(@prop,'Foo')]
𝔹𝕠𝕣𝕚𝕤
Не могу понять как создать два элемента одинакового названия с тем же набором аттрибутов, но с разными значения у этих аттрибутов. В частности, это датасорс у томката
Вот так получилось - copy: content: | <?xml version='1.0' encoding='UTF-8'?> <foo/> dest: ~/foo.xml - name: attr-a xml: path: ~/foo.xml xpath: /foo/bar[@attr1='a'] attribute: attr1 value: a - name: attr-b xml: path: ~/foo.xml xpath: /foo/bar[@attr1='b'] attribute: attr1 value: b
𝔹𝕠𝕣𝕚𝕤
ansible 2.7.1 у меня. Если это важно
Artëm
у меня тоже 2.7
𝔹𝕠𝕣𝕚𝕤
а питон?
Artëm
а питон?
на целевой машине?
𝔹𝕠𝕣𝕚𝕤
да
𝔹𝕠𝕣𝕚𝕤
модули исполняются на целевых
Artëm
на целевой 3.5 использую
𝔹𝕠𝕣𝕚𝕤
таск покажи что ли
Artëm
таск покажи что ли
- name: Test hosts: web-01 vars: driverClassName: org.postgresql.Driver factory: org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory maxTotal: 200 minIdle: 2 maxIdle: 5 maxWaitMillis: -1 type: javax.sql.DataSource tasks: - name: Add resource to context.xml xml: path: "/srv/tomcat/test.xml" xpath: /Context/Resource/[@name='jdbc/db'] attribute: "{{ item.attr }}" value: "{{ item.value }}" pretty_print: yes with_items: - { attr: 'driverClassName', value: "{{driverClassName}}" } - { attr: 'factory', value: "{{factory}}" } - { attr: 'maxTotal', value: "{{maxTotal}}" } - { attr: 'minIdle', value: "{{minIdle}}" } - { attr: 'maxIdle', value: "{{minIdle}}" } - { attr: 'maxWaitMillis', value: "{{maxWaitMillis}}" } - { attr: name, value: 'jdbc/db' } - { attr: 'type', value: "{{type}}" } - { attr: 'url', value: 'jdbc:postgresql://192.168.0.10:5432/db' } - { attr: 'username', value: 'postgres' } - { attr: 'password', value: 'postgres' }
Artëm
а ругается он так msg: 'Syntax error in xpath expression: /Context/Resource/[@name=''jdbc/db''] (Invalid expression)'
𝔹𝕠𝕣𝕚𝕤
Во-1ых, xpath: "/Context/Resource/[@{{item.attr}}='{{item.value}}']"
Artëm
Во-1ых, xpath: "/Context/Resource/[@{{item.attr}}='{{item.value}}']"
не, если так, тогда какой мне смысл? Есть два элемента Resource, как мне их различать тогда? я же думал, что конструкция @name='jdbc/db' отберет мне тот. у которого это значение, причем для всех аттрибутов
Artëm
вот пример, как выглядит датасорс
Artëm
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest"/>
𝔹𝕠𝕣𝕚𝕤
ааа
Artëm
и вот таких два, или больше
𝔹𝕠𝕣𝕚𝕤
𝔹𝕠𝕣𝕚𝕤
я бы в кавычки всё таки поставил
Artëm
я игрался с ними - не прокатывает
𝔹𝕠𝕣𝕚𝕤
и в with_items запись с name перенести самой первой
Artëm
и двойные, и одинарные, и без
Artëm
и даже здесь - { attr: name, value: 'jdbc/db' } убрал для эксперимента
𝔹𝕠𝕣𝕚𝕤
и двойные, и одинарные, и без
странно, у меня без проблем отработал пример
𝔹𝕠𝕣𝕚𝕤
да
𝔹𝕠𝕣𝕚𝕤
собственно просто сделал пробный плейбук и экспериментировал пока не получилось
𝔹𝕠𝕣𝕚𝕤
кстати