Aller au contenu principal

Concepts clés

Semaphore repose sur une idée centrale : un modèle de tâche rassemble tout ce dont une exécution a besoin, et l'exécuter produit une tâche. Apprendre où chaque partie de ce « tout » se configure constitue l'essentiel de l'apprentissage du produit.

Le modèle objet

Les projets contiennent tout

Un projet est l'unité d'isolation. Dépôts, clés, inventaires, groupes de variables, modèles et historique des tâches appartiennent à un seul projet, tout comme les membres de l'équipe. Deux projets ne partagent rien, hormis le serveur et ses utilisateurs, ce qui fait du projet la bonne frontière entre équipes, environnements ou clients.

Les ressources décrivent les entrées

Il existe quatre types de ressources, afin qu'une même valeur puisse être réutilisée par de nombreux modèles et modifiée à un seul endroit :

  • Un dépôt est l'endroit où vit le playbook ou le script.
  • Le magasin de clés contient les clés SSH, les identifiants et les jetons utilisés pour accéder au dépôt et aux hôtes cibles.
  • Un inventaire liste les hôtes visés par une exécution et la manière de s'y connecter.
  • Un groupe de variables transporte variables et secrets dans l'environnement de l'exécution.

Les modèles définissent l'exécution

Un modèle de tâche sélectionne une application (Ansible, Terraform, un script), un dépôt, le playbook ou point d'entrée qu'il contient, ainsi que l'inventaire, le groupe de variables et les clés à utiliser. Il détermine aussi ce que la personne qui démarre la tâche peut modifier : les variables de questionnaire transforment un modèle en formulaire, et les invites permettent à un utilisateur de remplacer la branche, l'inventaire ou les arguments supplémentaires.

Les tâches sont les exécutions

Démarrer un modèle crée une tâche. La tâche possède son propre journal, son statut, sa durée et le nom de la personne qui l'a lancée, et cet enregistrement subsiste après la fin de l'exécution. Les tâches démarrent depuis l'interface, depuis un planning, depuis un webhook d'intégration, depuis l' API, ou depuis un autre modèle dans un workflow.

Glossaire

TermeSignification
Clé d'accèsUne entrée du magasin de clés : une clé SSH, un couple identifiant/mot de passe, ou un jeton. Sa partie secrète est chiffrée dans la base de données.
AlerteUne notification envoyée lorsqu'une tâche atteint un certain état. Les canaux sont configurés sur le serveur, puis activés par projet et par modèle.
AppL'outil qu'exécute un modèle : Ansible, Terraform, OpenTofu, Terragrunt, Bash, PowerShell ou Python.
Modèle de buildUn type de modèle qui produit un artefact versionné ; chaque exécution incrémente la version.
Modèle de déploiementUn type de modèle lié à un modèle de build ; le démarrer demande quelle version de build livrer.
ExécuteurLa manière dont un runner lance un travail : comme processus local, dans un conteneur Docker, ou dans un Pod Kubernetes.
IntégrationUn webhook entrant qui démarre un modèle lorsqu'un système externe l'appelle.
InventaireLes hôtes visés par une tâche, sous forme de texte statique, de fichier du dépôt, ou de script d'inventaire dynamique.
Magasin de clésLa collection de clés d'accès propre à un projet.
ProjetLe conteneur de premier niveau : ressources, modèles, historique des tâches et membres de l'équipe.
RôleCe qu'un membre peut faire au sein d'un projet. Les rôles intégrés sont Owner, Manager, Task Runner et Guest.
RunnerUn processus distinct qui exécute les tâches à la place du serveur.
PlanningUne expression cron qui démarre un modèle sans intervention humaine.
Stockage de secretsUn système externe tel que HashiCorp Vault qui conserve les valeurs secrètes à la place de la base de données Semaphore.
Variable de questionnaireUn champ défini par le modèle et renseigné par l'utilisateur au démarrage d'une tâche ; il devient une variable de l'exécution.
TâcheUne exécution d'un modèle, avec son journal, son statut et son auteur.
Modèle de tâcheLa définition réutilisable de ce qu'il faut exécuter et avec quoi. Souvent simplement « modèle ».
Groupe de variablesUn ensemble nommé de variables et de secrets transmis à l'exécution. Appelé Environment dans les versions antérieures et dans l'API.
VueUn onglet qui regroupe un sous-ensemble des modèles d'un projet dans la liste des modèles.
WorkflowUn graphe de modèles exécutés en séquence avec branchements, approbations et délais. Une fonctionnalité Pro.

Et ensuite