Anton
еще видео какие-то были, но глубоко не копал, т.к. в этой сфере не работаю
lev
Да я это видел спасибо , возможно есть книжка на английском именно под это заточенная, или где этой части уделяется большое внимание
Anton
видеокурс
lev
Спасибо, это я не видел
Vadim "Oxyd"
Хм... Как фигурно у них всё запилено....
Mentat
Когда у тебя диски могут и уходят десятками в день - поневоле запилишь автоматизацию под этот процесс.
Ilia
Ну если мигрировать с бареметал то вся автоматизация это алерт и схема из нетбокса
George
Или все так ?
Ilia
После использования vsan и s2d каким-то архаизмом кажется вот это все. Да, там есть свои проблемы, но их меньше, чем при использовании рейдов на сервере. Ну или можно полку использовать. Хотя, у нас вот как на vnx гарантия закончилась, диски стали падать пачками, и было дешевле купить новую полку, чем продлить гарантию на vnx
Vadim "Oxyd"
Anton
После использования vsan и s2d каким-то архаизмом кажется вот это все. Да, там есть свои проблемы, но их меньше, чем при использовании рейдов на сервере. Ну или можно полку использовать. Хотя, у нас вот как на vnx гарантия закончилась, диски стали падать пачками, и было дешевле купить новую полку, чем продлить гарантию на vnx
аппаратные рейды это конечно та еще головная боль. Но ребята же пишут что уходят от этого постепенно (т.е. все новые серверы без резерва идут. переделка старых в такой манере - нереально по трудозатратам действие). Также, на сколько я понял гипервизоры вообще не используются у них, так что какой там vsan и s2d - слишком дорого все это. Можно было бы попробовать какую-нибудь опенсорс распределенную файловую систему типа seaweed/ceph/gluster, если позволяет сетевая инфраструктура.
Ivan
а что какая-то sds не убивает диски или позволяет их не менять вообще после потери ?
Anton
а что какая-то sds не убивает диски или позволяет их не менять вообще после потери ?
менять то их нужно, но это как правило полностью автоматизированный с программной части ввод-вывод этих дисков из коробки, централизованное управление всем пулом со стороны sds - гораздо более простая интеграция с jira и т.п., унификация не нужно 100500 плейбуков под тулзу каждого вендора. Также за счет масштаба и распределения емкости по многим серверам замена далеко не той оперативности требует, что с физ рейдами.....
Anna
with_fileglob. Туда засунь переменную
Заработало. Только ansible сам держу в проекте.
Anna
Подскажите, а если ansible не в проекте, а отдельно, доступ до файлов проекта как сделать? через какие-то встроенные переменные гитлаба? Потому что их видит только gitlab-runner
Alex
# dnf module disable container-tools а можно получить аналог через модуль dnf? Или shell наше все?
Aleksandr
- name: install the latest version of container-selinux dnf: name: container-selinux state: latest
Alex
ой, сорян
Alex
не та команда
Alex
обновил
Aleksandr
пацаны говорят, что используй command, ну или shell
Anna
подскажите, пожалуйста, можно ли в Ansible смотреть вывод лога в реальном времени и ограничить команду 2 минутами. Например комадра pm2 restart имя_приложения, затем запускаю лог pm2 logs app_name....он работает либо пока не прекратишь, либо ограничить строками в самой команде (по времени не знаю как). Но хотелось бы видеть, что именно лог выдает, а не ждать в неизвестности окончания таски. Для этого мне лог и нужен, чтоб смотреть.
Sergey
Механизм работы малость не подходит для такого сценария.
Отделение Bereke Bank
пацаны говорят, что используй command, ну или shell
https://github.com/ansible/ansible/issues/64852#issuecomment-625700329
Отделение Bereke Bank
видимо еще рано на 8-ю центось)
Alex
видимо еще рано на 8-ю центось)
там по крайней мере yum/dnf полноценно работают на python3 )))
Aleksandr
перешел на убунту и мои волосы стали в 10 раз короче
Div
перешел на убунту и мои волосы стали в 10 раз короче
это чтоб седину не так заметно было?
Anna
Механизм работы малость не подходит для такого сценария.
а если хотя бы выводить этот лог до определенного слова или определенное кол-во времени и сохранить это в файл + заархивировать для скачивания из Gitlab в ввиде артефакта.
Ivan
Коллеги, а как вы решаете проблему добавления портов в фв? firewalld, rich-rule? задача такая, есть 10 машин, на каждой должно быть доступно по 5 портов только для этих 10-ти машин. вариант просто открыть порты as is не прокатывает
Ivan
loop по нужной группе
так полчучается, два цикла, один по хостам, второй по портам?
Отделение Bereke Bank
так полчучается, два цикла, один по хостам, второй по портам?
можешь попробовать nested https://docs.ansible.com/ansible/latest/plugins/lookup/nested.html . у тебя будет первый лист - твоя группа хостов, второй - твои порты
Отделение Bereke Bank
так полчучается, два цикла, один по хостам, второй по портам?
- name: foo bar firewalld: rich_rule: 'rule family="ipv4" source address="{{ item[0] }}/32" port port="{{ item[1] }}" protocol="tcp" accept' permanent: true state: disabled immediate: yes with_nested: - '{{ groups[group_name] }}' - [22, 80, 443]
Отделение Bereke Bank
точнее не совсем так. но ты понял думаю
Ivan
да выглядит вроль даже так, осталось сформировать списки портов
Nikita
Ребят , как это в цикле сделать ? - name: print interfaces debug: msg: "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" - debug: msg: "{{ansible_enp8s0.macaddress}}" - debug: msg: "{{ansible_enp7s0.macaddress}}"
George
- debug: msg: "{{ item }}" with_items: - "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" - "{{ansible_enp8s0.macaddress}}" - "{{ansible_enp7s0.macaddress}}"
George
извини, я лох в ансибле, но выглядит что-то такое
George
и, да, пользуйся форматированием
George
э, так ты ж их не регистрируешь ?
Nikita
а как это сделать?
Nikita
записать из их надо
George
я не понимаю задачи в целом
George
словами плиз
Nikita
нужно получить связку мак + имя интерфеййса из фактов (оставив только enp* )
Nikita
словами плиз
- name: print interfaces debug: msg: "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}"
Nikita
так получаю интерфейсы
Nikita
ok: [8.8.8.8] => { "msg": [ "enp8s0", "enp7s0" ] }
Nikita
- debug: msg: "{{ansible_enp8s0.macaddress}}" так мак вытащить
George
- name: print interfaces debug: msg: "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" <- этому делаешь регистер
George
дальше ты можешь его использовать как переменную
George
- debug: msg: "{{ item }}" with_items: "{{ nested_list }}" это распечатает "enp8s0", "enp7s0" если ты зарядил это в nested_list
George
соответственно, логика в том, что ты хочешь этот item использовать как индекс в каком-то другом массиве или передать в другую команду
George
где лежат mac адреса
George
хз, пускай клеит, кто ж запрещает
Отделение Bereke Bank
наверное через еще один set_fact с regex_replace можно. попробуй
shuu
- debug: msg: "{{ansible_enp8s0.macaddress}}" так мак вытащить
насколько помню твою задачу, которой уже несколько дней, тебе надо вытащить все не виртуальные интерфейсы из фактов
shuu
поэтому лучше в цикле пробежаться по ansible_interfaces, для каждого интерфейса по его имени вытащить тип, ansible_{{interface_name}}.type == ether
shuu
и потом уже тащить макадрес
Lamobot
Ребят , как это в цикле сделать ? - name: print interfaces debug: msg: "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" - debug: msg: "{{ansible_enp8s0.macaddress}}" - debug: msg: "{{ansible_enp7s0.macaddress}}"
Полагаю, что нужно что-то такое "{{ ansible_interfaces | map('extract', ansible_facts) | selectattr('active') | selectattr('type','equalto','ether') | map(attribute='macaddress') | list }}"
Sergey
Какой смысл об этом в Хогвартсе объявлять? :-)
shuu
а тут судя по всему тащится просто как enp7s0
shuu
а версия у хогвартса какая?