i4l
а если лепить, можно не отдельным модулем?
i4l
просто командой трясти что ли
i4l
такое ощущение, что проще сук сразу модуль писать
Lamobot
https://docs.ansible.com/ansible/latest/dev_guide/developing_locally.html
Скорее плагин
i4l
да-да, я уже смешарик
Кирилл
Добрый день
Скажите плз, какой верный путь ))
Есть десктопы на ubuntu
Есть необходимость скачать и установить hp-plugin для этих десктопов (сканирование для HP мфу)
Если делать руками, то нужно скачать бинарник с сайта, и потом его заинсталлировать
Как правильно делать с точки зрения идемпотентность?
Проверить, что целевого файла нет по определенному пути
Если нет, то скачать и установить
Если есть, не делать ничего и выйти
Так?
Dan
Кирилл
какой способ, модуль , не знаю что )) делает возможным запуск если выполняется условие такое то?
Dan
George
George
далее проверка - если есть - на выход, если нету - установка
Lamobot
George
Тогда переменную в vars,
Сравнить версию,
Если разные - переустановка
Lamobot
Тогда переменную в vars,
Сравнить версию,
Если разные - переустановка
На мой взгляд, в плейбуке проще задать версию или целиком url. И качать в файл с одинаковым именем вне зависимости от версии. Если сменилась чексумма - перекачать, и по changed статусу таски запустить установку.
+ можно ещё добавить проверку, а реально ли установилось в прошлый раз по бинарям итд. на всякий случай :)
George
Кирилл
Кирилл
i4l
установленный присутствует, проходит тест работоспособности, выдаёт версию -> что-то не так: перенакатываем (версия или пофиг что)
i4l
версию и наличие наверное в факты, потом смотреть можно будет где какие пирожки
Oleg
Ругается на самый верхний хост. Подскажите пож-та, что ему не нравится? версия питона? на клиенте установлены 2 и 3 версии.
Отделение Bereke Bank
Отделение Bereke Bank
Oleg
Отделение Bereke Bank
а вообще кажется ему достаточно засунуть в переменную интерпритатора твой путь к третьему питону
Alex
Oleg
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?
Fire
Fire
0xDEFACE
Почему command костыль?
command: "scp {{out_template}}{{name}}-l2tp-script.rsc {{ansible_user}}@{{inventory_hostname}}:/{{name}}-l2tp-script.rsc"
мне кажется модуль заточенный под конретное действие способен лучше обрабатывать разные варианты ошибок и поведения в том числе консольных утилит и предоставлять дополнительную информацию в форматированном виде
Fire
Тогда напиши свой модуль, который работает с api mikrotika.
Fire
Если до тебя никто этого не написал - значит этого никто не делал.
Fire
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
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
273 строка тот самый net_put
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
ros 6.47
Fire
Попробуй обновить ansible до 2.9.12
0xDEFACE
Fire
0xDEFACE
Ну как?
Ещё не сделал, нужно все забекапить)
Fire
Ансибл?
0xDEFACE
Вмку
0xDEFACE
Всю
Fire
Через pip можно нужную версию ставить.
0xDEFACE
Я незнал
0xDEFACE
Думал из реп только
0xDEFACE
Тогда это проще
Vadim "Oxyd"
Добрый день
Скажите плз, какой верный путь ))
Есть десктопы на ubuntu
Есть необходимость скачать и установить hp-plugin для этих десктопов (сканирование для HP мфу)
Если делать руками, то нужно скачать бинарник с сайта, и потом его заинсталлировать
Как правильно делать с точки зрения идемпотентность?
Проверить, что целевого файла нет по определенному пути
Если нет, то скачать и установить
Если есть, не делать ничего и выйти
Так?
Значит по поводу плагина... Там не совсем бинарник. Там баш скрипт, в конце которого архив из которого он всё разворачивает. Короче поставь это в какой-нить чрут, посмотри что и куда, в результате развернулось, ну а дальше эти файлы, если по феншую, можно просто зафигачить в пакет соответсвующего дистрибутива (deb, rpm etc) и штатно поставить пакетным менеджером. Я-бы так сделал.
Fire
Vadim "Oxyd"
@Dragonflybsd @tnt4brain Ту эта....
Fire