robertdebock.service
Rol de Ansible servicio
Agrega servicios personalizados a tu sistema Linux.
GitHub | GitLab | Descargas | Versión |
---|---|---|---|
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
- paquetes pip listados en requirements.txt.
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 |
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:
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
Información del Autor
Por favor, considera patrocinarme.
ansible-galaxy install robertdebock.service