ansible用root owner创建virtualenv

时间:2017-07-03 12:46:34

标签: ansible virtualenv

这个Ansible任务创建了一个virtualenv(好!),但目录(/home/chris/.virtualenvs/foobar)由root拥有(不太好):

- name: install requirements
  pip:
    chdir: /home/chris/website
    requirements: ./requirements.txt
    virtualenv: /home/chris/.virtualenvs/foobar

但令我疯狂的是,下一个任务失败了,显然是因为根所有权

- name: copy sitecustomize.py
  file:
    src: /home/chris/website/sitecustomize.py
    dest: /home/chris/.virtualenvs/foobar/lib/python2.7/sitecustomize.py
    remote_src: yes

我认为我真正想要解决的问题是创建.virtualenv,以便它由" chris"拥有。知道怎么强迫吗?

如果做不到,怎么能得到"复制"任务以与" pip"相同的权限运行任务,以便我可以复制我的文件?

编辑:解决了第二个问题 - 我需要使用"复制"任务,而不是文件任务。所以这......

- name: copy sitecustomize.py
  copy:
    src: /home/chris/website/sitecustomize.py
    dest: /home/chris/.virtualenvs/foobar/lib/python2.7/sitecustomize.py
    remote_src: yes

1 个答案:

答案 0 :(得分:2)

尝试将pip作为chris运行:

- name: install requirements
  pip:
    chdir: /home/chris/website
    requirements: ./requirements.txt
    virtualenv: /home/chris/.virtualenvs/foobar
    become: yes
    become_user: chris

为了保持一致,请chris成为sitecustomize.py的所有者:

- name: copy sitecustomize.py
  file:
    src: /home/chris/website/sitecustomize.py
    dest: /home/chris/.virtualenvs/foobar/lib/python2.7/sitecustomize.py
    remote_src: yes
    group: chris
    owner: chris