cchurch.django

构建状态 Galaxy

Django

配置和更新Django项目。需要Ansible 2.8或更高版本。

要求

当使用become时(即django_user不等于ansible_useransible_ssh_user),必须先安装支持become_method (例如sudo)所需的操作系统包,再使用此角色。

在运行此角色之前,Django项目必须在目标主机上可用 (通过SCM检出、rsync等)。 cchurch.scm角色可能 对从git/hg/svn检出Django项目有所帮助。

在运行此角色之前,项目的操作系统和Python包依赖,包括Django本身, 必须已安装。 cchurch.virtualenv角色可能 对安装包和为运行Django创建虚拟环境有所帮助。

角色变量

可以定义以下变量来定制此角色:

  • django_app_path:包含Django项目的目录(必需)。
  • django_user:用于运行Django命令的用户(默认是 ansible_useransible_ssh_user)。
  • django_directories:需创建的目录列表以支持Django项目(用于日志文件、上传的媒体等);默认是[]。列表中的每个项目可以是指定目录名的单一字符串,也可以是包含pathownergroupmode键的哈希。
  • django_settings_templates:用于安装自定义Django设置的模板列表,默认是[]。列表中的每个项目应该是一个包含srcdest键的哈希,也可以指定ownergroupmodebackupforce参数。必要时,将在安装设置文件之前创建父目录;dir_ownerdir_groupdir_mode键可以设置以指定与设置文件不同的父目录的所有权和权限选项。
  • django_settings:运行Django命令所用的Django设置模块的Python点路径(例如proj.settings);默认是omit
  • django_virtualenv:在运行Django命令之前要激活的虚拟环境的目录;默认是omit
  • django_pre_commands:在主命令之前要运行的额外Django命令列表;默认是[]
  • django_main_commands:用于正常项目更新的Django命令列表;默认是[{command: "migrate", run_once: true}, "collectstatic"]
  • django_post_commands:在主命令之后要运行的额外Django命令列表;默认是[]
  • django_run_once_host:用于运行指定run_once的Django命令的主机名;默认是"{{ ansible_play_hosts_all[0] }}",目标是播放中指定的第一个主机。

上述命令列表中的每个项目可以仅指定命令名称的字符串,或者作为带有command键和django_manage模块支持的任何其他选项的哈希,例如:

- check
- command: migrate
  skip: yes
  run_once: yes
  run_once_host: worker
- command: collectstatic
  link: yes
- command: my_custom_command --noinput
  changed_when: '"created" in result.stdout'

每个项目可以指定一个changed_when条件表达式,用于确定命令是否进行了任何更改;result变量将可用于该表达式,并包含该特定django_manage模块调用的结果。

每个项目还可以指定run_once选项,这会使得该任务仅在一个主机上运行,而不是在播放所针对的所有主机上。该项目还可以指定run_once_host以覆盖通过django_run_once_host指定的默认主机名。

以下变量可用于播放或角色调用(但如果定义为清单组或主机变量则无效):

  • django_notify_on_updated:当在更新Django项目时做出任何更改时,通知的处理程序名称。默认是"django updated";通常建议定制处理程序监听"django updated",而不是修改通知名称。

此角色可以作为其他用户运行Django管理命令,由django_user指定,并将使用为主机/播放/任务指定的become_method切换到该用户。您可能需要在ansible.cfg中定义allow_world_readable_tmpfiles(这仍会生成警告而不是错误),或者使用其他方法来支持一个无特权用户变为另一个无特权用户。

示例剧本

以下示例剧本配置和更新Django项目,当任何更改时通知一个自定义处理程序:

- hosts: all
  vars:
    django_app_path: ~/src
    django_virtualenv: ~/env
    django_settings_templates:
      - src: local_settings.py.j2
        dest: ~/src/myproj/local_settings.py
    django_settings: myproj.settings
    django_pre_commands:
      - command: test
        failfast: yes
      - validate
    django_post_commands:
      - command: loaddata
        fixtures: defaults.json
  roles:
    - role: cchurch.django
  handlers:
    - name: django项目更新
      debug:
        msg: "Django项目在{{ django_app_path }}中已更新!"
      listen: django updated

许可

BSD

作者信息

Chris Church (cchurch)

关于项目

Configure and update a Django project.

安装
ansible-galaxy install cchurch.django
许可证
other
下载
3.3k
拥有者
Python/Django/Ansible, will code for sweet tea and beer.