Asgoret
Коллеги, добрый день. Подскажите как из составленного find списка вытащить наименования файлов? регистрацию я уже сделал, если просто запросить list файлов там возвращается куда переменных, однако вытянуть из path basename не получается( подозреваю ошибку в фильтре, но не могу найти
Asgoret
Фильтр же basename
Task: - name: See the regsiter list debug: msg: "{{ item }}" loop: - "{{ configs.files | basename }}" Error: {"msg": "'list object' has no attribute 'path'"}
Asgoret
А что ты кладешь в конфигс?
- name: Find all config files find: paths: '/opt/ansible/roles/apb/configs/{{ config_folder }}' file_type: "file" register: configs
Asgoret
А что ты кладешь в конфигс?
если убрать basename - возвращает список файлов, где у каждого файла есть path
Victor
"{{ configs.files |map(attribute='path')| basename }}"
Victor
Но это не точно
Victor
Тебе нужно получить сначала список путей, потом для каждого элемента сделать basename
Павел П.
Добрый. Обновляю AWX, докером согласно https://github.com/ansible/awx/blob/devel/DATA_MIGRATION.md git pull make docker-compose-build make docker-compose - всё ок. Но веб выдает 502 Bad Gateway nginx/1.10.3 на странице https://github.com/ansible/awx/blob/devel/INSTALL.md говорят запустить плейбук $ ansible-playbook -i inventory install.yml -e openshift_password=developer -e docker_registry_password=$(oc whoami -t) но файлов inventory, install.yml в папке из которой всё ставил - нет. что я упустил?
Павел П.
докер tools_awx_1 не стартовал
Павел П.
всё лежало в папке installer, спасибо за эффект чатика)
John
как ансиблом собрать "статистику"? типо есть у меня 400 машин. Мне бы понять сколько из них CentOS 6.5, сколько 7.1, и сколько Ubuntu... намекните куда рыть?
Roman
собери факты просто. выведи значения переменной FamilyOS или как то так она называется
Vadim
- setup: {} соберет факты, читай в них ansible_os_family
John
так это я ж получу просто 400 строк с указанием os_family
John
мне бы просто количество и сколько вариантов ОС есть понять. Что бы дальше уже для них писать плейбуки.
Vasiliy
Всем привет. Подскажите как можно реализовать поиск в инвентори по наличию у хоста host_var?
Vasiliy
вот пример инвентори
Vladislav 👻
через ansible-inventory наверно можно
Vladislav 👻
вот только как это в консоли красиво грепнуть, это вопрос
Vasiliy
и нужно получить hostname у того хоста, у которого есть переменная anm_master
Vasiliy
вот только как это в консоли красиво грепнуть, это вопрос
мне нужно результат использовать в плее потом
Vladislav 👻
а вам это для таска надо или для других задач?
Vladislav 👻
ааа
Vasiliy
для таска
Vladislav 👻
тогда что-то вы не так делаете наверно
Vladislav 👻
какую задачу вы под это заложили?
Vasiliy
по сути: есть ноды, одна из них мастер, нужно в таске подключить остальные ноды к мастеру. Мастер отличается наличием переменной(типа is_master)
Vladislav 👻
хреновая практика, сделайте две группы: мастер и слейв (или как там сейчас толеранто называть? 😬)
Vasiliy
ну и чтобы не прибивать гвоздями имя ноды мастера - думал сделать подобное: return hostname from inventory when is present var "is_master"
Vladislav 👻
и сделайте отдельную роль (хотя возможно и в роли мастера зайдет), где просто укзываете, что взять хосты из группы слейва
Vladislav 👻
Vladislav 👻
вот как пример
Vasiliy
спасибо, подумаю как можно изменить плей для этой задачи
Timur
Зачем такой треш?
Vladislav 👻
Зачем такой треш?
какой именно? и какие альтернативы?
Vadim
add_host в новую группу его с when: is_master
Vladislav 👻
а потом будет переписывать роль по 100500 раз, чтобы добавить/удалить только для мастер/слейв
Vladislav 👻
ну такое
Vladislav 👻
проще сразу выделить в отдельные роли: общее, мастер и слейв
Vladislav 👻
попилить на группы и спокойно этим управлять
Vasiliy
я сделал немного по-другому(все равно костыльно, но лучше пока не идет)
Vasiliy
Vasiliy
и в тасках: setup master when inv_hostname == anm_master setup slaves: add to host by value(anm_master)
Victor
Лучше через группы: host_group: vars: master_group: masters children: masters: hosts: master_host1: vars: host_role: master slaves: hosts: slave_host1: slave_host2: vars: host_role: slave И если так надо в плейбуке плей запущен на все хосты, то можно спокойно делать when: host_role == 'master' Или если получить список мастеров то это просто {{group[master_group]}} Совсем небольшое дублирование данных серьезно облегчает жизнь.
Victor
сча попробую... спасибо
У тебя там заработало?
Asgoret
У тебя там заработало?
на -vvvv fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution."}
Asgoret
У тебя там заработало?
через glob сча буду пробовать
Victor
на -vvvv fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution."}
Это от файнда или однострочник для выдергивания файлов?
Asgoret
Это от файнда или однострочник для выдергивания файлов?
``` - hosts: localhost connection: local vars: config_folder: server tasks: - name: Find all config files find: paths: '/Users/user/Documents/GitLab/apb/sdk-apb/apb/configs/{{ config_folder }}' patterns: "*.j2" register: configs - name: See the regsiter list debug: msg: "{{ item.name }}" loop: - "{{ configs.files | map(attribute='path') | basename }}" ```
Asgoret
это последняя итерация.... я уже делаю перерывы, чтобы в башсимбл не спуститься)
Victor
У меня вышло так: - hosts: localhost connection: local vars: config_folder: /home/vlitvin/ansible tasks: - name: Find all yaml files find: paths: '{{ config_folder }}' patterns: "*.yml" register: configs - name: See the regsiter list debug: msg: "{{ item }}" loop: "{{ configs.files | map(attribute='path') | map('basename') | list }}"
Victor
Из того что заметил пока правил: item.name - нейм лишний, потому что его нет. basename походу не умеет в список, поэтому нужно замапить list нужен чтобы собрать список пройдясь по генератору который возрващает map
Timur
Только item - плохо
Timur
Нужно переопределять через loop_var
Timur
Можно так: - hosts: localhost connection: local vars: config_folder: /home/vlitvin/ansible tasks: - name: Find all yaml files find: paths: '{{ config_folder }}' patterns: "*.yml" register: configs - name: See the regsiter list debug: msg: "{{ item.path | basename }}" loop: "{{ configs.files }}"
Timur
Лаконичнее получается
Timur
И без лишних мапов
Timur
Не стоит переусложнять код без необходимости
Victor
Ну или так, да
Egor
А кто-нибудь настраивал для Ansible AWX такую штуку как isolated node?
Egor
Возможно не ее, а ее аналог.
Vladimir
а че бот нельзя ответить?
Vladimir
бот ответит что он бот?
✙ DarkKC ✙
боту контролы не прилетают
simplemice.eth
выключите лампочку
Алексей
Ребят помогите плиз, что-то туплю как в одной роли делать таски на разные хосты? Спасибо за помощь, заранее
Ждун
Делать разные роли
Алексей
Я инклудю разные .yml но не знаю как привязать каждый инклуд к своему хосту
Алексей
delegate_to?
Спасибо))
NM
Delegate_to работающая вещь, вопрос только чтобы на клиенте не было конфликтов из за requirements для payloadds, например модулей pexpect 😀
Timur
ни в гэлакси ни на гитхабе нет принудительного контроля качества. Соответственно поток говн зашкаливает. Нужно смотреть репы корпораций, с достаточным количеством экспертов, например redhat.
Как пример, можно посмотреть, например, вот здесь: https://galaxy.ansible.com/lean_delivery Там роли, которые используются в рамках наших проектов и которые можно выводить в open source. Роли активно допиливаются, баги фиксятся, фичи добавляются. Все роли проходят довольно строгий контроль качества и обязательно тестируются в разных окружениях (docker, AWS cloud, open stack) на предмет корректной работы. Кому интересно - можно брать для своих нужд, а также активно контрибьютать - запрашивать нужные фичи, делать пулл-реквесты, предлагать улучшения и т.п. Будем рады любому конструктивному фидбеку.
Dok
Ребят, а как грамотно сделать вывод ipaddr(ну, наверное и любого другого фильтра) без квадратных скобок?