Ansible: module_stdout: "/bin/sh: 1: /usr/bin/python: ์ฐพ์„ ์ˆ˜ ์—†์Œ\r\n",

์— ๋งŒ๋“  2016๋…„ 12์›” 21์ผ  ยท  19์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ansible/ansible

๊ฐ€๋Šฅ -m ping -u ์šฐ๋ถ„ํˆฌ us-west-2a
35.166.197.222 | ์‹คํŒจํ•œ! => {
"๋ณ€๊ฒฝ๋œ": ๊ฑฐ์ง“,
"์‹คํŒจ": ์‚ฌ์‹ค,
"module_stderr": "35.166.197.222์— ๋Œ€ํ•œ ๊ณต์œ  ์—ฐ๊ฒฐ์ด ๋‹ซํ˜”์Šต๋‹ˆ๋‹ค.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: ์ฐพ์„ ์ˆ˜ ์—†์Œ\r\n",
"msg": "๋ชจ๋“ˆ ์˜ค๋ฅ˜"
}

affects_2.3 needs_info needs_template

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์ผ์—์„œ ansible_python_interpreter=/usr/bin/python3 ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ชจ๋“  19 ๋Œ“๊ธ€

๋ฌธ์ œ ํ…œํ”Œ๋ฆฟ์„ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์œ ์šฉํ•œ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ python3์ด ์„ค์น˜๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ Ubuntu 16+ ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ „์ฒด ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ ์—†์ด๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

AWS์˜ ์ตœ์‹  ์ด๋ฏธ์ง€์—๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Python์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ์ด๊ฒƒ์„ ์‚ฌ์ „ ์ž‘์—…์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  pre_tasks:

    - name: Refresh apt cache
      become: no
      local_action: shell ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 {{ inventory_hostname }} sudo apt-get update

    - name: Install Python-apt to pull in Python
      become: no
      local_action: shell ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 {{ inventory_hostname }} sudo apt-get install --no-install-recommends --assume-yes python-apt

AMI๊ฐ€ Ansible๊ณผ ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ๋‚ด ์ž‘์—…์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Ubuntu Xenial์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Python3์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉฐ /usr/bin/python3 ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(ํ™•์‹คํ•˜์ง€๋Š” ์•Š์ง€๋งŒ).

์ด ๋‹ต๋ณ€์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. http://stackoverflow.com/questions/32429259/ansible-fails-with-bin-sh-1-usr-bin-python-not-found

์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์œ„ํ•ด ํŒฉํŠธ ์ˆ˜์ง‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ๊ฒฝ๋กœ๋Š” ๋Ÿฐํƒ€์ž„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
-e 'ansible_python_interpreter=/usr/local/bin/python' ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ.

๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ฒฝ๋กœ๋ฅผ ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์— ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๊นŒ?

์—†์œผ๋ฉด ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์ผ์—์„œ ansible_python_interpreter=/usr/bin/python3 ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

@guruprasad85 ์ด ๋ฌธ์ œ๋Š” ๊ท€ํ•˜์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ตํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ด‡ ๋„์›€๋ง์„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

@guruprasad85 ์•ˆ๋…•ํ•˜์„ธ์š”! ์‹œ๊ฐ„์„ ๋‚ด์–ด ์ด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ท€ํ•˜์˜ ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์กฐ๊ธˆ ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ ์œ ํ˜•
  • ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „
  • ๊ตฌ์„ฑ ์š”์†Œ ์ด๋ฆ„

์ด ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์„ค์ •ํ•˜์„ธ์š”.
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md

๋ด‡ ๋„์›€๋ง์„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

python2๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

- name: dependency provisioning
  hosts: all
  become: yes
  become_method: sudo
  gather_facts: false
  tasks:
    - name: install python2
      raw: sudo apt-get -y install python-simplejson

๋” ๋งŽ์€ ์ •๋ณด๋Š” ์—ฌ๊ธฐ

@guruprasad85 ์ด ๋ฌธ์ œ๋Š” ๊ท€ํ•˜์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ตํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ด‡ ๋„์›€๋ง์„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

์œ„์˜ ์„ค๋ช…์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ฝ๊ธฐ:

http://docs.ansible.com/ansible/faq.html#how -do-i-handle-python-pathing-not-have-a-python-2-x-in-usr-bin-python-on- ์›๊ฒฉ ๊ธฐ๊ณ„

์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ IRC ๋˜๋Š” ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค.

_Gathering Facts_๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ฑ…์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

- hosts: anything
  gather_facts: False

@bcoca @sivel ์žฌ๋ฐฉ๋ฌธ ๊ณ„ํš์€ ์—†๋‚˜์š”? /usr/bin/python ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ Ansible์ด ์ตœ์†Œํ•œ /usr/bin/python3 (๋˜๋Š” ์ ์ ˆํ•œ ๊ฒฝ์šฐ /usr/bin/python /usr/bin/python2 )๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
@SpamapS ๋Š” AWS์˜ ๊ณต์‹ Ubuntu AMI๊ฐ€ /usr/bin/python3 ์™€ ํ•จ๊ป˜ ์ œ๊ณต ๋œ๋‹ค๊ณ  ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ubuntu@ip-172-16-178-247:~$ uname -a
Linux ip-172-16-178-247 4.4.0-1065-aws #75-Ubuntu SMP Fri Aug 10 11:14:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ip-172-16-178-247:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:    16.04
Codename:   xenial
ubuntu@ip-172-16-178-247:~$ ls -al /usr/bin |grep python
lrwxrwxrwx  1 root   root          26 May 18  2016 dh_pypy -> ../share/dh-python/dh_pypy
lrwxrwxrwx  1 root   root          29 May 18  2016 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx  1 root   root          23 Nov 28  2017 pdb3.5 -> ../lib/python3.5/pdb.py
lrwxrwxrwx  1 root   root          31 Mar 23  2016 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx  1 root   root          26 May 18  2016 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx  1 root   root           9 Mar 23  2016 python3 -> python3.5
-rwxr-xr-x  2 root   root     4464400 Nov 28  2017 python3.5
-rwxr-xr-x  2 root   root     4464400 Nov 28  2017 python3.5m
-rwxr-xr-x  1 root   root         976 Nov 27  2015 python3-jsondiff
-rwxr-xr-x  1 root   root        3662 Nov 27  2015 python3-jsonpatch
-rwxr-xr-x  1 root   root        1342 Oct 24  2015 python3-jsonpointer
lrwxrwxrwx  1 root   root          10 Mar 23  2016 python3m -> python3.5m

ํ›„๋Œ€๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์€ Ansible์˜ ์•Œ๋ ค์ง„ ๊ฐœ์„  ๊ธฐํšŒ์ด๋ฉฐ >=2.8์— ๋Œ€ํ•œ ๋กœ๋“œ๋งต์— ํฌํ•จํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ ค ์ค‘์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ์šฐ์—๋Š”(ansible 2.7.0):
๋งˆ์ด์•„์ดํ”ผ | ์‹คํŒจํ•œ! => {
"๋ณ€๊ฒฝ๋œ": ๊ฑฐ์ง“,
"module_stderr": "",
"module_stdout": "/bin/sh: /usr/bin/python: ํ•ด๋‹น ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค\r\n",
"msg": "MODULE FAILURE\n์ •ํ™•ํ•œ ์˜ค๋ฅ˜๋Š” stdout/stderr์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.",
"rc": 127
}

$ll |grep ํŒŒ์ด์ฌ
lrwxrwxrwx 1 ๋ฃจํŠธ ๋ฃจํŠธ 32 6์›” 5์ผ 15:44 kylinpy -> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx 1 ๋ฃจํŠธ ๋ฃจํŠธ 2016๋…„ 11์›” 16์ผ python -> /usr/local/python2.7/bin/python2.7
lrwxrwxrwx 1 ๋ฃจํŠธ ๋ฃจํŠธ 2016๋…„ 9์›” 8์ผ python2 -> python
-rwxr-xr-x 1 ๋ฃจํŠธ ๋ฃจํŠธ 4864 2014๋…„ 5์›” 29์ผ python2.6
-rwxr-xr-x 1 ๋ฃจํŠธ ๋ฃจํŠธ 1418 2014๋…„ 5์›” 29์ผ python2.6-config

์†Œํ”„ํŠธ๋งํฌ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด ๊ฒฝ์šฐ์—๋Š”(ansible 2.7.0):
๋งˆ์ด์•„์ดํ”ผ | ์‹คํŒจํ•œ! => {
"๋ณ€๊ฒฝ๋œ": ๊ฑฐ์ง“,
"module_stderr": "",
"module_stdout": "/bin/sh: /usr/bin/python: ํ•ด๋‹น ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค\r\n",
"msg": "MODULE FAILURE\n์ •ํ™•ํ•œ ์˜ค๋ฅ˜๋Š” stdout/stderr์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.",
"rc": 127
}

$ll |grep ํŒŒ์ด์ฌ
lrwxrwxrwx 1 ๋ฃจํŠธ ๋ฃจํŠธ 32 6์›” 5์ผ 15:44 kylinpy -> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx 1 ๋ฃจํŠธ ๋ฃจํŠธ 2016๋…„ 11์›” 16์ผ python -> /usr/local/python2.7/bin/python2.7
lrwxrwxrwx 1 ๋ฃจํŠธ ๋ฃจํŠธ 2016๋…„ 9์›” 8์ผ python2 -> python
-rwxr-xr-x 1 ๋ฃจํŠธ ๋ฃจํŠธ 4864 2014๋…„ 5์›” 29์ผ python2.6
-rwxr-xr-x 1 ๋ฃจํŠธ ๋ฃจํŠธ 1418 2014๋…„ 5์›” 29์ผ python2.6-config

์†Œํ”„ํŠธ๋งํฌ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ž˜๋ชป์ž…๋‹ˆ๋‹ค.์†Œํ”„ํŠธ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœ : ln -s /usr/bin/python3 /usr/bin/python์ด ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์ผ์—์„œ ansible_python_interpreter=/usr/bin/python3 ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ pyenv pyenv global <version> ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ shimํ•ด์•ผํ•˜์ง€๋งŒ Ansible์€ python ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ /usr/bin/python ๋ฅผ ๋ณด๋„๋ก ํ•˜๋“œ ์ฝ”๋”ฉ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ฒƒ์ด ๋ฐ”๋€” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ฒƒ์ด ๋ฐ”๋€” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ „ํ˜€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

/usr/bin/python ์ด์™ธ์˜ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ansible_python_interpreter ๋ฅผ ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

pyenv ๊ฒฝ์šฐ shim( which python3.6 ) ๋˜๋Š” ์‹ค์ œ ๋ฐ”์ด๋„ˆ๋ฆฌ( pyenv which python3.6 )์— ๋Œ€ํ•œ ๊ฒฝ๋กœ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ƒํ™ฉ์—์„œ ํ•˜๋“œ ์ฝ”๋”ฉํ•ด์•ผ ํ•˜๋ฉฐ ์‰˜ ํ™•์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰