Ansible Django模块替代Python解释器

时间:2014-07-21 12:33:58

标签: python django ansible

我正在编写一个用于部署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

2 个答案:

答案 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主机/组变量解决了这个问题。

http://docs.ansible.com/faq.html#how-do-i-handle-python-pathing-not-having-a-python-2-x-in-usr-bin-python-on-a-remote-machine

很酷的部分是,如果你真的需要,你可以在主机的基础上为python定义不同的路径。