<p>ansibleがbotoを芋぀けるこずができたせんこのモゞュヌルに必芁なboto</p>

䜜成日 2016幎03月17日  Â·  32コメント  Â·  ゜ヌス: ansible/ansible

"msg": "boto required for this module"は、ロゞックがあたりにも倚くの堎所で壊れおいるように芋えるため、ansibleでのすべおのawsサポヌトを圹に立たなくしおいるようです。

local_actionを介しお、たたは盎接実行しようずしお、私がチェックした堎合でも、これはどちらの堎合も壊れおいたす

- hosts:
  - localhost

  tasks:
    - pip:
        name: boto
    - name: Provision Krypton (kr)
      local_action: ec2
        key_name=kr
        instance_type=m4.4xlarge
        image=ami-c109e8aa
        wait=yes
        group=webserver
        count=3
        vpc_subnet_id="{{ aws_vpc }}"
        assign_public_ip=yes

これはOSXマシンで発生しおおり、botoがむンストヌルされおいるこずを確認したした。

Python 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto

プレむブック自䜓からわかるように、タヌゲットマシンにbotoもむンポヌトされたす。たた、local_actionを䜿甚せずにec2モゞュヌルを盎接呌び出すず、同じ゚ラヌが発生したす。

which python
/usr/local/bin/python

最も参考になるコメント

@stevenscg 、ただ私のむンベントリファむルでこれを䜿っお働いおいたす

[localhost]
localhost ansible_connection=local ansible_python_interpreter=python

それがあなたのために䜕かをするかどうか私に知らせおください

党おのコメント32件

リスト情報

こんにちは

Ansibleに関心をお寄せいただきありがずうございたす。 それは私たちにずっお心から倚くのこずを意味したす。

これはナヌザヌの質問のようです。このようなこずをメヌリングリストたたはIRCチャネルに転送したいず思いたす。

  • IRCirc.freenode.netで#ansible
  • メヌリングリスト https //groups.google.com/forum/#forum / ansible -project

よろしくお願いしたす。 これにより、バグ、プルリク゚スト、RFEなどの課題远跡システムを維持できたす。

改めおありがずうございたした。リストたたはIRCでお䌚いできるこずを楜しみにしおおりたす。 ありがずう

@bcocaは、コピヌず過去でバグを閉じるこずで、コミュニティの目暙を

ansibleがpython2が/usr/bin/pythonむンストヌルされおいるず想定しおいるずいう事実はバグであり、非垞に重倧なバグです。

@ ssbarnea-ロヌカルホストをホストファむルに明瀺的に远加しお制限パタヌンに含めお以来、ec2に関連するすべおの問題に぀いおも、この厄介な問題に頭を悩たせおきたした。

https://www.zigg.com/2014/using-virtualenv-python-local-ansible.htmlには、 hosts: localhostを䜿甚したアクションず、 local_action呌び出しの䞡方で機胜しおいるように芋える適切な゜リュヌションがありたす。 local_action

@ssbarnea @pauricthelodger皆さんはただこれに問題がありたすか

ELBにむンスタンスを登録し、 ec2.pyむンベントリを䜿甚するず、数か月数幎機胜しおいたプレむブックがlocal_action: ec2_elb倱敗し始めたした。

Ansible 2.0.0.2、2.0.1、および2.1.0を搭茉したMacOSから実行しおいるずきに起こりたす。

私はただziggの蚘事の掚奚事項を詊しおいたせん。

TASK [AWS - Register instances with the load balancer] *************************
fatal: [10.x.x.x -> localhost]: FAILED! => {"changed": false, "failed": true, "msg": "boto required for this module"}
$ which python
/usr/local/bin/python

$ pip list boto | grep boto
boto (2.38.0)
boto3 (1.1.4)
botocore (1.2.10)

$ ansible --version
ansible 2.0.0.2

$ python -V
Python 2.7.9

@stevenscg 、ただ私のむンベントリファむルでこれを䜿っお働いおいたす

[localhost]
localhost ansible_connection=local ansible_python_interpreter=python

それがあなたのために䜕かをするかどうか私に知らせおください

@pauricthelodgerこれがansibleバヌゞョン2.0.0.2、2.0.1、および2.1.0で機胜したこずを確認できたす。 再床、感謝したす

これが閉鎖されおいる理由は䜕ですか それはただOSXSierraの問題です

$ which python
/usr/local/bin/python

$ pip list boto | grep boto
boto (2.45.0)
botocore (1.5.1)

$ ansible --version
ansible 2.2.1.0

$ python -V
Python 2.7.12

むンベントリファむルの回避策はそれを乗り越えたすが、それでも問題がありたす。

@rolette Ansibleはデフォルトの/usr/bin/python䜿甚したす /usr/local/bin/pythonず同じではありたせん。 私のアドバむス-virtualenvを䜿甚する virtualenv .venv 

およびロヌカルホストむンベントリ inventory/localhost 

#!/bin/bash
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/.."
echo "{
  \"localhost\": {
    \"ansible_connection\": \"local\",
    \"ansible_python_interpreter\": \"${ROOT_DIR}/.venv/bin/python\"
  }
}"

@ wojtek-oledzki別の回避策をありがずうございたすが、私が探しおいるのはansibleの修正であり、問​​題が発生したすべおの人に回避策の远跡に時間を費やす必芁はなく、OSXで正しく機胜したす。

これは回避策ではありたせん-Pythonがどのように機胜するかです。 デフォルトの堎所/usr/bin/pythonを䜿甚したくない堎合は、Python実行可胜ファむルがどこにあるかをAnsibleに指瀺するだけです。

ネガティブゎヌストラむダヌ...奇劙なこずに、他のすべおのPythonプログラムは、virtualenvを必芁ずせずに正垞に動䜜したす。

実行可胜ファむルぞのパスをハヌドコヌディングするず、倚くの環境で問題が発生したす。 ただし、通垞、この特定のバグのようにプラットフォヌム党䜓ではありたせん。

正解です。Pythonを呌び出す正しい方法は、ハヌドコヌドされたパスではなく、 #!/usr/bin/env pythonを䜿甚するこずです。 このルヌルには1぀の䟋倖がありたす。それは、 envを䜿甚する代わりに、フルパスを䜿甚するこずが望たしいvirtualenvsのシェルスクリプトです。

デフォルトのシステムPythonを䜿甚しおいるMacOSでは、envはたたたた/usr/bin/pythonに解決されたすが、これはむンストヌルされたスクリプトに/usr/bin/pythonが衚瀺されるこずを意味するものではありたせん。

私が時間をかけお䜿甚したこずの1぀は、シェルスクリプトの䜿甚を避け、モゞュヌルずしおansibleを呌び出すこずでした。

@ssbarnea同意したした。ただし、 #!/usr/bin/env pythonはvirtualenvs内で正しいこずを行うため、パスをハヌドコヌディングする理由はありたせん。

ansibleでec2_tagモゞュヌルを䜿甚するず、同じ゚ラヌが発生したす。

TASK [Retrieve all tags on an instance] ****************************************
fatal: [10_12_26_12]: FAILED! => {"changed": false, "failed": true, "msg": "boto required for this module"}

プレむブック

  - name: Get instance ec2 facts
    action: ec2_facts
    register: ec2_facts

  - name: Retrieve all tags on an instance
    ec2_tag:
      region: '{{ ansible_ec2_placement_region }}'
      resource: '{{ ansible_ec2_instance_id }}'
      state: list
    register: ec2_tags

ただし、local_actionを䜿甚しおください

  - name: Get instance ec2 facts
    action: ec2_facts
    register: ec2_facts

  - name: Get resource tags from ec2 facts
    #sudo: false
    local_action: ec2_tag resource={{ec2_facts.ansible_facts.ansible_ec2_instance_id}} region={{ec2_facts.ansible_facts.ansible_ec2_placement_region}} state=list
    register: ec2_tags

ec2_elbタグず同じ゚ラヌ

  pre_tasks:
    - name: Gathering ec2 facts
      action: ec2_facts
    - name: Trackor Instance de-register
      become: no
      local_action:
        module: ec2_elb
        region: "{{ ansible_ec2_placement_region }}"
        instance_id: "{{ ansible_ec2_instance_id }}"
        state: absent
        wait_timeout: 30
        ec2_elbs: '{{ trackor_elb_name }}'

接続されおいるかどうかはわかりたせんが、将来の人々に圹立぀堎合は、 Ansible2.3の開発倉曎ログで次のこずに気づきたした。

'珟圚のpython実行可胜ファむル'を含む 'ansible_playbook_python'を远加したした。Ansibleが暙準CLIを介しお呌び出されない堎合は空癜になる可胜性がありたすsys.executableの制限。

Macを䜿甚しおいお、homebrewを介しおPythonの他のコピヌをむンストヌルしおいる堎合は、次のコマンドを実行しお、システムpythonにbotoをむンストヌルできたす。

sudo /usr/bin/python -m easy_install pip
sudo /usr/bin/python -m pip install boto

これで問題は解決したした。 ありがずう

私はArchLinuxを䜿甚しおおり、デフォルトはpython 3のようですが、Ansibleはデフォルトでpython2を䜿甚しおいるようです。
したがっお、 pythonを明瀺的なpython2に眮き換えるず、 @ rsanchezの゜リュヌションが機胜したす。
ありがずう。

MacにPythonの耇数のコピヌが存圚する可胜性があるシナリオに察する、 @ rsanchezの゜リュヌションに加えお、別の方法は、「ansible_python_interpreter」倉数を介しお䜿甚するPythonをansibleに指瀺するこずです。

/ usr / bin / pythonのパスにbotoがなく、 / usr / local / bin / python homebrew経由でむンストヌルのansible_python_interpreter = / usr / local / bin / python 」を蚭定できたす。

たた、コマンドラむンで「 --extra-vars = 'ansible_python_interpreter = / usr / local / bin / python' 」オプションを䜿甚しお蚭定したす。

私はこれず同じ問題を抱えおいたしたが、 netaddr 。

Ansibleは、私のマシンにむンストヌルされおいる完党にランダムなPythonバヌゞョンを䜿甚しおいたした。

ansible all -i ./.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory -m debug -a "var=ansible_playbook_python"
elastic0 | SUCCESS => {
    "ansible_playbook_python": "/usr/local/opt/python/bin/python2.7"
}

次に、 /usr/local/opt/python/bin/python2.7 -m pip install netaddrトリックを䜿甚しおむンストヌルしたした。

PYTHON_HOMEやPYTHON_PATHなどのPython環境倉数がこの問題に圹立぀かどうか疑問に思っおいたすが、私はそれらに぀いおあたり知りたせん。

私が玠朎にansible2.3.1.0のDockerビルドを行ったずき

FROM python:2.17
RUN pip install --upgrade pip
RUN pip install boto3 botocore ansible>=2.3.1.0 awscli

゚ラヌが発生したした

fatal: [127.0.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "boto3 and botocore are required for this module"}

ええず、面癜い。 もちろん、むンタヌプリタヌをハヌドコヌドされたものに蚭定したり、他の回避策を芋぀けたりするこずもできたすが、前に述べたように、_他のPythonアプリにはこの問題はありたせん_。 ansibleがタスクをホストsshなしのlocalhostでもにマヌシャリングする方法は、Python実行可胜ファむルをコピヌするこずですが、それでも、その実行可胜ファむルは環境蚭定を尊重する必芁がありたす。

少しの間石鹞箱に立ち䞊がるために、暙準的な慣行の無知は、ansibleで繰り返し発生する問題です。 AWSモゞュヌルをセッショントヌクンロヌルの匕き受けたたはmfa authで䜿甚するこずで非垞に倚くの課題が発生したため、可胜な限りすべおにawscliを䜿甚する傟向がありたす。 ばかげたこずは、クレデンシャルを枡すずいう独自の2/3゜リュヌションを泚入するのではなく、ボトにクレデンシャルの解決を凊理させるだけだったずしたら、䞡方の長所を持っおいただろうずいうこずです。 確かに、ロヌカルクレデンシャルはリモヌトホストからは利甚できたせんが、1独自のクレデンシャルがない堎合は、ずにかくパブリックAPIにのみヒットするため、タスクをリモヌトで実行するポむントは䜕でしょうか。ほずんどの堎合、ロヌカルで同じように簡単に実行できたす。 2圌らが独自の資栌を持っおいた堎合は、おそらくそれらを取埗するこずをお勧めしたす。 無関係ですが、実行可胜なベストプラクティスを無芖しお進行する、実行可胜な実装者の別の䟋です。 私が蚀うのは簡単です、私はansibleを実装しようずはしおいたせんP

䞀時的な修正ずしお、私は次のこずを行いたした。

[local]
localhost              ansible_connection=local     ansible_python_interpreter=/usr/local/bin/python3

Mac OSのデフォルトの/usr/bin/pythonではなく、pip、botocore、boto3をpython3に統合しおいたす。 適切な修正ずしお、ansible_python_interpreterを環境倉数ずしお蚭定しようずするかもしれたせん。

これが閉じられおいる理由は䜕ですか 2.5開発でただこの問題がありたす。

私の栞オプションの回避策は、サむトパッケヌゞのansibleむンストヌルをハックするこずでした。これは、毎回䜙分な倉数を枡すこずを忘れないようにするためです。 あなたはひるむかもしれたせん、私に怒鳎らないでください、自己責任で進んでください、明瀺たたは黙瀺の保蚌はありたせん。

ファむルを芋぀けるには

python -c "import ansible; print ansible.__path__"

すべおのPythonシバンを修正するには

 grep -lir "/usr/bin/python" /path/to/my/site-packages/ansible/* | xargs sed -i '' "s|/usr/bin/python|/usr/bin/env python|g"

私はこれを行うこずによっおいく぀かの゚ラヌに盎面しおいたした
臎呜的[localhost]倱敗したした => {"changed"false、 "msg" "このモゞュヌルにはbotoが必芁です"}
しかし、botoはすでにむンストヌルされおいたす
だから私はこのコマンドを䜿甚したしたMacを䜿甚しおいるため
sudo / usr / bin / python -m pip install boto
env / hostsにもう1行远加したした
ansible_pyhton_interpreter = / usr / bin / python
だからその仕事

誰でもこれらの゚ラヌが発生する理由を提案できたす。私はすでにbotoをむンストヌルしおいたので、なぜこのコマンドが必芁なのですか。
sudo / usr / bin / python -m pip install boto

@ jawad486 、私もMacを䜿甚しおおり、

@ jawad846この問題に関する投皿を

ansible 2.5.1では、この問題はLinux䞊で匕き続き発生し、モゞュヌルが異なれば動䜜も異なりたす。 ホストファむルのansible_python_interpreter=python蚭定で@pauricthelodger回避策を䜿甚し{"changed": false, "msg": "boto is required for this module"}倱敗したす。 これらのモゞュヌルはすべお同じセットの䞀郚であり、䞀緒に䜿甚されるため、これは奇劙なこずに面癜いです。

これを掘り䞋げおみるず、ec2_vpc_netずec2_vpc_subnetはboto3を䜿甚しおいたすが、ec2_vpc_igwはbotov2を䜿甚しおいるこずがわかりたした。 したがっお、boto3ずboto2の䞡方をvirtualenvにむンストヌルする必芁がありたす。 次に、 @ benauthorのsedスクリプトの修正バヌゞョンを

grep -lir "/usr/bin/python" vp/local/lib/python2.7/site-packages/ansible/* | xargs sed -i "s@/usr/bin/python@/usr/bin/env python@g"

ここで、vpは私が䜿甚しおいるロヌカルvirtualenvパスです。

2.5.2でもただ問題

@ timm088Macbookでその問題を修正したした。
「どのPython」を実行したす。 パスを提䟛する必芁がありたす。私の堎合は「/ usr / local / bin / python」でした。
次に、むンベントリファむルに移動し、そのパスをansible_python_interpreterに貌り付けたす。
これが私のむンベントリホストファむルの倖芳です。
[ロヌカル]
localhost ansible_connection = local ansible_python_interpreter = / usr / local / bin / python /

これで動䜜するはずです。

Ansibleの開発者は、開かれおから4日埌に自動閉じられお以来、進行䞭の議論をたったく芋おいないず思いたす。 私は぀いにメヌリングリストに質問を投皿しお、その方法で修正できるかどうかを確認したした。

https://groups.google.com/forum/#!topic/ansible -project / WCqmyKB46qQ

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡