cchurch.django

ビルドステータス Galaxy

Django

Djangoプロジェクトを設定および更新します。Ansible 2.8以降が必要です。

要件

becomeを使用する場合(つまりdjango_useransible_userまたはansible_ssh_userと等しくない場合)、become_method(例:sudo)をサポートするために必要なOSパッケージをこのロールを使用する前にインストールする必要があります。

Djangoプロジェクトは、このロールを実行する前にターゲットホストで利用可能でなければなりません(SCMチェックアウト、rsync等を使用)。Djangoプロジェクトをgit/hg/svnからチェックアウトするには、cchurch.scmロールが役立つかもしれません。

プロジェクトに必要なOSおよびPythonパッケージの依存関係(Django自体を含む)も、このロールを実行する前にインストールする必要があります。パッケージをインストールし、Djangoを実行するためのvirtualenvを作成するには、cchurch.virtualenvロールが役立つかもしれません。

ロール変数

このロールをカスタマイズするために定義できる変数は次のとおりです。

  • django_app_path: Djangoプロジェクトを含むディレクトリ(必須)。
  • django_user: Djangoコマンドを実行するために使用するユーザー(デフォルトはansible_userまたはansible_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コマンドを実行する前にアクティブにするvirtualenvを含むディレクトリ。デフォルトは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キーと他のオプションを持つハッシュとして指定できます。例えば:

- 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オプションを指定できます。また、デフォルトのホスト名をdjango_run_once_hostを使用して上書きするためのrun_once_hostを指定することもできます。

以下の変数は、プレイまたはロールの呼び出しに定義できます(ただし、インベントリグループやホスト変数として定義された場合は機能しません)。

  • django_notify_on_updated: Djangoプロジェクトの更新中に変更があった場合に通知するハンドラー名。デフォルトは"django updated"です。カスタムハンドラーは、通知名を変更するのではなく、一般的に"django updated"をリッスンすることを推奨します。

このロールは、django_userで指定された別のユーザーとしてDjango管理コマンドを実行でき、ホスト/プレイ/タスクのために指定された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 project updated
      debug:
        msg: "Django project in {{ django_app_path }} was updated!"
      listen: django updated

ライセンス

BSD

著者情報

クリス・チャーチ (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.