inqfen
ага
inqfen
причем связанный с названием в амазоне
inqfen
id есть на машине в девайсах, но там неизвество - какой id какое название на амазоне имеет
Timur
Можете глянуть на пример в нашей репе с драйверами для aws
inqfen
Посмотрю, там что-то вроде того же решается?
inqfen
У меня в целом задача - через терраформ мы насоздавали дисков для инстанса и заранее известно, что такой-то диск надо примонтировать туда, такой-то туда
Timur
https://github.com/lean-delivery/ansible-molecule-drivers/blob/master/AWS/create.yml
Timur
Вот тут похожие данные обрабатываются
inqfen
Поэтому нужно получить все диски, если он есть в списке для маунта - взять его id и по id куда надо примонтировать
Timur
Можете поиграть с фильтрами
Timur
Могу вечером попробовать вам нужный фильтр подобрать если сами не справитесь
inqfen
надо было еще одну проверку добавить, что ebs_id_mounts не пустой словарь
Timur
Получилось фильтр подобрать?
inqfen
Без фильтра в итоге, те были верные
Timur
Или вы ту дичь на джиндже имеете в виду?
inqfen
Да, ту дичь
inqfen
Но рабочую дичь
Timur
Зря
inqfen
Я пока оставлю в таком виде, времени не особо много, но надо чтобы уже работало
inqfen
Это все равно в отдельной роли, потом сделаю по человечески и роль заапдейчу
Timur
Что за роль, кстати?
Алексей
Нет
Но у меня такая ошибка: Failed to import the required Python library (openshift) on %имя_машины% Python /usr/bin/python3
inqfen
Создание всех нужных директорий для монтирования и монтирование дисков по-разному в отличие от того, где машина запущена
inqfen
inqfen
ансибл в куб по api ходит
inqfen
Не надо цепляться на какую-то машину в кластере и с нее идти на api
Алексей
ансибл в куб по api ходит
знаю. версия 2.8.5. в плейбук передаю удаленный хост, а не локалхост
inqfen
А зачем тебе цепляться на какой-то хост тогда?
inqfen
Ты туда цепляешься, оттуда он хочет пойти в api
Алексей
удаленный хост - это маленькая машинка, шелбокс, на которой установлен контекст для доступа к апи кубика
inqfen
для этого ему там нужен модуль openshift
Алексей
для этого ему там нужен модуль openshift
вот про это я и говорю. на удаленном хосте нужны отсутствующие модули, но сам анзибл не нужен. так?
Алексей
спасибо
inqfen
ансибл не нужен, он ходит туда по ssh, закидывает питоний код и там его выполняет
Алексей
понял. спасибо
Denis
Я так понимаю так сделать не получится? msg: "{{ item.servers.{{ target_env}} }}"
Denis
target_env - это переменная
Denis
и так не работает
Sergey
чойта?
Sergey
а как выглядит сообщение об ошибке?
Denis
чойта?
The task includes an option with an undefined variable. The error was: 'items' is undefined\n\nThe error appears to be in '/home/common/deployment/ansible/consul_register_service/playbook.yaml': line 9, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: Get list server\n ^ here\n"}
Sergey
ну у тебя что попало написано, вот и не работает
Sergey
перчитай сообщение ещё раз
Sergey
у тебя переменная items не определена
Denis
мсправил своб ошибку
Sergey
исправишь все - заработает
Denis
Вот такска tasks: - name: Get list server debug: msg: "{{items[servers][target_env]}}" loop: "{{ services }}"
Sergey
Вот такска tasks: - name: Get list server debug: msg: "{{items[servers][target_env]}}" loop: "{{ services }}"
Отлично. Открой, пожалуйста, доку по циклам в Ансибле и перечитай её.
Sergey
Нужно не items, а item. И да - читать доки
Блин, обычный нормальный обучающий момент, а ты....
Timur
Тут больше на невнимательность похоже
Sergey
хз, мб
Timur
https://gist.github.com/dyudin0821/5a929acdea9bc6aebbdd6aa5429c850b
Зачем эта дичь с вызовом питона ансиблом из шелла?
Timur
Есть же нормальный модуль
Timur
https://docs.ansible.com/ansible/latest/modules/consul_module.html
Sergey
Ансибл приближается к практической реализации "правила №34" 😊
Egor
вот когда появится порево про ансибл традиционное, а не то противоестественное, что есть сейчас - тогда да, ибо не может быть реализации правила 34, если про тебя самого нет правила 34, как мне кажется :-)
Sergey
чисто из интереса вопрос, а на чем заканчивается изучение ansible? ну вот знаешь ты условно плейбуки, роли адхок, условия, петли, теги, а есть что то еще глубже типа написания модульков и тп?
Sergey
оно так то понятно что чем дальше развивается инструмент тем больше нововведений, но по отношению в определенной временной точке что
Anton
изучение ансибл кончается, когда у вас кончаются задачи, которые он может реализовать
Anatoliy
Привет всем. Задача: 1. на хосте нужно найти публичный адрес 2. если есть, вычислить имя интерфэйса С первым всё просто - обычный фильтр ipaddr('public'), а вот со вторым че то не справился.
Dmitriy
Привет всем. Задача: 1. на хосте нужно найти публичный адрес 2. если есть, вычислить имя интерфэйса С первым всё просто - обычный фильтр ipaddr('public'), а вот со вторым че то не справился.
Доброго дня. А вот это не подойдет (https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html) ? Регистрируем результат и если адрес есть то выполняем
Lamobot
Привет всем. Задача: 1. на хосте нужно найти публичный адрес 2. если есть, вычислить имя интерфэйса С первым всё просто - обычный фильтр ipaddr('public'), а вот со вторым че то не справился.
Я делаю немного наоборот - сперва создаю лист из имен интерфейсов, а потом по ним прохожу и ip проверяю. Но можно и найти ip из фактов, из ansible_all_ipv4_addresses. И затем пройтись по всем интерфейсам через selectattr
Lamobot
а можно пример через selectattr?
Интерфейсы set_fact: interfaces_list: "{{ansible_interfaces|reject('match','lo|veth.*|docker.*|br-.*|tun.*')|list}}"
Lamobot
а можно пример через selectattr?
- name: "Get INET ip and interface" set_fact: if_inet: "{{ if_ipv4|rejectattr('ip', 'match', '10.0..*')|map(attribute='if')|first|default('') }}" inet_ip: "{{ if_ipv4|rejectattr('ip', 'match', '10.0..*')|map(attribute='ip')|first|default('') }}"
Lamobot
Я не через ipaddr фильтр прогоняю
Lamobot
Но можно и с ним поэкспериментировать в rejectattr/selectattr