使用Ansible postgresql_user和VirtualEnv中的psycopg2

时间:2015-04-19 10:20:47

标签: postgresql virtualenv ansible

Ansible postgresql_user模块需要psycopg2的工作安装:

http://docs.ansible.com/postgresql_user_module.html

如果这是安装在服务器上的VirtualEnv中,Ansible模块如何找到它?

其他Ansible模块似乎有明确的VirtualEnv支持,所以这只是一个缺失的功能吗?

1 个答案:

答案 0 :(得分:2)

如果你想使用virtualenv中的psycopg2模块,一个可能的解决方案是

遵循的步骤:

1)创建了一个ubuntu 16.04 vagrant机器并安装了postgresql。

2)使用ansible postgresql_db模块创建新数据库,但失败并显示错误FAILED! => {"changed": false, "failed": true, "msg": "the python psycopg2 module is required"}

3)创建virtualenv并在virtualenv中安装psycopg2

virtualenv venv -p /usr/bin/python (Note: python2.7)
source venv/bin/activate
pip install psycopg2

4)使用 ansible_python_interpreter 运行ansible-playbook,指向virtualenv中的python解释器,数据库创建任务成功。 ansible命令和内容如下,

---
- hosts: vagrant
  sudo: true

  pre_tasks:
     - raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
     - setup:

  tasks:
    - name: db create
      postgresql_db:
        name: acme
      become_user: postgres

ansible-playbook命令

ansible-playbook playbook.yml -e "ansible_python_interpreter=/home/ubuntu/venv/bin/python"