Ansible-通过成为用户激活虚拟环境
我想为我的CKAN安装创建一个用户,然后作为该用户激活一个虚拟环境并安装一些东西Ansible-通过成为用户激活虚拟环境,ansible,ckan,Ansible,Ckan,我想为我的CKAN安装创建一个用户,然后作为该用户激活一个虚拟环境并安装一些东西 - name: Add a CKAN user user: name: ckan comment: "CKAN User" shell: /sbin/nologin create_home: yes home: /usr/lib/ckan state: present - name: chmod 755 /usr/lib/ckan file: pa
- name: Add a CKAN user
user:
name: ckan
comment: "CKAN User"
shell: /sbin/nologin
create_home: yes
home: /usr/lib/ckan
state: present
- name: chmod 755 /usr/lib/ckan
file:
path: /usr/lib/ckan
mode: u=rwX,g=rX,o=rX
recurse: yes
- name: Create Python virtual env
command: virtualenv --no-site-packages default
become: yes
become_user: ckan
- name: Activate env
command: . default/bin/activate
- name: Activate env
command: pip install setuptools==36.1
我知道它通常不是最“可靠”的实现,但我只是想让它发挥作用
错误出现在“创建Python虚拟环境”中。我的那行有个错误
在命令行中,我只需运行:
su-s/bin/bash-ckan
但我如何在这里做到这一点?我想成为用户会这样做吗?以下方法奏效了:
- name: Install setuptools into venv
pip:
name: Setuptools==36.1
virtualenv: '{{ path_to_virtualenv }}'
不需要成为用户
另一个例子:
- name: Install ckan python modules
pip: name="requirements-docs.txt" virtualenv={{ ckan_virtualenv }} state=present extra_args="--ignore-installed -r"
如果您已经拥有用户文件夹的路径并设置了相应的权限,则可以直接使用Ansible
pip
模块在该文件夹中创建虚拟环境并安装软件包。因此,IIUC您不需要执行以下任务
创建Python虚拟环境
- 不执行此任务,您只需将参数
添加到virtualenv_命令
模块,即可创建虚拟环境(如果虚拟环境尚不存在)pip
- 不执行此任务,您只需将参数
(x2)激活环境
- 如果要使用Ansible
模块将软件包安装到虚拟环境中,则不需要执行这两项任务pip
- 如果要使用Ansible
extra_args
来执行此操作
如果要将单个软件包安装到虚拟环境中,则可以使用以下任务替换最后3个任务
tasks:
- name: Create Python virtual env and install one package inside the virtual env
pip:
name: setuptools==36.1
virtualenv: /path/to/ckan/user/home/folder # <--- path to user's home folder*
virtualenv_command: virtualenv
virtualenv_site_packages: no # <---- added this parameter to exclude site packages
virtualenv_python: python3.7
*
执行此任务之前,用户的主文件夹必须存在
tasks:
- name: Create Python virtual env and install multiple packages inside the virtual env
pip:
requirements: /path/to/ckan/user/home/folder/requirements-docs.txt
virtualenv: /path/to/ckan/user/home/folder # <--- path to user's home folder*
virtualenv_command: virtualenv
virtualenv_site_packages: no # <---- added this parameter to exclude site packages
virtualenv_python: python3.7