irstea/deployer-worker-recipe

Une recette pour deployer un worker.

Installs: 1 103

Dependents: 0

Suggesters: 0

Security: 0

Type:deployer-recipe

1.0.5 2021-01-18 16:18 UTC

This package is auto-updated.

Last update: 2021-04-18 16:48:45 UTC


README

"Recettes" pour gérer et déployer un service "worker" avec Deployer.

Installation

composer require --dev irstea/deployer-worker-recipe

Utilisation

Il faut inclure les recettes dans le fichier deploy.php du projet en utilisant la directive require.

<?php declare(strict_types=1);

namespace Deployer;

// Inclut la recette deployer standard pour Symfony
require 'recipe/symfony.php';

// Les systèmes cibles utilisent Systemd
require __DIR__ . '/vendor/irstea/deployer-worker-recipe/recipe/systemd.php';

// Nous voulons installer un worker symfony/messenger
require __DIR__ . '/vendor/irstea/deployer-worker-recipe/recipe/messenger.php';

// ... snip ! snip ! ...

// Arrête le worker avant de migrer la base de données
before('database:migrate', 'worker:stop');

Commandes

Ce paquet définit des commandes pour deployer dans le namespace worker:.

Comme toutes les commandes de deployer, elle prenne le nom de l'environnement de déploiment en premier paramètre.

Exemple:

$ vendor/bin/dep worker:status test
➤ Executing task worker:status
deepomics-worker is failed

✔ Ok
CommandeDescriptionbefore/after
worker:startDémarre le worker-
worker:stopArrête le worker ; ne fait rien s'il n'est pas en fonctionnement-
worker:statusAffiche le statut du worker-
worker:restartRedémarre le worker-
worker:service:generateGénère la configuration du serviceafter deploy:vendors-
worker:service:reloadRegénère la configuration du service puis la recharge-
worker:resetArrête le worker, met à jour le service, puis le redémarreafter deploy:symlink, rollback et deploy:failed

Paramètres

Tous les paramètres commençent par worker.. Ils peuvent être écrasés dans votre fichier deploy.php avec set();.

Exemple :

<?php
// ...
set('worker.require_services', 'postgresql.service elasticsearch.service');
// ...
ParamètresDescriptionValeur par défautExemple
Paramètres communs
worker.descriptionDescription du service{{ application }} workermonapp worker
worker.userUtilisateur Unix d'éxecution du worker{{ http_user }}www-data
worker.groupGroupe Unix d'éxecution du workerGroupe principal de worker.userwww-data
worker.working_directoryChemin de travail du worker{{ release_path }}/var/www/monapp/release/25
worker.command_lineLigne de commande complète du worker{{ bin/console }} {{ console_options }} --ansi --verbose {{ worker.console_command }}bin/console --no-interaction --env=prod --no-debug --ansi --verbose ...
Paramètres propres à systemd
worker.require_servicesAutres services requis par le workerpostgresql.servicepostgresql.service elasticsearch.service
worker.use_sudoUtiliser sudo pour appeler systemctl ?Oui si on est pas roottrue
worker.sudo_pathChemin exact la commande sudoDéterminé automatiquement/usr/bin/sudo
worker.sudoCommande sudo{{ worker.sudo_path }} ou rien, selon worker.use_sudo/usr/bin/sudo
worker.systemctl_pathChemin exact la commande systemctlDéterminé automatiquement/bin/systemctl
worker.systemctlCommande systemctl{{ worker.sudo }}{{ worker.systemctl_path }}/usr/bin/sudo /bin/systemctl
worker.service.templateChemin du modèle de fichier servicetemplate/worker.service.tpl dans le paquet/home/user/src/monapp/vendor/irstea/deployer-worker-recipe/template/worker.service.tpl
worker.service.parsedContenu du modèle après expansion des variablesDynamiqueTrop grand pour l'afficher ici
worker.service.nameNom du service du worker{{ application }}-workermonapp-worker
worker.service.unitNom de l'unité du worker{{ worker.service.name }}.servicemonapp-worker.service
worker.service.pathChemin vers le fichier de service{{ release_path}}/{{ bin_dir }}/{{ worker.service.unit }}/var/www/monapp/release/25/bin/monapp-worker.service
Paramètres propres à symfony/messenger
worker.message_limitNombre maximum de message à traiter avant de redémarrer5025
worker.time_limitTemps maximum avant de redémarrer (en secondes)36001800
worker.memory_limitUtilisation mémoire nécessitant de redémarrer2G512M
worker.receiversListe des queues à traiterasyncasync_urgent async
worker.console_commandCommande Symfony à exécuter`messenger:consume --limit={{ worker.message_limit }} --time-limit={{ worker.time_limit }} --memory-limit={{ worker.memory_limit }} {{ worker.receivers }}|messenger:consume --limit=25 --time-limit=1800 --memory-limit=2G async_urgent async`