simplemice.eth
но если не найду лучше придется
ℭ𝔞𝔯𝔯𝔬𝔩
Я повешал на чатбота шлака, не в тележке будь помянут, вебхуки в awx, но обратный выхлоп не получаю
simplemice.eth
мне управляшка не нужна, мне просто нужны нотификейшен что таск выполнен или нет
simplemice.eth
вот да)
MRY
Вот такой вопрос. У меня есть разные группы хостов и для этих хостов мне нужны разные факты. У меня есть inventory/group_vars/windwos/vars.yml файл который описывает общие переменные дял всех windows хостов, но предположим что [Windows:children] windwos2012 или webservers и мемберы этих подгрупп должны получать разные переменные, вопрос вот в чем: для указания я могу использовать в inventory/hosts параметры [webservers:vars] а можно ли тожесамое сделать както в group_vars ? созданием поддиректорий вроде group_vars/windows/webservers/vars.yml потому что засирать hosts файл десятками а то и сотнями переменных не хочется
Dr. L.S.Dee
Для GLPI был модуль. Может, и для ансибла найдётся. Или длинным путём: запоротый таск - событие мониторинга - тикет - бот сигналит.
Dr. L.S.Dee
А, можно и сам модуль расковырять да собезьянничать, наверное.
simplemice.eth
тоже нашел... читаю вот
MRY
Программирование на YAMLе?
Уже нагуглил https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html
Timur
Уже нагуглил https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html
Да, такое есть, но это нужно использовать аккуратно и только по назначению
Timur
Ансибл - это для декларативного подхода
Timur
Если хотите использовать процедурный, лучше сразу брать какой-то скриптовый язык (тот же PowerShell) и фигачить сразу на нем, не заморачиваясь принципами идемпотентности прочим.
Asgoret
всем привет. Кто-нибудь встречался с ошибкой error: exactly one FILENAME is allowed в модуле command? Таск: - name: Patch and enable new config master-config command: oc ex config patch /etc/origin/master/master-config.yaml.prepatch -p "$(cat "{{ item }}")" > /etc/origin/master/master-config.yaml loop: - master-config.patch
Stanislav
Для такой конструкции используйте shell
Stanislav
Смотрите доку на модуль command
Timur
Да, с перенаправлением вывода однозначно shell
Asgoret
taksa
Спасибо terminator , что принял меня во все группы сразу
Артём
добрый день. подскажите как сделать так чтобы результирующие исполняемые скрипты на питоне не удалялись.
Артём
есть playbook
Артём
--- - hosts: c3750G tasks: - name: run show vlan on remote devices cli_command: command: show vlan register: vlan - debug: var=vlan.stdout_lines
Артём
для соединения использую
Артём
ansible_connection=network_cli ansible_network_os=ios
Артём
в конфигурации устанавливаю keep_remote_files = True
Артём
но конечного исполняемого скрипта найти нигде не могу.
Артём
читал доку по отладке https://docs.ansible.com/ansible/latest/network/user_guide/network_debug_troubleshooting.html, но к сожалению особо не помогла в решении данной задачи
Артём
переформулирую вопрос. Можно каким либо образом отлаживать playbook сетевого оборудования в pycharm?
Sergey
Да и то- а как, ты думаешь, это всё выглядит? Просто модуль питонячий.
Sergey
Какая версия ансибла у тебя?
Артём
2.7.6
Sergey
https://github.com/ansible/ansible/blob/v2.7.6/lib/ansible/modules/network/cli/cli_command.py
Sergey
Вот твой скрипт.
Sergey
Запускается локально, соответственно, никуда не копируется.
Артём
я думаю на контролере перед началом управления оборудованием создается финальный скрипт, который и управляет оборудованием. Вот его я и хотел бы подебажить.
Sergey
Нет, модель исполнения другая. Ансибл не является компилятором.
Sergey
В нормальных системах на удалённом хосте поднимается интерпретатор Python, которому через pipe приезжает модуль в zip + аргументы его.
Sergey
В ненормальных - модуль исполняется на контроллере.
Артём
конечная цель не отладить модуль cli_command, а как работает network_cli на примере ios.
Артём
чтобы на его примере слегка напильником адаптировать его для другого похожего оборудования.
Sergey
Эммммм. Тебе модуль другой нужен.
Sergey
https://github.com/ansible/ansible/blob/v2.7.6/lib/ansible/modules/network/ios/ios_command.py
Артём
как раз второй вариант. ненормальный модуль интересует.
Sergey
как раз второй вариант. ненормальный модуль интересует.
Вот все ненормальные модули работают локально, на контроллере.
Артём
хочу посмотреть результирующий код.
Sergey
Что значит "результирующий код"? Это и есть код, который исполняется. Ansible - не компилятор вообще-то.
Timur
хочу посмотреть результирующий код.
Код модуля и есть результирующий
George
Он же может паковать код в блоб и выполнять на удаленной машине
Sergey
Модуль жмётся в zip вместе с аргументами, поотом швыряется через ssh удалённому Python-интерпретатору.
George
Достаточно только немного магии, чтобы он по ходу зиплвания поменялся
Артём
перед началом выполнения playbook в котором описан cli_command. он создает соединение через плагин network_cli.
Sergey
Вот доклад
Артём
мне интересно как он создает соединение с оборудование через плагин network_cli когда я указываю конкретную OS.
Артём
чтобы посмотрев как механизм работает, создать что то аналогичное для своего оборудования. А самое главное в ходе отладки плагинов подебажить.
Sergey
Судя по коду, если хочется грязных подкапотных подробностей, достаточно -vvvvv написать как параметр для ansible-playbook.
Артём
https://github.com/ansible/ansible/blob/v2.7.6/lib/ansible/plugins/connection/network_cli.py
я смотрел этот код. скажу больше. в плагинах cliconf и terminal лежат плагины для os.
Артём
но в нем я только нашел необходимые используемые плагины.
Sergey
этого мало. только debug во ansible.cfg дал результат.
А ты какой результат хочешь получить вообще? В Ansible есть поддержка для своих custom-плагинов и модулей прямо из коробки. Рядом с roles кладёшь library - и опаньки, если плагин/модуль можно загрузить вообще [читай - если ты соблюдал конвенции Ansible при написании кода], то он будет загружен.
Sergey
И более того - вызван.
Артём
А ты какой результат хочешь получить вообще? В Ansible есть поддержка для своих custom-плагинов и модулей прямо из коробки. Рядом с roles кладёшь library - и опаньки, если плагин/модуль можно загрузить вообще [читай - если ты соблюдал конвенции Ansible при написании кода], то он будет загружен.
я хочу пошагово отладить свои плагины в дебагере взаимодействуя в реальном времени с сетевым оборудованием. Я взял стандартные плагины cliconf и terminal для ios. поместил в свою lib и переименовал их в cisco. в inventory указал для хоста ansible_network_os=cisco. взаимодействие заработало.
Артём
а хочу я в дебаге пошагово их отладить и посмотреть как они работают.
Артём
либо в pycharm либо в pdb. неважно.
Артём
Что значит "результирующий код"? Это и есть код, который исполняется. Ansible - не компилятор вообще-то.
потому я и подумал что в результате работы ansible-plybook есть окончательный собранный скрипт который можно подебажить
Timur
https://docs.ansible.com/ansible/latest/dev_guide/debugging.html
Артём
https://docs.ansible.com/ansible/latest/dev_guide/debugging.html
это отладка модуля. я говорю про плагины для соединения с сетевым оборудованием.
Timur
Там обычный ssh плагин используется, емнип