Asgoret
Коллеги, добрый день.
Подскажите как из составленного find списка вытащить наименования файлов? регистрацию я уже сделал, если просто запросить list файлов там возвращается куда переменных, однако вытянуть из path basename не получается( подозреваю ошибку в фильтре, но не могу найти
Sergey
Asgoret
Фильтр же basename
Task:
- name: See the regsiter list
debug:
msg: "{{ item }}"
loop:
- "{{ configs.files | basename }}"
Error:
{"msg": "'list object' has no attribute 'path'"}
Victor
Asgoret
А что ты кладешь в конфигс?
- name: Find all config files
find:
paths: '/opt/ansible/roles/apb/configs/{{ config_folder }}'
file_type: "file"
register: configs
Victor
"{{ configs.files |map(attribute='path')| basename }}"
Victor
Но это не точно
Asgoret
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
Timur
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]}}
Совсем небольшое дублирование данных серьезно облегчает жизнь.
Asgoret
У тебя там заработало?
на -vvvv
fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution."}
Victor
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
Asgoret
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 но не знаю как привязать каждый инклуд к своему хосту
Andrey
Timur
Timur
Алексей
NM
Delegate_to работающая вещь, вопрос только чтобы на клиенте не было конфликтов из за requirements для payloadds, например модулей pexpect 😀
Timur
ни в гэлакси ни на гитхабе нет принудительного контроля качества. Соответственно поток говн зашкаливает. Нужно смотреть репы корпораций, с достаточным количеством экспертов, например redhat.
Как пример, можно посмотреть, например, вот здесь:
https://galaxy.ansible.com/lean_delivery
Там роли, которые используются в рамках наших проектов и которые можно выводить в open source. Роли активно допиливаются, баги фиксятся, фичи добавляются. Все роли проходят довольно строгий контроль качества и обязательно тестируются в разных окружениях (docker, AWS cloud, open stack) на предмет корректной работы. Кому интересно - можно брать для своих нужд, а также активно контрибьютать - запрашивать нужные фичи, делать пулл-реквесты, предлагать улучшения и т.п. Будем рады любому конструктивному фидбеку.
Dok
Ребят, а как грамотно сделать вывод ipaddr(ну, наверное и любого другого фильтра) без квадратных скобок?