Alex
подскажите, а как такое может быть. Запускаю плейбук на RHEL8, отрабатывает ~80%, потом один из тасков (модуль uri) фейлится с ошибкой fatal: [app_master]: FAILED! => changed=false attempts: 2 module_stderr: |- /bin/sh: /usr/bin/python: No such file or directory module_stdout: '' msg: |- The module failed to execute correctly, you probably need to set the interpreter. See stdout/stderr for the exact error rc: 127
Alex
/usr/bin/python действительно нет на машине, но как тогда отработали 80% тасков?
Alex
нет
Alex
файла изначально нет, по крайней мере в стандартном образе GCP
Sergey
/usr/bin/python действительно нет на машине, но как тогда отработали 80% тасков?
https://developers.redhat.com/blog/2019/05/07/what-no-python-in-red-hat-enterprise-linux-8/
Alex
сам питон есть
Alex
# whereis python python: /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python2.7 /usr/lib/python3.6 /usr/lib/python2.7 /usr/lib64/python3.6 /usr/lib64/python2.7 /usr/local/lib/python3.6 /usr/include/python3.6m /usr/include/python2.7 /usr/share/man/man1/python.1.gz
Sergey
сам питон есть
ну ты уж определись, есть или нет
Alex
нет именно файла /usr/bin/python
Alex
ну или симлинка
Sergey
нет именно файла /usr/bin/python
дык прочитай жи статью
Alex
и как она отвечает на мой вопрос? :)
Alex
то ли я не вижу, то ли лыжи не едут
Egor
и как она отвечает на мой вопрос? :)
Эм... TL;DR Of course we have Python! You just need to specify whether you want Python 3 or 2 as we didn’t want to set a default. Give yum install python3 and/or yum install python2 a try
Alex
еще раз мой вопрос
Alex
как при этом отработало 80% тасков
Alex
и почему фейлится именно на uri. Он какой то особенный?
Alex
# rpm -qa | grep python3 | wc -l 57 # rpm -qa | grep python2 | wc -l 15 в системе установленны обе версии
Sergey
еще раз мой вопрос
Ты просишь лечить зубы по фотографии. Это норм вообще? У тебя система есть, логи, что ещё надо дл ядиагностики? Более-менее догадка в духе "пальцем в небо": если запускал Ансибл из третьего питона, кстати - он будет использовать третий. Всё остальное ты лучше кого бы то ни было можешь узнать сам - логи посмотреть, запустить Ансибл с ключами -vvvv, вот это вот всё.
Alex
ансибл запускается из под 2го питона
Sergey
Тогда логи - твои други.
Timur
Без разницы какой питон на машине с ансиблом
Timur
На таргете будет использоваться тот питон, который является дефолтным, если принудительно не указать иное
Alex
я так и думал
Alex
но тогда не понятно, почему 80% отработало нормально
Timur
В случае проблем ряда модулей с третьим питоном на таргете можно попробовать указать ансиблу на третий питон: ansible_python_interpreter: /usr/bin/python3
Alex
fatal: [app_master]: FAILED! => changed=false attempts: 2 module_stderr: |- OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /home/alex/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: auto-mux: Trying existing master debug2: fd 3 setting O_NONBLOCK debug2: mux_client_hello_exchange: master version 4 debug3: mux_client_forwards: request forwardings: 0 local, 0 remote debug3: mux_client_request_session: entering debug3: mux_client_request_alive: entering debug3: mux_client_request_alive: done pid = 23158 debug3: mux_client_request_session: session request sent debug1: mux_client_request_session: master session id: 2 /bin/sh: /usr/bin/python: No such file or directory debug3: mux_client_read_packet: read header failed: Broken pipe debug2: Received exit status from master 127 module_stdout: '' msg: |- The module failed to execute correctly, you probably need to set the interpreter. See stdout/stderr for the exact error rc: 127 не вижу ничего полезного. Или не туда смотрю?
Timur
Код плейбука/роли можно увидеть?
Alex
ну там очень большой. Конкретно фейлится этот таск - name: Check JFMC HA topology health uri: url: http://localhost:8046/router/api/v1/topology/health method: GET register: ha_topology_health_result until: ha_topology_health_result.status == 200 retries: 7 delay: 10
Timur
ну там очень большой. Конкретно фейлится этот таск - name: Check JFMC HA topology health uri: url: http://localhost:8046/router/api/v1/topology/health method: GET register: ha_topology_health_result until: ha_topology_health_result.status == 200 retries: 7 delay: 10
По одной таске вам ответили. Вы спрашиваете: а почему остальные отработали? А откуда мы знаем - почему остальные отработали, если вы их показывать не хотите? Ну, не хотите как хотите. Ждите телепатов тогда
Alex
там обычные таски, например отработала эта - name: Download JFMC bundle v.{{ jfmc_version }} become: yes get_url: url: "{{ jfmc_bundle_url }}" dest: "{{ jfmc_installer_dir }}/{{ jfmc_installer_type }}" url_username: "{{ jfinsttest_username }}" url_password: "{{ jfinsttest_password }}" mode: 0755 timeout: 300 register: download_jfmc_bundle_result until: download_jfmc_bundle_result is succeeded retries: 3 delay: 20 ignore_errors: yes
kevit
строчка 1 ответ на ваш вопрос
kevit
фильте баг
kevit
но в целом конечно навеселимся мы с ансиблом с этой миграцией
kevit
прибить чтоли ansible_python_interpreter: /usr/bin/python3 везде и посмотреть что будет
niko
//usr/bin/python нет у тя
Alex
//usr/bin/python нет у тя
спасибо КЭП :)
niko
не очень вовремя я да
Alex
https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/net_tools/basics/uri.py
я насколько помню, то в 2.8 вроде завезли умный поиск интерпритатора
Alex
и по идее таких косяков наоборот не должно быть
Alex
https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html я про это
kevit
достаточно просто узнать что же именно там происходит
kevit
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook
kevit
идете в .ansible/tmp/ansible-tmp-
kevit
на сервере
kevit
находите uri.py
kevit
запускаете uri.py explode
kevit
и там можно посмотреть что этот умный поиск наискал
Alex
у меня 2.7, так что по идее мне это не грозит
kevit
но что-то из моего опыта с ансиблом мне подсказывает что прибить интерпретатор куда эффективнее
Alex
да это понятно, мне просто было не понятно такое поведение
Sergei
братишки, подсобите плиз, не пойму где ошибка when: database_created.changed and mysql_dump_dir is defined and mysql_import_dump|bool
Sergei
само собой!
Sergei
https://paste.sh/96hjOicd#gFwuyrykRfU7Wg0oWPHddM82
Timur
я насколько помню, то в 2.8 вроде завезли умный поиск интерпритатора
Это есть, да. Но в некоторых модулях есть хардкод на интерпретатор. И это не срабатывает. Поэтому помогает только переменная ansible_python_interpreter
Timur
https://paste.sh/96hjOicd#gFwuyrykRfU7Wg0oWPHddM82
Там же все прямым текстом сказано
Timur
Вот
Timur
'mysql_import_dump' is undefined
Sergei
лол, да. спасибо
Sergey
а тебе в кайф ту же задачу 50 раз переделывать?
Sergey
баш не следит за состояниями ты вот выполнишь команду - тебе скажут ок, даже если эта задача была выполнена по третьему кругу императивно ансибл - инструмент декларативного описания инфраструктуры и на баше 500 узлов с шаблонизацией как то неправильно, ты так не думаешь?
Sergey
на 500 узлов с разными версиями софта, с разным софтом по группам, вперед)
Sergey
затем что админу средней руки не очень удобно руками управлять 30 юзерами
Sergey
мониторинг то у админа средней руки как раскатывается на всех юзверей?
Ivan
Чтобы развиваться. Ты же сам видишь, это умение востребовано
Lamobot
Степерь автоматизации каждый определяет для себя сам. Никто не мешает даже без скриптов команды в консольке вбивать, и гит не нужен, и пальцы разминаешь, и память тренируешь помня все команды и их ключи :)))
Oleg
Нид хелп! ````- shell: cat text.txt register: cat_results - template: dest: "{{ item.dest }}" src: "{{ item.src }}" with_items: - { src: 'report.j2', dest: 'report' } delegate_to: localhost```` jinja файл таков ````{% for host in groups['reachable'] %} {{ cat_results.stdout }} {% endfor %}```` но по факту,например,когда я приминяю джобу к 2 сервакам, то информация в файле report на выходу просто задваивается по одному из серваков, а не по каждому из них. В чем трабл?
Timur
- shell: cat text.txt register: cat_results
Timur