Timur
V
Владислав
Как можно отфильтровать выхлоп https://docs.ansible.com/ansible/latest/modules/package_facts_module.html
что бы получить список только тех пакетов которые origin == foo
выхлоп похож на словарь со списками вперемешку
{
"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"
}
],
....
}
Что то типа
packages | json_query('*[?origin == `foo`]') | flatten
но хз как ключи сохранить
Владислав
Можно тут посмотреть
http://jmespath.org/
Антон
Антон
вот пример с when - (scope_status | selectattr('name', 'equalto' , item.name ) | map (attribute='name') | list)[0] == item.name
#Rλatan
Антон
и что? 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
обратная ковычка, с одинарной не прходит
#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 |
Dmytro
#Rλatan
сделал по маске
#Rλatan
| Name | Version |
| ---------------------------------- | -------------------------------- |
{% for pkg in installed.debian_pkgs %}
| {{ "%-34s"|format(pkg.name) }} | {{ "%32s"|format(pkg.version) }} |
{% endfor %}
Dmytro
да, отступ это все равно не паддинг
Sergey
Sergey
Каково там, в 70х?
#Rλatan
Процветает в мире эмбендант😱
UglyKoyote
Коллеги, а подскажите - можно ли при выполнении таски получить текущий ip подключения к серверу на котором надо "сделать что-то"?
Sebor▂▅▇█▓▒░
UglyKoyote
эт которые через "сбор"? с целью экономии времени на установку было отключено. не хотелось бы включать, на крайний случай это держу. просто не факт что юзер заполнит IP в инвентори. А на целевой машине можеть быть более чем 1 сетевой интерфейс. и их порядок для меня не известен заранее. я ктому что не могу к примеру из фактов дернуть блаблабла _eth0
Alexander
UglyKoyote
да вот, походу придется всё таки юзера вынуждать заполнять инвентори с указанием IP, чтобы не подставлять костыли
UglyKoyote
спасибо
Sergey
Viktor
Доброе утро. В ансибле есть таск, который выводид список реплик для rds базы. Необходимо из этого списка сделать вывод только той, в названии которой присутствует слово replica. Не подскажите, как это следать? Пробую вот так, но первый дебаг выводид список всех реплик, а второй, в котором пытаюсь вывести необходимую мне - возвращает пустоту 🙁
https://take.ms/Fd0JyX
Alexander
Alexander
Я получал имена интерфейсов, но адрес там же, ansible_default_ipv4.address
Timur
Anonymous
Добрый день, у кого есть возможность поделиться советом:
1. Есть некотрые сервера, на которые с ансибла пушатся docker образы в tar архивах
Сам скрипт:
сравнивает md5 хеши образов на сервере с хешем, который на рсинке
если md5 не совпадает:
- выкачивает новый архив
- распаковывает
- запускает сервис через docker-compose
Сейчас скрипт на .sh. Cкрипт в будущем будет обрастать логикой. Сам вопрос:
Как лучше поступить:
- Оставить скрипт в sh
- Переписать его в ansible таски с использованием модулей
- Переписать на Python
Cам скрипт:
https://paste.ubuntu.com/p/5778WYRnPW/
Lamobot
Anonymous
Использовать хранилище образов для докера
если бы была возможность использовать registry, не пришел бы с вопросом)
т.к. при потере соединения с registry - перестает тянуть образ, а wget -c докачает)
Boris 🦍
Anonymous
Pit
Anonymous
проблема на самом деле распространённая - тормозные прокси с dlp могут поломать любое соединение
Bogdan (SirEdvin)
Иногда нужно доставлять образы на сервера, к которым очень большой пинг. Docker pull не справляется (
Anonymous
#Rλatan
Div
Павел П.
Добрый день.
Есть задача при настройке (конечно же ансиблом) системы выполнить несколько 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 благодарю, что навели на интересные мысли
Илья
Добрый день, я развернул 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 файле
Андрей
Farukh
Я так понимаю у вас AWX ругается что не может найти модуль. Установите его заранее при сборке контейнера. Или я чего то не понимаю?
Farukh
В моем случае, AWX поднят на виртуалке с убунтой и я заранее на него установил все модули которые нужны
Андрей
Все верно, просто чем это отличается от того, что я его самостоятельно внутрь образа установил
Андрей
и из интерпретатора его видно
Farukh
Да, вы ранее правильно сказали на счет venv. Попробуйте переопределить
Андрей
Андрей
в данной venv нужный модуль присутствует
Farukh
а в скриптах AWX какой python используется?