django

Статус сборки Galaxy

Django

Настройте и обновите проект Django. Требуется Ansible 2.8 или более поздняя версия.

Требования

Когда используется become (то есть django_user не равен ansible_user или ansible_ssh_user), необходимые пакеты ОС для поддержки метода become (например, sudo) должны быть установлены перед использованием этой роли.

Проект Django должен быть доступен на целевом хосте перед запуском этой роли (например, через SCM checkout, rsync и т. д.). Роль cchurch.scm может быть полезна для получения проекта Django из git/hg/svn.

Пакеты зависимостей для ОС и Python, включая сам Django, должны быть установлены перед запуском этой роли. Роль cchurch.virtualenv может быть полезна для установки пакетов и создания виртуального окружения для работы с Django.

Переменные роли

Следующие переменные могут быть определены для настройки этой роли:

  • django_app_path: Директория, содержащая проект Django (обязательно).
  • django_user: Пользователь, от имени которого будут выполняться команды Django (по умолчанию - ansible_user или ansible_ssh_user).
  • django_directories: Список директорий, которые будут созданы для поддержки проекта Django (например, для логов, загруженных медиа и т. д.); по умолчанию - []. Каждый элемент списка может быть простой строкой, указывающей имя директории, или хешем, содержащим ключи path, owner, group и mode.
  • django_settings_templates: Список шаблонов, которые будут установлены с пользовательскими настройками Django, по умолчанию - []. Каждый элемент списка должен быть хешем, содержащим ключи src и dest, а также может указывать параметры owner, group, mode, backup и force. Родительские директории будут созданы при необходимости перед установкой файлов настроек; ключи dir_owner, dir_group и dir_mode могут быть установлены для указания параметров владения и прав для родительских директорий, которые отличаются от файлов настроек.
  • django_settings: Дотированный путь Python к модулю настроек Django для выполнения команд Django (например, 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: Имя хоста, который будет использоваться для выполнения команд Django, которые указывают run_once; по умолчанию - "{{ 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, чтобы переключиться на этого пользователя. Возможно, вам потребуется определить allow_world_readable_tmpfiles в вашем ansible.cfg (что все равно вызовет предупреждение, а не ошибку) или использовать другой подход для поддержки одного непривилегированного пользователя, который становится другим непривилегированным пользователем.

Пример плейбука

Следующий пример плейбука настраивает и обновляет проект 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

Информация об авторе

Крис Черч (cchurch)

О проекте

Configure and update a Django project.

Установить
ansible-galaxy install cchurch/ansible-role-django
Лицензия
other
Загрузки
3278
Владелец
Python/Django/Ansible, will code for sweet tea and beer.