buluma.supervisor

Rôle Ansible supervisor

Supervisor (gestionnaire d'état de processus) pour Linux.

GitHub Version Problèmes Demande de tirage Téléchargements
github Version Issues PullRequests Ansible Role

Exemple de Playbook

Cet exemple est tiré de molecule/default/converge.yml et est testé à chaque push, demande de tirage et publication.

---
- name: Converger
  hosts: all
  become: true

  environment:
    PATH: "/usr/local/bin:{{ ansible_env.PATH }}"

  vars:
    supervisor_user: root
    supervisor_password: fizzbuzz

  pre_tasks:
    - name: mettre à jour le cache apt (Debian).
      apt: update_cache=true cache_valid_time=600
      when: ansible_os_family == 'Debian'

    # Installer curl pour les tests.
    - name: installer curl à des fins de test.
      package: name=curl state=present

    # Installer Apache pour les tests.
    - block:
        - name: installer Apache (RedHat).
          package: name=httpd state=present
        - name: s'assurer qu'Apache ne fonctionne pas (RedHat).
          service: name=httpd state=stopped enabled=no
      when: ansible_os_family == 'RedHat'

    - block:
        - name: installer Apache (Debian).
          package: name=apache2 state=present
        - name: s'assurer qu'Apache ne fonctionne pas (Debian).
          service: name=apache2 state=stopped enabled=no
      when: ansible_os_family == 'Debian'

    - name: créer un fichier HTML de test à charger.
      ansible.builtin.copy:
        content: "<html><head><title>Test</title></head><body>Test.</body></html>"
        dest: /var/www/html/index.html
        force: false
        group: root
        owner: root
        mode: 0644

    # Ajouter Apache à supervisor_programs.
    - name: définir la commande de démarrage d'Apache (Debian).
      ansible.builtin.set_fact:
        apache_start_command: apache2ctl -DFOREGROUND
      when: ansible_os_family == 'Debian'

    - name: définir la commande de démarrage d'Apache (RedHat).
      ansible.builtin.set_fact:
        apache_start_command: httpd -DFOREGROUND
      when: ansible_os_family == 'RedHat'

    - name: ajouter Apache à supervisor_programs.
      ansible.builtin.set_fact:
        supervisor_programs:
          - name: 'apache'
            command: "{{ apache_start_command }}"
            state: present
            configuration: |
              autostart=true
              autorestart=true
              startretries=1
              startsecs=1
              redirect_stderr=true
              stderr_logfile=/var/log/apache-err.log
              stdout_logfile=/var/log/apache-out.log
              user=root
              killasgroup=true
              stopasgroup=true

  roles:
    - role: buluma.supervisor

  tasks:
    - name: déclencher les gestionnaires pour que le superviseur exécute tout ce qu'il doit exécuter.
      ansible.builtin.meta: flush_handlers

  post_tasks:
    - name: attendre qu'Apache démarre (si cela doit se produire...).
      ansible.builtin.wait_for:
        port: 80
        delay: 2

    - name: vérifier qu'Apache répond sur le port 80.
      ansible.builtin.uri:
        url: http://127.0.0.1/
        method: GET
        status_code: 200

    - name: vérifier que supervisorctl est disponible.
      command: supervisorctl --help
      args:
        warn: false
      changed_when: false

    - name: valider que supervisorctl fonctionne via le socket UNIX par défaut.
      community.general.supervisorctl:
        name: apache
        state: restarted
        username: "{{ supervisor_user }}"
        password: "{{ supervisor_password }}"
      changed_when: false

    - name: valider que supervisorctl fonctionne avec le socket unix
      command: supervisorctl status
      args:
        warn: false
      changed_when: false

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

---
- name: Préparer
  hosts: all
  gather_facts: no
  become: yes
  serial: 30%

  roles:
    - role: buluma.bootstrap
    - role: buluma.pip
    - role: buluma.core_dependencies

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

Variables de rôle

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

---
# Installer une version spécifique de Supervisor en la définissant ici (par exemple '3.3.1').
supervisor_version: ''

# Choisir d'utiliser un script d'initialisation ou une unité systemd pour démarrer
# Supervisor lorsqu'il est installé et/ou après un démarrage du système.
supervisor_started: true
supervisor_enabled: true

supervisor_config_path: /etc/supervisor

# Une liste de `programs` que Supervisor contrôlera. Exemple commenté ci-dessous.
supervisor_programs: []
# - name: 'apache'
#   command: apache2ctl -c "ErrorLog /dev/stdout" -DFOREGROUND
#   state: present
#   configuration: |
#     autostart=true
#     autorestart=true
#     startretries=1
#     startsecs=1
#     redirect_stderr=true
#     stderr_logfile=/var/log/apache-err.log
#     stdout_logfile=/var/log/apache-out.log
#     user=root
#     killasgroup=true
#     stopasgroup=true

supervisor_nodaemon: false

supervisor_log_dir: /var/log/supervisor

supervisor_user: root
supervisor_password: 'mon_mot_de_passe_secret'

supervisor_unix_http_server_enable: true
supervisor_unix_http_server_socket_path: /var/run/supervisor.sock
supervisor_unix_http_server_password_protect: true

supervisor_inet_http_server_enable: false
supervisor_inet_http_server_port: '*:9001'
supervisor_inet_http_server_password_protect: true

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 Version
buluma.bootstrap Ansible Molecule Version
buluma.pip Ansible Molecule Version
buluma.core_dependencies Ansible Molecule Version

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 8
Debian tous
Ubuntu tous
Kali tous

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

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

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

Journal des modifications

Historique de rôle

Licence

Apache-2.0

Informations sur l'auteur

Shadow Walker

À propos du projet

Supervisor (process state manager) for Linux.

Installer
ansible-galaxy install buluma.supervisor
Licence
apache-2.0
Téléchargements
4k
Propriétaire
DevOps Engineer