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_name
とapp_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.