

VagrantからAnsibleスクリプトを呼び出し、  
pyenvを利用してPythonを構築しし、最終的にDjangoをインストールするスクリプトを実現したいのですが、  
下記のスクリプトを使用したところ

[code]

    - name: 指定バージョンのPythonをインストールする
      shell: bash -lc "pyenv install {{ python_version }}"
      become: false
    
    - name: 作業用ディレクトリに指定バージョンを反映する
      shell: bash -lc "pyenv local {{ python_version }}"
      args:
        chdir: "{{ work_dir }}"
      become: false
    
    - name: pipアップグレード
      shell: bash -lc "pip install --upgrade pip"
      args:
        chdir: "{{ work_dir }}"
      become: false
    
    - name: install django
      pip:
        name: django
        chdir: "{{ work_dir }}"
        version: "{{ django_version }}"
        executable: pip
      become: false
    
[/code]

下記のエラーが出ました。pipモジュールがないとのことだったのですが、  
vagrant ssh でゲストOSにログインするとpipコマンドは無事見つかりました。  
pyenvからpythonを構築し、その影響下にあるpipをAnsibleから呼び出すことは可能でしょうか。  
ご教授いただければ幸いです。

[code]

    TASK [django : install django] *************************************************
    fatal: [127.0.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "Unable to find any of pip to use.  pip needs to be installed."}
        to retry, use: --limit @/vagrant/playbooks/main.retry
    
[/code]


CC BY-SA 3.0
2017-07-24T20:43:18.563
36640
2017-09-26T01:58:02.577
7918
question
python vagrant ansible
Ansibleを使い、pyenvからPythonをインストールしpipモジュールを使う方法


自己解決しました。  
AnsibleはデフォルトのPython(/usr/bin/python)を使用しているため、  
下記のようなモジュールを使い、Pythonインタプリタを変更する必要があります。

[code]

    set_fact: ansible_python_interpreter=/home/{{ work_user }}/.pyenv/shims/python
    
[/code]


CC BY-SA 3.0
2017-07-25T02:06:34.287
36644
2017-07-25T02:06:34.287
7918
36640
answer