我如何确认使用ansible安装了python包

时间:2016-09-22 19:55:47

标签: python pip conditional ansible virtualenv

我正在编写一个ansible剧本,我首先要安装pew,并转换到该pew环境以安装其他一些python库。

所以,我的剧本看起来会像这样......

tasks:

# task 1
- name: install pew if necessary
  command: pip install pew

# task 2
- name: create new pew environment if necessary
  command: pew new devpi-server

# task 3
- name: transition to pew environment
  command: pew workon devpi-server

# task 4
- name: install devpi-server
  command: pip install devpi-server

# task 5
- name: run devpi server
  command: devpi-server ## various args

本着保持我的剧本幂等的精神,我想在必要的时候完成所有这些任务。

所以,我只想安装pew,如果它还没有安装,只想创建一个新的pew环境,如果它尚不存在,只在我们还没有工作的pew环境...等等...

有没有人对如何做到这一点有很好的建议?我对ansible条件有点熟悉,但只有在类似的情况下,“是否是一个文件下载”

我还没有确定是否安装了程序,加载了虚拟环境等等。

1 个答案:

答案 0 :(得分:3)

您可以使用Ansible中的Pip module来确保安装某些软件包。

对于您的条件,我会参考:How to make Ansible execute a shell script if a package is not installedhttp://docs.ansible.com/ansible/playbooks_conditionals.html#register-variables - 这些可以帮助您走上正轨。

所以你的剧本看起来有点像:

- pip: name=pew

- name: Check if pew env exists
  command: pew command
  register: pew_env_check

- name: Execute script if pew environment doesn't exist
  command: somescript
  when: pew_env_check.stdout.find('no packages found') != -1