cans.celery-worker-setup
celery-worker
Un rôle pour configurer un ensemble de workers Celery supervisés par systemd.
Chaque worker doit être décrit à l'aide d'éléments comme celui qui suit :
- app_name: 'MonApp' # (obligatoire)
app_variable: 'mon_app' # (par défaut : `celeryw_app_variable`)
celeryd_bin: '/usr/local/bin/celery' # (par défaut : `celeryw_bin`)
group: "adm" # (par défaut : `celeryw_`)
log_dir: # (par défaut : `celeryw_log_dir`)
log_filename: "%n%I" # (par défaut : `celeryw_log_filename`)
log_level: "INFO" # (par défaut : `celeryw_log_level`)
pid_filename: `%n-master.pid` # (par défaut : `celeryw_pid_filename`)
queues: `%n-master.pid` # (par défaut : `celeryw_queues`)
En gros, toutes les variables dans la section Variables de rôle ci-dessous peuvent être remplacées, pour chaque worker, dans l'élément décrivant le worker par une clé ayant le même nom (en omettant le préfixe du namespace du rôle). Les deux seules exceptions sont les variables app_name
et app_module
que vous devez fournir pour chaque worker que vous définissez.
Exigences
Ce rôle n'a pas d'exigences.
Variables de rôle
Toutes les variables dans ce rôle sont préfixées par celeryw_
.
Valeurs par défaut
celeryw_app_variable
: variable au niveau du module qui fait référence à l'application celery (par défaut : "app");celeryw_bin
: chemin vers le binaire celery (par défaut : "/usr/bin/celery");celeryw_daemon_options
: options supplémentaires à passer telles quelles sur la ligne de commande celery (par défaut : "");celeryw_etc_dir
: chemin vers le répertoire où stocker les fichiers de configuration des workers celery (par défaut : "/etc/celery");celeryw_group
: groupe sous lequel les processus celery doivent s'exécuter (par défaut :{{ansible_user_id}}
);celeryw_log_dir
: chemin vers le répertoire où stocker les fichiers journaux de celery (/var/log/celery
);celeryw_log_filename
: nom à utiliser pour les fichiers journaux. Consultez la documentation de celery pour en savoir plus sur les substitutions de modèle disponibles (par défaut :%n%I.log
);celeryw_log_level
: (par défaut :ERROR
);celeryw_pid_filename
:%n.pid
;celeryw_queues
: "celery";celeryw_run_dir
: chemin où stocker les fichiers PID de celery etc. (par défaut :/var/run/celery
);celeryw_user
: identité sous laquelle les processus celery doivent s'exécuter (par défaut :{{ansible_user_id}}
);celeryw_workers
: la variable qui contient la liste des workers à configurer (par défaut :[]
).
Variables destinées à d'autres rôles
Aucune.
Dépendances
Pour que systemd gère vos workers celery, ce rôle dépend du rôle
cans.systemd-unit-install
.
Exemple de Playbook
Ce premier exemple va configurer des workers pour deux applications, en s'appuyant principalement sur les valeurs par défaut fournies dans le rôle :
- hosts: serveurs
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"
Ce deuxième exemple remplace plus de variables, certaines au niveau global,
dans la section vars
du playbook, d'autres au niveau de la description
du worker :
- hosts: serveurs
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"
Vous pouvez également vous référer au playbook trouvé dans le répertoire test
pour plus d'exemples.
Licence
GPLv2
Informations sur l'auteur
Copyright © 2017, Nicolas CANIART.
ansible-galaxy install cans.celery-worker-setup