Владислав
Можно тут посмотреть http://jmespath.org/
Антон
Антон
вот пример с when - (scope_status | selectattr('name', 'equalto' , item.name ) | map (attribute='name') | list)[0] == item.name
Антон
и что? name - это ключ, которое ищется по значению
#Rλatan
да но name в моем случае == package_name которое не определенно
#Rλatan
ok: [asmdev-stretch64] => { "msg": [ { "acl": [ { "arch": "amd64", "category": "utils", "name": "acl", "origin": "Debian", "source": "apt", "version": "2.2.52-3+b1" } ], "adduser": [ { "arch": "all", "category": "admin", "name": "adduser", "origin": "Debian", "source": "apt", "version": "3.115" } ], "apache2": [ { "arch": "amd64", "category": "httpd", "name": "apache2", "origin": "Debian", "source": "apt", "version": "2.4.25-3+deb9u9" } ],
Антон
у вас задача получить где-то список acl, adduser и так далее?
#Rλatan
задача получать список всех пакетов origin == 'Debian'
#Rλatan
там большой список пакетов из разных источников
#Rλatan
обратная ковычка, с одинарной не прходит
#Rλatan
и финальная версия - name: "set some facts" set_fact: current_debian_pkgs: | {{ ansible_facts.packages | json_query('*[?origin == `Debian`]') | flatten }}
#Rλatan
что полный кабздец если нужно быстро проверить все роли =)
Sergey
эти все странные штуки только для того, чтобы не писать свой код?
#Rλatan
Код чего? фильтры уже написаны тривиальная задача скатывается в написание кода это странно как то dpkg -l | grep "name" это все мой код что хочу реализовать, но пока сплошные грабли, то одно не поддерживается, то другое :) Как например добавить padding в Jinja2 ? | <---padding-------------> name | | <---padding---> loooong _name |
#Rλatan
сделал по маске
#Rλatan
| Name | Version | | ---------------------------------- | -------------------------------- | {% for pkg in installed.debian_pkgs %} | {{ "%-34s"|format(pkg.name) }} | {{ "%32s"|format(pkg.version) }} | {% endfor %}
Dmytro
да, отступ это все равно не паддинг
Sergey
Каково там, в 70х?
#Rλatan
Процветает в мире эмбендант😱
UglyKoyote
Коллеги, а подскажите - можно ли при выполнении таски получить текущий ip подключения к серверу на котором надо "сделать что-то"?
UglyKoyote
эт которые через "сбор"? с целью экономии времени на установку было отключено. не хотелось бы включать, на крайний случай это держу. просто не факт что юзер заполнит IP в инвентори. А на целевой машине можеть быть более чем 1 сетевой интерфейс. и их порядок для меня не известен заранее. я ктому что не могу к примеру из фактов дернуть блаблабла _eth0
UglyKoyote
да вот, походу придется всё таки юзера вынуждать заполнять инвентори с указанием IP, чтобы не подставлять костыли
UglyKoyote
спасибо
Sergey
да вот, походу придется всё таки юзера вынуждать заполнять инвентори с указанием IP, чтобы не подставлять костыли
Есть ещё default-интерфейс в фактах - то есть тот, через который есть маршрут на 8.8.8.8
Viktor
Доброе утро. В ансибле есть таск, который выводид список реплик для rds базы. Необходимо из этого списка сделать вывод только той, в названии которой присутствует слово replica. Не подскажите, как это следать? Пробую вот так, но первый дебаг выводид список всех реплик, а второй, в котором пытаюсь вывести необходимую мне - возвращает пустоту 🙁 https://take.ms/Fd0JyX
Alexander
Я получал имена интерфейсов, но адрес там же, ansible_default_ipv4.address
Anonymous
Добрый день, у кого есть возможность поделиться советом: 1. Есть некотрые сервера, на которые с ансибла пушатся docker образы в tar архивах Сам скрипт: сравнивает md5 хеши образов на сервере с хешем, который на рсинке если md5 не совпадает: - выкачивает новый архив - распаковывает - запускает сервис через docker-compose Сейчас скрипт на .sh. Cкрипт в будущем будет обрастать логикой. Сам вопрос: Как лучше поступить: - Оставить скрипт в sh - Переписать его в ansible таски с использованием модулей - Переписать на Python Cам скрипт: https://paste.ubuntu.com/p/5778WYRnPW/
Anonymous
Использовать хранилище образов для докера
если бы была возможность использовать registry, не пришел бы с вопросом) т.к. при потере соединения с registry - перестает тянуть образ, а wget -c докачает)
Anonymous
проблема на самом деле распространённая - тормозные прокси с dlp могут поломать любое соединение
Bogdan (SirEdvin)
Иногда нужно доставлять образы на сервера, к которым очень большой пинг. Docker pull не справляется (
Anonymous
сделай локальный registry
тоесть на всех серверах куда нужно деплоить поднимать реджистри?
Anonymous
тоесть на всех серверах куда нужно деплоить поднимать реджистри?
я предполагаю, что сервера находятся в одной подсети
Vitaliy
Парни, помогите решить задачку: Все системные переменные нужно указывать в одном файле переменных system.yml (для удобства) И необходимо задать переменную со списком tcp портов, которые будут далее прописываться в iptables. Хосты добавлены каждый в свои группы в inventory файле. как я понимаю, можно задать переменную в таком виде (пример): firewall_allowed_tcp_ports_for: postgres_cluster: - 5432 - 6432 - 8008 etcd_cluster: - 2379 - 2380 balancers: - 5000 - 5001 - 7000 Затем, в плэйбуке пр. для hosts: postgres_cluster указать vars: firewall_allowed_tcp_ports: "{{ firewall_allowed_tcp_ports_for[postgres_cluster] }}" Но в inventory могут указываться хосты как для каждой независимой группы (их три), но также возможна ситуация когда во всех группах по сути одни и те же хосты. Вот в этом случае (когда ставятся все компоненты на один сервер) нужно чтобы в переменную firewall_allowed_tcp_ports попали порты всех групп: "{{ firewall_allowed_tcp_ports_for[postgres_cluster] }}" "{{ firewall_allowed_tcp_ports_for[etcd_cluster] }}" "{{ firewall_allowed_tcp_ports_for[balancers] }}" Я пока не придумал как это правильно организовать.
#Rλatan
Добрый день, у кого есть возможность поделиться советом: 1. Есть некотрые сервера, на которые с ансибла пушатся docker образы в tar архивах Сам скрипт: сравнивает md5 хеши образов на сервере с хешем, который на рсинке если md5 не совпадает: - выкачивает новый архив - распаковывает - запускает сервис через docker-compose Сейчас скрипт на .sh. Cкрипт в будущем будет обрастать логикой. Сам вопрос: Как лучше поступить: - Оставить скрипт в sh - Переписать его в ansible таски с использованием модулей - Переписать на Python Cам скрипт: https://paste.ubuntu.com/p/5778WYRnPW/
в баше проблем нет если вы понимаете что вам нужно на 100% я бы заменил wget на rsync wget -c http://rsync.company.com/$a.tar.gz -O /docker/containers/$a.tar.gz и убрал процесс в фон что бы не тормозил отработку, как закачиваются ВСЕ образы только потом делать проверку что запускать, как вижу идет торможение в 2х местах 1. скрипт ждет пока отработает docer-compose docker-compose up -d $a 2 скрипт ждет пока покачается образ wget -c http://rsync.company.com/$a.tar.gz -O /docker/containers/$a.tar.gz perl или python async могу добавить больше параллельности
Павел П.
Добрый день. Есть задача при настройке (конечно же ансиблом) системы выполнить несколько sql файлов в базе. По сути - создать табличку и функцию с неким передаваемым через extra_var префиксом. Это мне уже jinja-темплейты по-хорошему нужны? Иначе вижу только копирнуть на сервер файл и делать в нём замену sed'ом, что как-то не правильно.
Tadeusz
смотрели? https://docs.ansible.com/ansible/latest/modules/list_of_database_modules.html
Tadeusz
или сюда https://docs.ansible.com/ansible/latest/modules/mysql_db_module.html
Павел П.
хм.. этот может подойти https://docs.ansible.com/ansible/latest/modules/postgresql_query_module.html#postgresql-query-module
Павел П.
и таблички даже unlogged умеет. Спасибо!
Anonymous
@ob_hs @allertbig @igrlksv благодарю, что навели на интересные мысли
Div
@ob_hs @allertbig @igrlksv благодарю, что навели на интересные мысли
не за что. предложенная мною связка отлично себя показала не только в случае докера
Илья
Добрый день, я развернул awx. Если есть маны покидайте. Просто у меня ошибка при запуске команды выдаёт ошибку "msg": "Failed to connect to the host via ssh: ssh: connect to host. Хотя с самого ansible всё работает
Max
Нихрена не понял, при чем тут awx? Зайди глянь почему тебя хост отфутболивает для начала
Илья
Да
Павел П.
Да
И инвентори нормально засинкался? Повторяется с любым сервером?
Илья
Ага
Павел П.
Ну тогда в темплейте вербоуз на максимум и смотреть ))
Андрей
Всем привет. Много народу тут AWX Project юзает?
Андрей
Есть затык в использовании python-ldap через awx
Андрей
ругается, что модуль отсутствует при запуске таска через awx
Андрей
если запустить руками изнутри контейнера - все ок
Андрей
я так понимаю там юзается venv по умолчанию для запуска тасков
Farukh
Добавьте в образ контейнера этот модуль в compose файле
Андрей
Добавьте в образ контейнера этот модуль в compose файле
т.е если я его руками вкатываю - это не сработает?
Farukh
Я так понимаю у вас AWX ругается что не может найти модуль. Установите его заранее при сборке контейнера. Или я чего то не понимаю?
Farukh
В моем случае, AWX поднят на виртуалке с убунтой и я заранее на него установил все модули которые нужны
Андрей
Все верно, просто чем это отличается от того, что я его самостоятельно внутрь образа установил
Андрей
и из интерпретатора его видно
Farukh
Да, вы ранее правильно сказали на счет venv. Попробуйте переопределить
Андрей
Андрей
в данной venv нужный модуль присутствует
Farukh
а в скриптах AWX какой python используется?