2015-04-19 19 views
12

Module postgresql_user Ansible đòi hỏi một sự cài đặt làm việc của psycopg2:Sử dụng Ansible postgresql_user với psycopg2 từ virtualenv

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

Nếu đây được cài đặt trong một virtualenv trên máy chủ, làm thế nào có thể mô-đun Ansible tìm thấy nó?

Các mô-đun Ansible khác dường như có hỗ trợ VirtualEnv rõ ràng, vì vậy đây có phải là tính năng bị thiếu không?

Trả lời

2

Nếu bạn muốn sử dụng các mô-đun psycopg2 từ virtualenv, một giải pháp khả thi sẽ là

bước sau:

1) Tạo một ubuntu 16,04 máy lang thang và postgresql cài đặt.

2) sử dụng các mô-đun postgresql_db ansible để tạo ra một cơ sở dữ liệu mới và thất bại với lỗi FAILED! => {"changed": false, "failed": true, "msg": "the python psycopg2 module is required"}

3) Tạo một virtualenv và cài đặt psycopg2 trong virtualenv

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

4) Chạy ansible-playbook với ansible_python_interpreter để trỏ đến trình thông dịch python từ virtualenv và tác vụ tạo cơ sở dữ liệu đã thành công. Các lệnh và nội dung ansible như sau,

--- 
- 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 

các ansible-playbook lệnh

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

Sử dụng "ansible_python_interpreter" tham số là một gợi ý tuyệt vời. Trước khi chấp nhận câu trả lời: Sẽ không có ý nghĩa hơn khi đặt nó trong cấu hình khoảng không quảng cáo, như được mô tả ở đây: http://docs.ansible.com/ansible/intro_inventory.html? –

+0

@ PeterTröger Có nhiều cách để xác định biến ansible_python_interpreter, nó phụ thuộc vào sở thích của người dùng mà tôi tin tưởng. Nếu bạn muốn một cách tiếp cận liên tục, bạn có thể đặt nó trong khoảng không quảng cáo hoặc dưới dạng biến môi trường ở cấp độ phát trong phần máy chủ lưu trữ. – tux

Các vấn đề liên quan