ansibleguy.sw_semaphore
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)
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'
- Directorios:
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'
- Requisitos persistentes
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
Ansible role to provision Ansible-Semaphore on a linux server
ansible-galaxy install ansibleguy.sw_semaphore