我正在编写一个用于部署django应用程序的ansible playbook。作为该过程的一部分,我想运行staticcollect
命令。
我遇到的问题是远程服务器有两个python解释器,一个是Python2.6,一个是Python2.7,Python2.6是默认的。
当我运行playbook时,它使用Python2.6解释器运行,我需要它来运行Python2.7解释器。
关于如何实现这一点的任何想法?
我的剧本如下:
- hosts: xxxxxxxxx
vars:
hg_branch: dmv2
django_dir: /opt/app/xxxx
conf_file: /opt/app/conf/xx_uwsgi.ini
django_env:
STATIC_ROOT: /opt/app/serve/static
remote_user: xxxxxx
tasks:
- name: Update the hg repo
command: chdir=/opt/app/xxxxx hg pull -u --rev {{hg_branch}}
- name: Collect static resources
environment: django_env
django_manage: command=collectstatic app_path={{django_dir}}
- name: Restart the django service
command: touch {{conf_file}}
- name: check nginx is running
service: name=nginx state=started
答案 0 :(得分:0)
/usr/bin/python
只是/usr/bin/python2.6
或/usr/bin/python2.7
的符号链接。您只需调用bash命令即可更新符号链接。
- name: Remove python --> python2.6 symlink
sudo: yes
command: rm /usr/bin/python
- name: Add python --> python2.7 symlink
sudo: yes
command: ln -s /usr/bin/python2.7 /usr/bin/python
答案 1 :(得分:0)
我在当天的工作中遇到了类似的情况,并使用ansible_python_interpreter主机/组变量解决了这个问题。
很酷的部分是,如果你真的需要,你可以在主机的基础上为python定义不同的路径。