buluma.supervisor

Rol de Ansible supervisor

Supervisor (gestor de estado de procesos) para Linux.

GitHub Versión Problemas Solicitudes de extracción Descargas
github Versión Problemas PullRequests Rol de Ansible

Ejemplo de Playbook

Este ejemplo se toma de molecule/default/converge.yml y se prueba en cada push, solicitud de extracción y lanzamiento.

---
- name: Convergir
  hosts: all
  become: true

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

  vars:
    supervisor_user: root
    supervisor_password: fizzbuzz

  pre_tasks:
    - name: actualizar la caché de apt (Debian).
      apt: update_cache=true cache_valid_time=600
      when: ansible_os_family == 'Debian'

    # Instalar curl para propósitos de prueba.
    - name: instalar curl para propósitos de prueba.
      package: name=curl state=present

    # Instalar Apache para propósitos de prueba.
    - block:
        - name: instalar Apache (RedHat).
          package: name=httpd state=present
        - name: asegurar que Apache no está corriendo (RedHat).
          service: name=httpd state=stopped enabled=no
      when: ansible_os_family == 'RedHat'

    - block:
        - name: instalar Apache (Debian).
          package: name=apache2 state=present
        - name: asegurar que Apache no está corriendo (Debian).
          service: name=apache2 state=stopped enabled=no
      when: ansible_os_family == 'Debian'

    - name: crear un archivo HTML de prueba para cargar.
      ansible.builtin.copy:
        content: "<html><head><title>Prueba</title></head><body>Prueba.</body></html>"
        dest: /var/www/html/index.html
        force: false
        group: root
        owner: root
        mode: 0644

    # Agregar Apache a supervisor_programs.
    - name: establecer el comando de inicio de Apache (Debian).
      ansible.builtin.set_fact:
        apache_start_command: apache2ctl -DFOREGROUND
      when: ansible_os_family == 'Debian'

    - name: establecer el comando de inicio de Apache (RedHat).
      ansible.builtin.set_fact:
        apache_start_command: httpd -DFOREGROUND
      when: ansible_os_family == 'RedHat'

    - name: agregar Apache a 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: activar manejadores para que el supervisor ejecute todo lo que debe ejecutar.
      ansible.builtin.meta: flush_handlers

  post_tasks:
    - name: esperar a que Apache esté operativo (si es que va a estarlo...).
      ansible.builtin.wait_for:
        port: 80
        delay: 2

    - name: verificar que Apache responde en el puerto 80.
      ansible.builtin.uri:
        url: http://127.0.0.1/
        method: GET
        status_code: 200

    - name: verificar que supervisorctl está disponible.
      command: supervisorctl --help
      args:
        warn: false
      changed_when: false

    - name: validar que supervisorctl funciona a través del socket UNIX predeterminado.
      community.general.supervisorctl:
        name: apache
        state: restarted
        username: "{{ supervisor_user }}"
        password: "{{ supervisor_password }}"
      changed_when: false

    - name: validar que supervisorctl funciona con el socket unix
      command: supervisorctl status
      args:
        warn: false
      changed_when: false

La máquina debe prepararse. En CI esto se hace usando molecule/default/prepare.yml:

---
- name: Preparar
  hosts: all
  gather_facts: no
  become: yes
  serial: 30%

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

También vea una explicación completa y ejemplo sobre cómo usar estos roles.

Variables del rol

Los valores predeterminados para las variables están establecidos en defaults/main.yml:

---
# Instalar una versión específica de Supervisor configurándolo aquí (por ejemplo, '3.3.1').
supervisor_version: ''

# Elegir si usar un script de inicio o configuración de unidad systemd para iniciar
# Supervisor cuando esté instalado y/o después de un inicio del sistema.
supervisor_started: true
supervisor_enabled: true

supervisor_config_path: /etc/supervisor

# Una lista de `programas` que Supervisor controlará. Ejemplo comentado a continuación.
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: 'mi_contraseña_secreta'

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

Requisitos

Estado de roles utilizados

Los siguientes roles se utilizan para preparar un sistema. Puedes preparar tu sistema de otra manera.

Requerimiento GitHub Versión
buluma.bootstrap Ansible Molecule Versión
buluma.pip Ansible Molecule Versión
buluma.core_dependencies Ansible Molecule Versión

Contexto

Este rol es parte de muchos roles compatibles. Mira la documentación de estos roles para más información.

Aquí hay una visión general de los roles relacionados:

dependencias

Compatibilidad

Este rol ha sido probado en estas imágenes de contenedor:

contenedor etiquetas
EL 8
Debian todas
Ubuntu todas
Kali todas

La versión mínima de Ansible requerida es 2.12, se han realizado pruebas en:

  • La versión anterior.
  • La versión actual.
  • La versión de desarrollo.

Si encuentras problemas, por favor, regístralos en GitHub

Historial de cambios

Historial del rol

Licencia

Apache-2.0

Información del autor

Sombra Caminante

Acerca del proyecto

Supervisor (process state manager) for Linux.

Instalar
ansible-galaxy install buluma.supervisor
Licencia
apache-2.0
Descargas
4k
Propietario
DevOps Engineer