Vagrant 在Ansible中使用pyenv
我正在使用Ansible设置基于Ubuntu的Vagrant和DigitalOcean Box,并希望使用pyenv管理几个不同网站的环境 在尝试使用我安装的pyenv安装python版本时,我遇到了权限问题,这可能是因为我缺乏基本的*nix知识 我有一个Vagrant 在Ansible中使用pyenv,vagrant,ansible,pyenv,Vagrant,Ansible,Pyenv,我正在使用Ansible设置基于Ubuntu的Vagrant和DigitalOcean Box,并希望使用pyenv管理几个不同网站的环境 在尝试使用我安装的pyenv安装python版本时,我遇到了权限问题,这可能是因为我缺乏基本的*nix知识 我有一个deploy用户和组,我为他们安装了pyenv,但很明显,当下面的最后一个任务失败时,用户的操作出现了问题(为了清楚起见,所有变量都替换为字符串): 执行vagrant up操作时,会一直正常,直到: 任务[python:安装默认python版
deploy
用户和组,我为他们安装了pyenv,但很明显,当下面的最后一个任务失败时,用户的操作出现了问题(为了清楚起见,所有变量都替换为字符串):
执行vagrant up
操作时,会一直正常,直到:
任务[python:安装默认python版本]*********************************
致命:[192.168.33.15]:失败!=>{“已更改”:true,“cmd”:“/home/deploy/.bashrc&&pyenv安装3.5.1”,“delta”:“0:00:00.002111”,“end”:“2016-02-16 11:48:26.930971”,“failed”:true,“rc”:127,“start”:“2016-02-16 11:48:26.928860”,“stderr”:“/bin/sh:1:pyenv:未找到”,“stdout”:“,“stdout”;“stdout_行”:[],“警告”:
更新:如果这很重要,在本例中(漫游框)myVagrant.yml
playbook正在将remote\u user
设置为Vagrant
:
- name: Create a virtual machine via vagrant
hosts: all
become: yes
become_method: sudo
remote_user: vagrant
...
更新2:如果我以deploy
用户身份ssh到Vagrant VM中,那么我可以使用pyenv
OK。如果我以vagrant
的身份ssh,然后sudo-u deploy bash-I
我得到pyenv:command not found
更新3:问题的根源可能是当切换到sudo
的deploy
用户时(通过echo
从每个文件进行测试),没有/home/deploy/.bashrc
或/home/deploy/.profile
的来源,而是在以deploy
身份登录时。但是,我认为/home/deploy/.bashrc
是由失败的任务生成的-回显文本出现在stdout中。因为您的错误是:
pyenv:找不到
只需在任务中简单地使用pyenv的绝对路径即可。这是处理shell
任务的推荐方法:
登录到您的计算机并找到pyenv
which pyenv
然后将任务更改为
# /path/to/pyenv is the result of the previous command
...
shell: . /home/deploy/.bashrc && /path/to/pyenv install 3.5.1
...
这么简单的事!非常感谢你。我花了一天的时间来解决这个问题。我将该行更改为
shell:/home/deploy/.bashrc&&/home/deploy/.pyenv/libexec/pyenv安装3.5.1
,它可以正常工作。再次感谢。
# /path/to/pyenv is the result of the previous command
...
shell: . /home/deploy/.bashrc && /path/to/pyenv install 3.5.1
...