我需要在一些剧本上创建一些蛇油证书,并且为此使用了openssl_privatekey,openssl_csr和openssl_certificate模块。问题在于该模块依赖于PyOpenSSL,而CentOS版本的PyOpenSSL已过时。
要解决此问题,我从pip安装了PyOpenSSL,该方法可以正常工作,但是如果与yum一起安装,则可能会覆盖已经存在的PyOpenSSL模块。
在我的剧本上,我正在这样做:
- name: 'Install PyOpenSSL'
pip:
name: PyOpenSSL
state: present
version: '>= 0.15'
现在,有什么方法可以在虚拟环境中安装它,以便ansible知道吗?如果是这样,我只需在剧本结尾处删除虚拟环境即可。
答案 0 :(得分:2)
您可以使用pip
模块创建虚拟环境。您可以通过将ansible_python_interpreter
事实设置为指向virtualenv中的python
二进制文件来使Ansible意识到该virtualenv,例如:
---
- hosts: localhost
gather_facts: false
tasks:
- name: install modules
pip:
state: present
name: "{{ modules }}"
virtualenv: /tmp/venv
vars:
modules:
- pyopenssl
- set_fact:
ansible_python_interpreter: /tmp/venv/bin/python
注意:我尚未对此进行彻底测试。它没有破坏任何东西。