ansibleguy.sw_semaphore

Ansible-Semaphore - interfaz moderna para Ansible

Rol de Ansible - Ansible-Semaphore

Rol para aprovisionar Ansible Semaphore en un servidor Linux.

Semaphore es una alternativa ligera a Ansible AWX. (Interfaz web para el uso de Ansible)

Cómprame un café

Estado de prueba de Molecule Estado de prueba de YamlLint Estado de prueba de PyLint Estado de prueba de Ansible-Lint Ansible Galaxy

Registros de Molecule: Corto, Completo

Probado:

  • Debian 11

Instalación

# última versión
ansible-galaxy role install git+https://github.com/ansibleguy/sw_semaphore

# desde galaxy
ansible-galaxy install ansibleguy.sw_semaphore

# o a una ruta de rol personalizada
ansible-galaxy install ansibleguy.sw_semaphore --roles-path ./roles

# instalar dependencias
ansible-galaxy install -r requirements.yml

Uso

¿Quieres una interfaz gráfica simple para Ansible? Consulta mi Interfaz Web de Ansible

Configuración

Configuración mínima:

semaphore:
  nginx:
    domain: 'semaphore.test.ansibleguy.net'

  # opcional:
  # version: '2.8.90'
  # admin:
  #   user: 'admin'
  #   name: 'AnsibleGuy'
  #   email: '[email protected]'

Define la configuración según sea necesario:

semaphore:
  manage:
    webserver: true  # instalar y configurar nginx local con certificado min-ca
    database: true  # instalar y configurar mariadb local
    backup: true  # instalar el servicio para respaldo diario de la base de datos local (si se gestiona la base de datos)
    user: true  # crear el usuario de servicio 'semaphore'
    ansible_cfg: true  # aprovisionar /home/semaphore/.ansible.cfg
    admin: true  # agregar usuario administrador después de la instalación

  version: '2.8.90'  # ver: https://github.com/ansible-semaphore/semaphore/releases

  persistent_requirements: false

  admin:
    user: 'admin'
    email: '[email protected]'
    pwd: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...

  config:  # pares clave-valor de configuración como se establece en 'config.json': https://docs.ansible-semaphore.com/administration-guide/configuration
    concurrency_mode: 'node'
    email_sender: '[email protected]'
    email_host: 'mail.template.ansibleguy.net'
    email_alert: true

    # opcional
    ldap_enable: true
    ldap_needtls: true
    ldap_binddn: 'service_semaphore'
    ldap_bindpassword: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    ldap_server: 'ldap.template.ansibleguy.net:636'
    ldap_searchfilter: '(&(mail=%s)(objectClass=person)(memberOf:=CN=semaphore,OU=Groups,DC=template,DC=ansibleguy,DC=net))'  # iniciar sesión con correo; debe estar en el grupo 'semaphore'

    # opcional => ver: https://docs.ansible-semaphore.com/administration-guide/security#database-encryption
    cookie_hash: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    cookie_encryption: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    access_key_encryption: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...

  requirements:  # requisitos que necesita tu entorno de ejecución
    pip: ['httpx']  # cualquier módulo de python3
    collections: ['community.general']  # cualquier colección de ansible (si persistent_requirements=true)
    roles: []  # cualquier rol de ansible (si persistent_requirements=true)

  ansible_config:  # /home/semaphore/.ansible.cfg => si manage.ansible_cfg=true; ver: https://docs.ansible.com/ansible/latest/reference_appendices/config.html
    defaults:  # sección
      remote_port: 48322
      vault_id_match: 'semaphore'
    diff:
      context: 2

  backup:
    retention_days: 30

Puedes querer usar 'ansible-vault' para encriptar tus contraseñas:

ansible-vault encrypt_string

Ejecución

Ejecuta el playbook:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml

También hay algunas etiquetas útiles disponibles:

  • webserver
  • database
  • config
  • requirements

Para depurar errores, puedes establecer la variable 'debug' en tiempo de ejecución:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes

Funcionalidad

  • Instalación de paquetes

    • Ansible-Semaphore en la versión especificada
    • Python3 PIP
    • Entorno Virtual de Python3
      • Ansible
      • dependencias comunes de Jinja-Filtro de Ansible
    • Git
  • Configuración

    • Servicio: 'semaphore.service'

    • Usuario del servicio: 'semaphore'

    • Configuración predeterminada:

      • Directorios:
        • Venv: '/var/local/lib/semaphore_venv'
        • Configuración: '/etc/semaphore'
        • Respaldo: '/var/backups/semaphore'
        • Tmp/Ejecución: '/tmp/.semaphore'
    • Opciones predeterminadas:

      • Proxy de Nginx => usando ESTE Rol
      • Base de datos MariaDB => usando ESTE Rol
      • Respaldo local diario de la base de datos (si se gestiona la base de datos)
        • Servicio de respaldo: 'semaphore-backup.service'
      • Aprovisionamiento de 'ansible.cfg' para el usuario del servicio
      • Agregar usuario administrador después de la instalación
    • Opciones predeterminadas para no optar:

      • Requisitos persistentes
        • Servicio de actualización: 'semaphore-requirements.service'

Información

  • Nota: este rol actualmente solo admite sistemas basados en Debian

  • Nota: La mayoría de la funcionalidad del rol se puede optar por entrar o salir.

    Para todas las opciones disponibles, consulta la configuración predeterminada ubicada en el archivo principal de defaults!

  • Advertencia: No todas las configuraciones/variables que proporciones serán verificadas por validez. Una mala configuración podría romper el rol!

  • Nota: Si te gustaría usar docker => podrías querer consultar la imagen oficial de docker de Ansible-Semaphore como alternativa!

  • Información: Los requisitos persistentes pueden usarse para acelerar las ejecuciones:

    Instalará y actualizará roles de ansible y colecciones de ansible usando un servicio/external timer.

    Por defecto, semaphore necesitará reinstalarlos EN CADA EJECUCIÓN.

    Para que esto funcione, también tendrás que asegurarte de que los archivos de requisitos no existan en tus repositorios:

    • $REPO/collections/requirements.yml
    • $REPO/roles/requirements.yml
Acerca del proyecto

Ansible role to provision Ansible-Semaphore on a linux server

Instalar
ansible-galaxy install ansibleguy.sw_semaphore
Licencia
gpl-3.0
Descargas
2.1k
Propietario
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg