Alexandr
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% тасков?
Egor
Alex
нет
Alex
файла изначально нет, по крайней мере в стандартном образе GCP
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
Alex
нет именно файла /usr/bin/python
Alex
ну или симлинка
Sergey
Alex
и как она отвечает на мой вопрос? :)
Sergey
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
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
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
kevit
строчка 1 ответ на ваш вопрос
kevit
фильте баг
kevit
но в целом конечно навеселимся мы с ансиблом с этой миграцией
kevit
прибить чтоли ansible_python_interpreter: /usr/bin/python3 везде и посмотреть что будет
niko
//usr/bin/python нет у тя
Alex
niko
не очень вовремя я да
Alex
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
Alex
Sergei
само собой!
Sergei
https://paste.sh/96hjOicd#gFwuyrykRfU7Wg0oWPHddM82
Lamobot
Timur
Timur
Вот
Timur
'mysql_import_dump' is undefined
Sergei
лол, да. спасибо
Alex
kevit
Timur
Sergey
а тебе в кайф ту же задачу 50 раз переделывать?
Sergey
баш не следит за состояниями
ты вот выполнишь команду - тебе скажут ок, даже если эта задача была выполнена по третьему кругу императивно
ансибл - инструмент декларативного описания инфраструктуры
и на баше 500 узлов с шаблонизацией как то неправильно, ты так не думаешь?
Sergey
на 500 узлов с разными версиями софта, с разным софтом по группам, вперед)
Sergey
затем что админу средней руки не очень удобно руками управлять 30 юзерами
Sergey
мониторинг то у админа средней руки как раскатывается на всех юзверей?
Ivan
Чтобы развиваться. Ты же сам видишь, это умение востребовано
Sergey
Lamobot
Степерь автоматизации каждый определяет для себя сам.
Никто не мешает даже без скриптов команды в консольке вбивать, и гит не нужен, и пальцы разминаешь, и память тренируешь помня все команды и их ключи :)))
Sergey
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