cans.celery-worker-setup

セロリワーカー

systemdによって監視される一連のセロリワーカーの設定を行う役割です。

各ワーカーは、以下のように項目で説明される必要があります:

- app_name: 'MyApp'                      # (必須)
  app_variable: 'my_app'                 # (デフォルト: `celeryw_app_variable`)
  celeryd_bin: '/usr/local/bin/celery'   # (デフォルト: `celeryw_bin`)
  group: "adm"                           # (デフォルト: `celeryw_`)
  log_dir:                               # (デフォルト: `celeryw_log_dir`)
  log_filename: "%n%I"                   # (デフォルト: `celeryw_log_filename`)
  log_level: "INFO"                      # (デフォルト: `celeryw_log_level`)
  pid_filename: `%n-master.pid`          # (デフォルト: `celeryw_pid_filename`)
  queues: `%n-master.pid`                # (デフォルト: `celeryw_queues`)

基本的に、下記のロール変数セクションの全ての変数は、 ワーカーごとにオーバーライド可能で、そのワーカーを説明する項目で同じ名前のキーを使って設定できます(ロール名前空間のプレフィックスを省略)。唯一の例外は、各ワーカーに対して必ず提供しなければならないapp_nameapp_moduleの変数です。

要件

この役割には要件はありません。

ロール変数

このロールの全ての変数は、celeryw_というプレフィックスで名前空間が付けられています。

デフォルト

  • celeryw_app_variable: セロリアプリケーションへの参照を保持するモジュールレベルの変数(デフォルト: "app");
  • celeryw_bin: セロリ実行ファイルのパス(デフォルト: "/usr/bin/celery")
  • celeryw_daemon_options: セロリコマンドラインにそのまま渡すオプション(デフォルト: "");
  • celeryw_etc_dir: セロリのワーカー設定ファイルを保存するディレクトリのパス(デフォルト: "/etc/celery");
  • celeryw_group: セロリプロセスが実行されるグループ(デフォルト: {{ansible_user_id}}
  • celeryw_log_dir: セロリのログファイルを保存するディレクトリのパス(デフォルト: /var/log/celery);
  • celeryw_log_filename: ログファイルに使用する名前。利用可能なテンプレートの置換についてはセロリのドキュメントを参照してください(デフォルト: %n%I.log);
  • celeryw_log_level: (デフォルト: ERROR
  • celeryw_pid_filename: %n.pid
  • celeryw_queues: "celery"
  • celeryw_run_dir: セロリのPIDファイルなどを保存するパス(デフォルト: /var/run/celery
  • celeryw_user: セロリプロセスが実行されるアイデンティティ(デフォルト: {{ansible_user_id}}
  • celeryw_workers: 設定するワーカーのリストを含む変数(デフォルト: []);

他のロール用の変数

なし

依存関係

このロールは、セロリワーカーを管理するために、cans.systemd-unit-installロールに依存しています。

サンプルプレイブック

最初の例では、主にロールで提供されるデフォルト値を利用して、二つのアプリケーションのワーカーを設定します:

- hosts: servers
  roles:
     - role: cans.celery-worker
       celeryw_workers:
         - app_name: "mailer"
           app_module: "application.interfaces.tasks.mailer"
         - app_name: "data-cruncher"
           app_module: "application.interfaces.tasks.cruncher"
           app_variable: "cruncher_app"

この二つ目の例では、グローバルレベルでいくつかの変数をオーバーライドし、他の変数はワーカーの説明レベルで設定しています:

- hosts: servers
  vars:
     celeryw_bin: "/opt/local/python-virtualenvs/python3.6/bin/celery"
  roles:
     - role: cans.celery-worker
       celeryw_workers:
         - app_name: "mailer"
           app_module: "application.interfaces.tasks.mailer"
         - app_name: "data-cruncher"
           app_module: "application.interfaces.tasks.cruncher"
           app_variable: "cruncher_app"
         - app_name: "legacy-data-cruncher"
           app_module: "legacy.interfaces.tasks.cruncher"
           conf_dir: "/opt/local/etc/celery"
           celery_bin: "/opt/local/python-virtualenvs/python2.5/bin/celery"

他の例については、testディレクトリ内にあるプレイブックも参照してください。

ライセンス

GPLv2

著者情報

Copyright © 2017, Nicolas CANIART.

プロジェクトについて

Setup celery workers managed by systemd

インストール
ansible-galaxy install cans.celery-worker-setup
ライセンス
gpl-2.0
ダウンロード
147
所有者