Ruslan
Они его допилили наконец?
а в community версии плагин работает? Кто пользуется PyCharm для ansible подскажите, в нем есть аналог плагина "remote" в vscode? Чтобы можно было подключиться на удаленную тачку и с нее разрабатывать.
Lamobot
да все равно таже самая ошибка)
На ubuntu 20.04 работает. Если use не использовать.
Ruslan
У меня sysvinit
Lamobot
Там по умолчанию он. Скорее всего в этом проблема, судя по ошибке
Ruslan
Это я как раз понял)
Ждун
ansible.windows.win_command: 'powershell.exe -ExecutionPolicy ByPass -File C:{% raw %}\\{% endraw %}Scripts{% raw %}\\{% endraw %}extend-vm-due.ps1 -ComputerName "{{computer}}" -DueDate "{{due}}"'
Ждун
попробовал так не палит (
Sergey
У меня sysvinit
Debian на SysV? Ты чего-то недоговариваешь :-D
tutunak
Debian на SysV? Ты чего-то недоговариваешь :-D
заменил, чтоб жизнь медом не казалась
Ruslan
да это наследие, может в следующем году на systemd перейдем
Ждун
https://pastebin.ubuntu.com/p/gNYJvh9j68/
Ждун
я попробовал стандартный таск от win_shell и та же ошибка Get-AnsibleParam: Missing required argument: _raw_
Ждун
решил обновить ansible до последней версии то же самое (
Ждун
ansible-playbook 2.9.4, python 2.7
AlexShmel🐝
Привет. Подскажите почему ансибл не подхватывает нужную версию интерпретатора из конфига [defaults] inventory = ./hosts.yaml error_on_undefined_vars = True interpreter_python = auto ansible_python_interpreter = /usr/bin/python3 [ssh_connection] pipelining=True ansible-playbook ./pb-monitoring.yaml TASK [metric-collector : Run prometheus doker container] ********************************************************************************************************************************************************** fatal: [188.*****.162]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on logs.wewatt.cloud's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter, for example via `pip install docker` or `pip install docker-py` (Python 2.6). The error was: No module named docker"} А если передать нужный параметр через -e то работает отлично ansible-playbook ./pb-monitoring.yaml -e 'ansible_python_interpreter=/usr/bin/python3'
AlexShmel🐝
Привет. Подскажите почему ансибл не подхватывает нужную версию интерпретатора из конфига [defaults] inventory = ./hosts.yaml error_on_undefined_vars = True interpreter_python = auto ansible_python_interpreter = /usr/bin/python3 [ssh_connection] pipelining=True ansible-playbook ./pb-monitoring.yaml TASK [metric-collector : Run prometheus doker container] ********************************************************************************************************************************************************** fatal: [188.*****.162]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on logs.wewatt.cloud's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter, for example via `pip install docker` or `pip install docker-py` (Python 2.6). The error was: No module named docker"} А если передать нужный параметр через -e то работает отлично ansible-playbook ./pb-monitoring.yaml -e 'ansible_python_interpreter=/usr/bin/python3'
В первом варианте ансибл использует на таргете второй питон. а мне нужен третий
Lamobot
Привет. Подскажите почему ансибл не подхватывает нужную версию интерпретатора из конфига [defaults] inventory = ./hosts.yaml error_on_undefined_vars = True interpreter_python = auto ansible_python_interpreter = /usr/bin/python3 [ssh_connection] pipelining=True ansible-playbook ./pb-monitoring.yaml TASK [metric-collector : Run prometheus doker container] ********************************************************************************************************************************************************** fatal: [188.*****.162]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on logs.wewatt.cloud's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter, for example via `pip install docker` or `pip install docker-py` (Python 2.6). The error was: No module named docker"} А если передать нужный параметр через -e то работает отлично ansible-playbook ./pb-monitoring.yaml -e 'ansible_python_interpreter=/usr/bin/python3'
А где вы нашли опцию ansible_python_interpreter в ansible.cfg? Я там такой не вижу.
Lamobot
В плейбуке укажите
AlexShmel🐝
https://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html#using-python-3-on-the-managed-machines-with-commands-and-playbooks To explicitly configure a Python 3 interpreter, set the ansible_python_interpreter inventory variable at a group or host level to the location of a Python 3 interpreter, such as /usr/bin/python3. The default interpreter path may also be set in ansible.cfg.
AlexShmel🐝
may also be set in ansible.cfg.
AlexShmel🐝
я неправильно понял ?
Lamobot
я неправильно понял ?
https://docs.ansible.com/ansible/latest/reference_appendices/config.html#interpreter-python Опция в ansible.cfg - interpreter_python просто
Александр
ansible.windows.win_command: "C:\\Scripts\\extend-vm-due.ps1 -ComputerName \"{{computer}}\" -DueDate \"{{due}}\" >> C:\\Scripts\\ansible-task.log" fatal: [srv-mgm]: FAILED! => { "changed": false, "msg": "Get-AnsibleParam: Missing required argument: _raw_params" } ```
попробуй так: - name: Run remote Powershell script hosts: your_host become: yes become_method: runas become_user: your_user become_flags: logon_type=interactive logon_flags=with_profile vars: computer: 'blablabla' due: 'blablabla' tasks: - name: Run remote Powershell script win_command: powershell.exe -ExecutionPolicy ByPass -File C:\Scripts\extend-vm-due.ps1 -ComputerName {{ computer }} -DueDate {{ due }} если с переменными всё в порядке и пользователь имеет соответствующие привилегии в винде, то всё должно работать, иначе смотри переменные в плэйбуке, либо косяк в "Param" в самом пош-скрипте
Константин
День добрый, не получается экранировать символ «\» - name: Systemd | Run services command: cmd: "systemctl start {{ item.proc }}\\@{{ item.num_proc }}.service" with_items: "{{ systemd_procs }}" вывод: changed: [192.168.225.202] => (item={'proc': 'laravel-worker', 'num_proc': '{1..5}'}) => { "ansible_loop_var": "item", "changed": true, "cmd": [ "systemctl", "start", "laravel-worker@{1..5}.service" ], "delta": "0:00:00.004723", "end": "2020-11-17 07:47:41.491351"
Отделение Bereke Bank
Vladislav 👻
Я могу сказать как, но придет @tnt4brain и скажет, что не надо давать плохие советы, ибо тут башсибл...
Константин
Я могу сказать как, но придет @tnt4brain и скажет, что не надо давать плохие советы, ибо тут башсибл...
да я знаю, что башсибл есть модуль systemd, но мне нужно запустить не один экземляр, а несколько
Vladislav 👻
Ну циклы вы освоили, что мешает на модуль переписать?
Константин
хмхммм а ведь действительно можно же написать worker@1.service worker@2.service worker@3.service вместо worker\@{1..3}.service
Константин
что-то голова не варит до обеда, спасибо)
Ждун
попробуй так: - name: Run remote Powershell script hosts: your_host become: yes become_method: runas become_user: your_user become_flags: logon_type=interactive logon_flags=with_profile vars: computer: 'blablabla' due: 'blablabla' tasks: - name: Run remote Powershell script win_command: powershell.exe -ExecutionPolicy ByPass -File C:\Scripts\extend-vm-due.ps1 -ComputerName {{ computer }} -DueDate {{ due }} если с переменными всё в порядке и пользователь имеет соответствующие привилегии в винде, то всё должно работать, иначе смотри переменные в плэйбуке, либо косяк в "Param" в самом пош-скрипте
спасибо попробовал вписать все флаги и becomeы... даже стандартный пример из доки с такой же ошибкой все равно упал.... так что дело не в параметрах скрипта.... а вот попробовать добавить пользоватя в логон идея интересная. попробую конечно, хотя под этим пользователем даже без бекама работает win_copy
Александр
спасибо попробовал вписать все флаги и becomeы... даже стандартный пример из доки с такой же ошибкой все равно упал.... так что дело не в параметрах скрипта.... а вот попробовать добавить пользоватя в логон идея интересная. попробую конечно, хотя под этим пользователем даже без бекама работает win_copy
имхо, смотри всё-таки переменные и параметры, в т.ч. и сам пошскрипт, куда ты передаёшь эти параметры: -ComputerName {{ computer }} -DueDate {{ due }} у меня так работает часть деплоя, при которой с windows-билд-серверов пошскриптами с параметрами выполняется копирование билдов на тесты и препрод всё нормально исполняется при этом, запускается всё ансиблом с линуксового гитлаб-раннера но я пользую только дефолтные win-модули ансибла, т.е. просто win_command, win_shell и т.п., хотя это без разницы наверное ну и для проверки возьми другой какой-нибудь простой пошскрипт с параметрами и попробуй передать этому пошскрипту параметры через плэйбуку ансибла, но без переменных, а просто захардкодить
Александр
ещё можешь глянуть настройки powershell и winrm на хосте виндовом, где пытаешься запускать пошскрипт, может быть там запрет какой на remote-запуск скриптов, или ещё чего подобное возьми чистую виртуалку с виндой, настрой winrm для ансибла скриптом с гитхаба по-умолчанию и попробуй всё это на чистой винде с последним powershell
Ждун
- name: Run multi-lined shell commands ansible.windows.win_shell: | $value = Test-Path -Path C:\temp1 if ($value) { Remove-Item -Path C:\temp1 -Force } New-Item -Path C:\temp1 -ItemType Directory я и пишу что из доков что-то дефолтное с той же ошибкой падает
Ждун
но спасибо, дал много идей различных куда можно копать
Игорь
Подскажите, есть raw task вида: - name: install python2 on ubuntu 18.04 instances hosts: "*" gather_facts: false tasks: - name: run apt-get update and install python raw: "{{ item }}" loop: - sudo apt-get update - sudo apt-get -y install python become: true он фейлится с /usr/bin/python No such file or directory в чем может быть причина?
UglyKoyote
он же ругается - что бинарник питона не нашел по указанному пути
Lamobot
Подскажите, есть raw task вида: - name: install python2 on ubuntu 18.04 instances hosts: "*" gather_facts: false tasks: - name: run apt-get update and install python raw: "{{ item }}" loop: - sudo apt-get update - sudo apt-get -y install python become: true он фейлится с /usr/bin/python No such file or directory в чем может быть причина?
Зачем sudo? Я делаю на убунту вот так - name: "Install apt-transport-https" become: yes raw: "apt-get install --no-install-recommends -y apt-transport-https" - name: "apt-get update" become: yes raw: "apt-get update -y" - name: "Install python" become: yes raw: "apt-get install --no-install-recommends -y python3-simplejson"
Lamobot
Но это на минимальной серверной установке
Игорь
а там питон то есть? на целевой машине
нету естественно, я и пытаюсь запустить raw task для установки питона, как в докуменатции
Игорь
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/raw_module.html
Lamobot
для raw питон не нужен ;)
Для loop может нужен
Игорь
Для loop может нужен
loop тоже убрал
UglyKoyote
ну он походу жинжу и пытается отработать, а питона то нету))
Alex
ну самый просто способ просто засунуть в одну команду sudo apt-get update && sudo apt-get -y install python
Игорь
loop обрабатывается на управляющем хосте
Alex
а точно на этом таске фейлится?
Игорь
других тасок в плейбуке нет
UglyKoyote
у тебя gather_facts: false по той ссылке что скинул act gathering using gather_facts: no
UglyKoyote
а то ты ссылку скинул, а сделал по другому
Игорь
UglyKoyote
ты пробовал с no?
UglyKoyote
как в доке, ссылку на которую ты сам скинул
Игорь
попробовал на всякий случай, no luck
Lamobot
И ещё вопрос, а ансибл то вообще запускается? Может это ошибка на запускающей машине :)
UglyKoyote
ну тогда -vvv добавляй, и смотри что в выхлопе
UglyKoyote
магии не бывает
Alex
думаю нет смысла гадать. а лучше увидеть вывод с -vvv или -vvvvv
Grek 🇺🇦
А что за хост *? Это законно?
Игорь
все то же самое, в выводе с -vvv видно, что bash отдает ошибку
Grek 🇺🇦
все то же самое, в выводе с -vvv видно, что bash отдает ошибку
Кидай на пастбин плейбук и вывод, на слово тут уже не прокатит
Alex
закинь на какой нить pastebin
Игорь
<...> child for Connection(None) started <...> (unrecognized) bash: /usr/bin/python not found<...>
Игорь
а, понял, это митоген глючит
Grek 🇺🇦
risovach.ru.jpg (500×366)
Игорь
https://github.com/dw/mitogen/issues/266 Simply does not work currently with latest Mitogen release
Игорь
заработало с - hosts: all strategy: linear
Игорь
но явно не best practise
Sergey
а, понял, это митоген глючит
Бери митоген, говорили они. Он не глючит, говорили они. Он ускоряет, говорили они....