robertdebock.service

Rol de Ansible servicio

Agrega servicios personalizados a tu sistema Linux.

GitHub GitLab Descargas Versión
github gitlab downloads Version

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
  gather_facts: true

  vars:
    _service_test_command:
      default: /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 Solo es largo.

  roles:
    - role: robertdebock.service
      service_list:
        - name: simple-service
          description: Servicio Simple
          start_command: "{{ service_test_command }} 3600"
          state: started
          enabled: true
        - name: stopped-service
          description: Servicio Simple
          start_command: "{{ service_test_command }} 3601"
          state: stopped
          enabled: false
        - name: specific-stop-service
          description: Servicio de Parada Específica
          start_command: "{{ service_test_command }} 1440"
          stop_command: /usr/bin/killall -f "sleep 1440"
        - name: specific-user-group-service
          description: Servicio de Grupo de Usuario Específico
          start_command: "{{ service_test_command }} 28800"
          user_name: root
          group_name: root
        - name: specific-workingdirectory-service
          description: Servicio con Directorio de Trabajo Específico
          start_command: "{{ service_test_command }} 57600"
          working_directory: /tmp
        - name: specific-pattern-service
          description: Servicio con Patrón de Estado Específico
          start_command: "{{ service_test_command }} 115200"
          status_pattern: 115200
        - name: variable-service
          description: Servicio con variables de entorno
          start_command: "{{ service_test_command }} ${time}"
          environment_variables:
            time: 230400
        - name: pidfile-service
          description: Servicio con archivo pid
          start_command: "{{ service_test_command }} 460800"
          pidfile: /var/run/pidfile-service.pid
        - name: environmentfile-service
          description: Servicio con archivo de entorno
          start_command: "{{ service_test_command }} 921600"
          environmentfile: /environmentfile.txt

La máquina necesita ser preparada. En CI esto se hace usando molecule/default/prepare.yml:

---
- name: Preparar
  hosts: all
  become: true
  gather_facts: false
  serial: 30%

  roles:
    - role: robertdebock.bootstrap

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

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

Variables de Rol

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

---
# archivo predeterminado para el servicio

# service_list puede contener una lista de servicios para agregar al sistema.
# Los elementos obligatorios para cada item son:
# - name: El nombre (corto) del servicio, es decir, "tomcat".
# - description: Un nombre un poco más largo, es decir, "servidor de aplicaciones Tomcat".
# - start_command: El comando para iniciar el daemon,
#   es decir, "/usr/local/bin/java -jar some.jar"
# Los elementos opcionales son:
# - stop_command: Por defecto, el programa que se inició se encuentra y se detiene.
#   en caso de que un programa en ejecución se cambie de nombre o expanda (incluyendo un camino) durante
#   el arranque, puedes especificar un comando de parada personalizado aquí, es decir, "pkill foo"
# - status_pattern: Qué programa (o patrón) buscar al encontrar el
#   estado de un programa, es decir, "artifactory".
# - type: Cómo se inicia el programa; "simple" o "forking". Simple significa que el
#   programa se ejecuta en primer plano, es decir, "nc -l 1234". Forking significa que el
#   programa mismo fork, es decir, "nc -l 12345 &"
# - working_directory: El directorio al que se cd antes de iniciar el servicio.
# - environment_variables: Una lista de variables a establecer. por ejemplo:
#   environment_variables:
#     variable1: valor1
#     variable2: valor2
# - after: Iniciar después del servicio mencionado.
# - restart_mode: El modo a utilizar, por ejemplo, "siempre".
# - restart_seconds: El tiempo para permitir que la reiniciación finalice.
service_list: []

Requisitos

Estado de los roles usados

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

Requerimiento GitHub GitLab
robertdebock.bootstrap Estado de Construcción GitHub Estado de Construcción GitLab

Contexto

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

Aquí hay un resumen de roles relacionados: dependencias

Compatibilidad

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

contenedor etiquetas
EL 9
Debian todas
Fedora todas
Ubuntu 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, regístralos en GitHub.

Licencia

Apache-2.0.

Información del Autor

robertdebock

Por favor, considera patrocinarme.

Acerca del proyecto

Add custom services to your Linux system.

Instalar
ansible-galaxy install robertdebock.service
Licencia
apache-2.0
Descargas
351.7k
Propietario
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.