Lamobot
можно этот форшмак регекспами сравнивать кодить в жинжу лол
Я просто даже обдумывать не хочу как лучше сделать :) Типа replace и проверять совпадает ли начальная строка с после реплейса. Сделать можно, но лучше сразу хорошо на питоне влепить.
i4l
а если лепить, можно не отдельным модулем?
i4l
просто командой трясти что ли
i4l
такое ощущение, что проще сук сразу модуль писать
Lamobot
https://docs.ansible.com/ansible/latest/dev_guide/developing_locally.html Скорее плагин
i4l
да-да, я уже смешарик
Кирилл
Добрый день Скажите плз, какой верный путь )) Есть десктопы на ubuntu Есть необходимость скачать и установить hp-plugin для этих десктопов (сканирование для HP мфу) Если делать руками, то нужно скачать бинарник с сайта, и потом его заинсталлировать Как правильно делать с точки зрения идемпотентность? Проверить, что целевого файла нет по определенному пути Если нет, то скачать и установить Если есть, не делать ничего и выйти Так?
Кирилл
get_url сам проверяет есть файл уже на месте или нет
представим себе как если бы был первый запуск get_url проверяет, пусто, скачивает затем происходит установка затем второй запуск, get_url проверяет, есть, не скачивает затем происходит установка
Кирилл
какой способ, модуль , не знаю что )) делает возможным запуск если выполняется условие такое то?
George
далее проверка - если есть - на выход, если нету - установка
Lamobot
делаешь проверку на наличие бинаря в системе - регистрируешь выхлоп
А если нужно будет обновить уже установленные?
George
Тогда переменную в vars, Сравнить версию, Если разные - переустановка
Lamobot
Тогда переменную в vars, Сравнить версию, Если разные - переустановка
На мой взгляд, в плейбуке проще задать версию или целиком url. И качать в файл с одинаковым именем вне зависимости от версии. Если сменилась чексумма - перекачать, и по changed статусу таски запустить установку. + можно ещё добавить проверку, а реально ли установилось в прошлый раз по бинарям итд. на всякий случай :)
i4l
установленный присутствует, проходит тест работоспособности, выдаёт версию -> что-то не так: перенакатываем (версия или пофиг что)
i4l
версию и наличие наверное в факты, потом смотреть можно будет где какие пирожки
Sergey
версию и наличие наверное в факты, потом смотреть можно будет где какие пирожки
/etc/ansible/facts.d - туда можно записать, получится некий хранимый стейт, который автомагически загружается.
Oleg
Ругается на самый верхний хост. Подскажите пож-та, что ему не нравится? версия питона? на клиенте установлены 2 и 3 версии.
Отделение Bereke Bank
Отделение Bereke Bank
а вообще кажется ему достаточно засунуть в переменную интерпритатора твой путь к третьему питону
i4l
у unarchive нет эквивалента unzip -c ?
енот
пожалуйста, помогите понять, как установить (в принципе, работает) и восстановить дамп в бд mariadb? при попытке это сделать через роль geerlingguy.mysql https://github.com/geerlingguy/ansible-role-mysql получается так https://pastebin.com/TaTmpMxt https://i.imgur.com/zTfzlf3.png вот мой плэйбук и переменные https://gist.github.com/chemax/06f37844720de0ee71beb422f1b35499
0xDEFACE
Всем привет, у кого получалось записать файл на микротик без костылей типо command/shell. Доспустим через net_put?
0xDEFACE
Почему command костыль?
command: "scp {{out_template}}{{name}}-l2tp-script.rsc {{ansible_user}}@{{inventory_hostname}}:/{{name}}-l2tp-script.rsc" мне кажется модуль заточенный под конретное действие способен лучше обрабатывать разные варианты ошибок и поведения в том числе консольных утилит и предоставлять дополнительную информацию в форматированном виде
Fire
Тогда напиши свой модуль, который работает с api mikrotika.
0xDEFACE
Тогда напиши свой модуль, который работает с api mikrotika.
у меня нет свободного времени на эту задачу, поэтому я задал именно тот вопрос, который задал.
Fire
Если до тебя никто этого не написал - значит этого никто не делал.
0xDEFACE
Если до тебя никто этого не написал - значит этого никто не делал.
в статейках я видел как грузят через net_put но у меня не получилосьб
Fire
Листинг file_set.yml - name: Set file to router hosts: 172.16.16.14 gather_facts: false tasks: - name: file upload net_put: src: ./spw_script protocol: sftp - name: File demonstate after routeros_command: commands: /file print register: file_after - name: debug print after debug: var=file_after.stdout_lines
0xDEFACE
FAILED! => {"changed": true, "destination": "/etc/ansible/playbooks/files/gateway_routeros_l2tp/GW_KHV_AKS-l2tp-script.rsc", "msg": "Exception received : 'NoneType' object has no attribute '_connect_uncached'"}
0xDEFACE
- name: Test copy net_put: src: "{{out_template}}{{name}}-l2tp-script.rsc"
0xDEFACE
независимо от выбора протокола sftp/scp
Fire
независимо от выбора протокола sftp/scp
https://github.com/ansible/ansible/issues/61568
0xDEFACE
https://github.com/ansible/ansible/issues/61568#issuecomment-530100861
0xDEFACE
я читал, там пишут что пофиксили в 2.9
0xDEFACE
ansible --version ansible 2.9.7
Fire
я читал, там пишут что пофиксили в 2.9
C таким playbook: --- - name: test mikrotik gather_facts: false tasks: - name: system command routeros_command: commands: /ip address print register: system_print - name: debug print debug: var=system_print.stdout_lines - name: file upload net_put: src: ./spw_script protocol: sftp - name: File demonstate after routeros_command: commands: /file print register: file_after - name: debug print after debug: var=file_after.stdout_lines hosts: 192.168.122.61 Всё ок: ansible-playbook ~/ansible/playbooks/desktop/321.yml PLAY [test mikrotik] **************************************************************************************************************************************************************************************** TASK [system command] *************************************************************************************************************************************************************************************** [DEPRECATION WARNING]: Distribution ubuntu 20.04 on host 192.168.122.61 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. ok: [192.168.122.61] TASK [debug print] ****************************************************************************************************************************************************************************************** ok: [192.168.122.61] => { "system_print.stdout_lines": [ [ "Flags: X - disabled, I - invalid, D - dynamic ", " # ADDRESS NETWORK INTERFACE ", " 0 192.168.1.1/24 192.168.1.0 ether1 ", " 1 X 192.168.122.5/24 192.168.122.0 ether1 ", " 2 D 192.168.122.61/24 192.168.122.0 ether2" ] ] } TASK [file upload] ****************************************************************************************************************************************************************************************** changed: [192.168.122.61] TASK [File demonstate after] ******************************************************************************************************************************************************************************** ok: [192.168.122.61] TASK [debug print after] ************************************************************************************************************************************************************************************ ok: [192.168.122.61] => { "file_after.stdout_lines": [ [ "# NAME TYPE SIZE CREATION-TIME ", " 0 skins directory aug/10/2020 05:13:06", " 1 spw_script file 16 sep/02/2020 00:51:31" ] ] } PLAY RECAP ************************************************************************************************************************************************************************************************** 192.168.122.61 : ok=5 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Fire
Включай verbose и давай выхлоп.
0xDEFACE
Включай verbose и давай выхлоп.
https://paste.centos.org/view/6c66a9a1
0xDEFACE
273 строка тот самый net_put
Fire
273 строка тот самый net_put
Точно указывал: ansible_connection: network_cli ansible_network_os: routeros ?
Fire
Должен быть такой выхлоп: TASK [File demonstate after] ******************************************************************************************************************************************************************************** task path: /home/mkiselev/ansible/playbooks/desktop/321.yml:15 <192.168.122.61> attempting to start connection <192.168.122.61> using connection plugin network_cli <192.168.122.61> found existing local domain socket, using it! <192.168.122.61> updating play_context for connection <192.168.122.61> <192.168.122.61> local domain socket path is /home/mkiselev/.ansible/pc/815d51c6e5 Using module file /usr/local/lib/python3.8/dist-packages/ansible/modules/network/routeros/routeros_command.py Pipelining is enabled. <192.168.122.61> ESTABLISH LOCAL CONNECTION FOR USER: mkiselev <192.168.122.61> EXEC /bin/sh -c '/usr/bin/python && sleep 0
0xDEFACE
[gateways:vars] 96 ansible_python_interpreter=/usr/bin/python3 97 ansible_network_os=routeros 98 ansible_connection=network_cli 99 ansible_network_os=routeros 100 ansible_user=ansible 101 ansible_port=22
0xDEFACE
- name: Check l2tp link existence 32 routeros_command: 33 commands: 34 - /import {{name}}-l2tp-script.rsc
0xDEFACE
эта задача выполняется
0xDEFACE
она бы не выполнилась без routeros network
Fire
Это я тупанул, не ту таску скинул.
Fire
А версия rOS какая?
Fire
Может у тебя фаерволом порт закрыт?
Fire
Я-то на чистой виртуалке проверял.
0xDEFACE
Это я тупанул, не ту таску скинул.
ну я через scp на этот же роутер заливаю
0xDEFACE
ros 6.47
Fire
Попробуй обновить ansible до 2.9.12
0xDEFACE
Попробуй обновить ansible до 2.9.12
Спасибо, сейчас попробую
0xDEFACE
Ну как?
Ещё не сделал, нужно все забекапить)
Fire
Ансибл?
0xDEFACE
Вмку
0xDEFACE
Всю
Fire
Через pip можно нужную версию ставить.
0xDEFACE
Я незнал
0xDEFACE
Думал из реп только
0xDEFACE
Тогда это проще
Vadim "Oxyd"
Добрый день Скажите плз, какой верный путь )) Есть десктопы на ubuntu Есть необходимость скачать и установить hp-plugin для этих десктопов (сканирование для HP мфу) Если делать руками, то нужно скачать бинарник с сайта, и потом его заинсталлировать Как правильно делать с точки зрения идемпотентность? Проверить, что целевого файла нет по определенному пути Если нет, то скачать и установить Если есть, не делать ничего и выйти Так?
Значит по поводу плагина... Там не совсем бинарник. Там баш скрипт, в конце которого архив из которого он всё разворачивает. Короче поставь это в какой-нить чрут, посмотри что и куда, в результате развернулось, ну а дальше эти файлы, если по феншую, можно просто зафигачить в пакет соответсвующего дистрибутива (deb, rpm etc) и штатно поставить пакетным менеджером. Я-бы так сделал.
Vadim "Oxyd"
@Dragonflybsd @tnt4brain Ту эта....
Vadim "Oxyd"
Могу spec под rpm дать, или pkgbuild для Арча.
У него не арч... У него-ж убунта на рабочих станциях. А для арча уже есть пакет в АУР (hplip-plugin), но мы начинаем уходить в жёсткий оффтоп.