为什么我不能使用 ansible 创建 virtualenv?

Why can I not create virtualenv using ansible?

我正在尝试使用 ansible 为 nodepool 用户创建一个 virtualenv,但它失败了,如下所述。我想成为 nodepool 用户,因为它使用 python3.5,而所有其他用户使用服务器默认值 2.7.5。 3.5版本好像无法获取

该剧是:

- name: Create nodepool venv
  become: true
  become_user: nodepool
  become_method: su
  command: virtualenv-3.5 /var/lib/nodepool/npvenv

错误是:

fatal: [ca-o3lscizuul]: FAILED! => {"changed": false, "cmd": "virtualenv-3.5 /var/lib/nodepool/npvenv", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}

从 shell 起有效。

[root@host ~]# su nodepool
[nodepool@host root]$ virtualenv-3.5 /var/lib/nodepool/npvenv
Using base prefix '/opt/rh/rh-python35/root/usr'
New python executable in /var/lib/nodepool/npvenv/bin/python3
Also creating executable in /var/lib/nodepool/npvenv/bin/python
Installing setuptools, pip, wheel...done.

按如下方式解决了该问题。

shell: source /var/lib/nodepool/.bashrc && virtualenv-3.5 /var/lib/nodepool/npvenv creates="/var/lib/nodepool/npvenv"

这不是我想做的,但它会做的。如果有人知道我可能会像最初发布的那样,请指教。也许这是不可能的,因为它没有拾取路径等。

我加入了 creates 选项,因为如果它存在,它会阻止重做。