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.

À propos du projet

Setup celery workers managed by systemd

Installer
ansible-galaxy install cans.celery-worker-setup
Licence
gpl-2.0
Téléchargements
147
Propriétaire