robertdebock.service

Rôle Ansible service

Ajoutez des services personnalisés à votre système Linux.

GitHub GitLab Téléchargements Version
github gitlab downloads Version

Exemple de Playbook

Cet exemple est tiré de molecule/default/converge.yml et est testé à chaque poussée, demande de tirage et sortie.

---
- nom: Convergence
  hôtes: tous
  devenir: vrai
  rassembler_faits: vrai

  vars:
    _service_test_command:
      par défaut: /usr/bin/sleep
      Alpine: /bin/sleep
      Debian: /bin/sleep
      Ubuntu-16: /bin/sleep
      Ubuntu-18: /bin/sleep
    service_test_command: "{{ _service_test_command[ansible_distribution ~ '-' ~ ansible_distribution_major_version] | default(_service_test_command[ansible_os_family] | default(_service_test_command['default'])) }}"  # noqa 204 Just long.

  rôles:
    - rôle: robertdebock.service
      service_list:
        - nom: simple-service
          description: Service Simple
          start_command: "{{ service_test_command }} 3600"
          état: démarré
          activé: vrai
        - nom: stopped-service
          description: Service Simple
          start_command: "{{ service_test_command }} 3601"
          état: arrêté
          activé: faux
        - nom: specific-stop-service
          description: Service d'arrêt spécifique
          start_command: "{{ service_test_command }} 1440"
          stop_command: /usr/bin/killall -f "sleep 1440"
        - nom: specific-user-group-service
          description: Service d'utilisateur spécifique
          start_command: "{{ service_test_command }} 28800"
          user_name: root
          group_name: root
        - nom: specific-workingdirectory-service
          description: Service avec répertoire de travail spécifique
          start_command: "{{ service_test_command }} 57600"
          working_directory: /tmp
        - nom: specific-pattern-service
          description: Service avec motif d'état spécifique
          start_command: "{{ service_test_command }} 115200"
          status_pattern: 115200
        - nom: variable-service
          description: Service avec variables d'environnement
          start_command: "{{ service_test_command }} ${time}"
          environment_variables:
            time: 230400
        - nom: pidfile-service
          description: Service avec pidfile
          start_command: "{{ service_test_command }} 460800"
          pidfile: /var/run/pidfile-service.pid
        - nom: environmentfile-service
          description: Service avec fichier d'environnement
          start_command: "{{ service_test_command }} 921600"
          environmentfile: /environmentfile.txt

La machine doit être préparée. Dans CI, cela est fait en utilisant molecule/default/prepare.yml:

---
- nom: Préparer
  hôtes: tous
  devenir: vrai
  rassembler_faits: faux
  série: 30%

  rôles:
    - rôle: robertdebock.bootstrap

  post_tasks:
    - nom: Placer /environmentfile.txt
      ansible.builtin.copy:
        content: "value=variable"
        dest: /environmentfile.txt
        mode: "0644"

Voir aussi une explication complète et un exemple sur la manière d'utiliser ces rôles.

Variables de rôle

Les valeurs par défaut pour les variables sont définies dans defaults/main.yml:

---
# fichier par défaut pour le service

# service_list peut contenir une liste de services à ajouter au système.
# Les éléments obligatoires pour chaque élément sont :
# - nom : Le (court) nom du service, c'est-à-dire "tomcat".
# - description : Un nom un peu plus long, c'est-à-dire "Serveur d'application Tomcat".
# - start_command : La commande pour démarrer le démon,
#   c'est-à-dire "/usr/local/bin/java -jar some.jar"
# Les éléments optionnels sont :
# - stop_command : Par défaut, le programme qui est démarré est trouvé et arrêté.
#   dans le cas où un programme en cours d'exécution est renommé ou étendu (y compris un chemin) durant
#   le démarrage, vous pouvez spécifier une commande d'arrêt personnalisée ici, c'est-à-dire "pkill foo"
# - status_pattern : Quel programme (ou motif) rechercher lors de la recherche de l'
#   état d'un programme, c'est-à-dire "artifactory".
# - type : Comment le programme démarre ; "simple" ou "forking". Simple signifie que le
#   programme fonctionne au premier plan, c'est-à-dire "nc -l 1234". Forking signifie que le
#   programme lui-même fork, c'est-à-dire "nc -l 12345 &"
# - working_directory : Le répertoire dans lequel aller avant de démarrer le service.
# - environment_variables : Une liste pour les variables à définir. par exemple :
#   environment_variables:
#     variable1: valeur1
#     variable2: valeur2
# - after : Démarrer après le service mentionné.
# - restart_mode : Le mode à utiliser, par exemple "always".
# - restart_seconds : Le temps pour permettre à la redémarrage de se terminer.
service_list: []

Exigences

État des rôles utilisés

Les rôles suivants sont utilisés pour préparer un système. Vous pouvez préparer votre système d’une autre manière.

Exigence GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab

Contexte

Ce rôle fait partie de nombreux rôles compatibles. Consultez la documentation de ces rôles pour plus d'informations.

Voici un aperçu des rôles connexes : dépendances

Compatibilité

Ce rôle a été testé sur ces images de conteneurs:

conteneur tags
EL 9
Debian tous
Fedora tous
Ubuntu tous

La version minimale d'Ansible requise est 2.12, des tests ont été effectués sur :

  • La version précédente.
  • La version actuelle.
  • La version de développement.

Si vous rencontrez des problèmes, veuillez les signaler sur GitHub.

Licence

Apache-2.0.

Informations sur l'auteur

robertdebock

Veuillez envisager de me soutenir.

À propos du projet

Add custom services to your Linux system.

Installer
ansible-galaxy install robertdebock.service
Licence
apache-2.0
Téléchargements
351.7k
Propriétaire
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.