Cómo instalar Ansible Semaphore en Debian 11

Ansible Semaphore es una interfaz web de código abierto para los playbooks de Ansible. Permite el despliegue mediante la automatización de Ansible a través de un navegador web. Ansible Semaphore está escrito exclusivamente en Go y puede ejecutarse en Linux, Windows y macOS. Ansible Semaphore permite el despliegue mediante Ansible desde un panel de administración web intuitivo y sensible. Siempre puedes retroceder, restaurar la configuración y gestionar entornos, secretos, inventarios y claves de acceso. Te permite ejecutar playbooks mediante programación con registros detallados y notificaciones.

Ansible Semaphore permitirá un despliegue y una configuración seguros. Proporciona un control de acceso que puede utilizarse para gestionar usuarios y permitir ejecutar libros de jugadas específicos.

En este tutorial, instalarás Ansible Semaphore en un servidor Debian 11. Configurarás Ansible Semaphore con la última versión de Ansible, utilizando el servidor PostgreSQL para almacenar los datos de los usuarios, y también utilizando el servidor web Nginx como proxy inverso para las aplicaciones web de Ansible Semaphore.

Requisitos previos

Para completar este tutorial, debes tener los siguientes requisitos:

  • Un servidor Linux que ejecute Debian 11 – Este ejemplo utiliza un servidor Debian con el nombre de host«semáforo«.
  • Un usuario no root con privilegios sudo/root – Este ejemplo utiliza un usuario no root‘bob‘.
  • Un nombre de dominio apuntando a una dirección IP del servidor – Este ejemplo utiliza un nombre de dominio llamado‘ansible.hwdomain.io’.

Instalar dependencias

En primer lugar, instalarás algunas dependencias de paquetes que se utilizarán para instalar el Semáforo Ansible. Instalarás la última versión de Ansible, el servidor de bases de datos PostgreSQL y los servidores web Nginx. Y todos esos paquetes están disponibles por defecto en el repositorio de Debian.

Para empezar, escribe el siguiente comando para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

Una vez actualizado el índice de paquetes, ejecuta el siguiente comando apt para instalar algunas dependencias básicas en tu sistema. Introduce y cuando se te solicite y pulsa ENTER para continuar.

sudo apt install git curl wget software-properties-common

instalar deps

A continuación, también tendrás que instalar algunas dependencias de paquetes que se utilizarán para ejecutar el Ansible Semaphore. Esto incluye la última versión de Ansible, el servidor PostgreSQL y el servidor web Nginx. Y todos esos paquetes están disponibles por defecto en el repositorio de Debian.

Escribe el siguiente comando para instalar Ansible, PostgreSQL y Nginx. Cuando se te solicite, introduce y y pulsa INTRO.

sudo apt install ansible postgresql nginx

instalar ansible nginx postgresql

Con Ansible, PostgreSQL y Nginx instalados, introduce el siguiente comando para verificar el estado de los servicios PostgreSQL y Nginx.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

La siguiente salida confirma que el servidor PostgreSQL está habilitado y se iniciará automáticamente al arrancar el sistema. Además, se ejecuta por defecto una vez finalizada la instalación.

verificar postgresql

A continuación se muestra el comando para comprobar el servicio Nginx.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

El siguiente resultado confirma que el servidor web Nginx está activado y se iniciará automáticamente al arrancar el sistema. Además, se ejecuta por defecto una vez finalizada la instalación.

verificar nginx

Con esto, has instalado las dependencias de los paquetes para Ansible Semaphore, que incluyen la última versión de Ansible, el servidor de base de datos PostgreSQL y el servidor web Nginx.

Configurar la base de datos PostgreSQL

Por defecto, Ansible Semaphore admite varias bases de datos, como MySQL/MariaDB, BoldDB y el servidor PostgreSQL. Tras instalar el servidor PostgreSQL, ahora deberás configurar la base de datos PostgreSQL y el usuario que utilizará Ansible Semaphore.

Accede al shell de PostgreSQL introduciendo el siguiente comando. Una vez conectado, el prompt de PostgreSQL será como ‘postgres=#’.

sudo -u postgres psql

Ahora introduce las siguientes consultas para crear una nueva base de datos PostgreSQL y el usuario que utilizará Ansible Semaphore. En este ejemplo, crearás un nuevo usuario llamado‘semaphore‘ y la base de datos‘semaphoredb‘. Además, asegúrate de cambiar la contraseña en esta consulta.

CREATE USER semaphore WITH PASSWORD 'p4ssw0rdSemaphore';
CREATE DATABASE semaphoredb OWNER semaphore;

crear base de datos y usuario

A continuación, introduce las siguientes consultas para verificar la lista de usuarios y bases de datos de tu servidor PostgreSQL. Si la base de datos está creada, deberías ver la base de datos llamada‘semaphoredb‘ en la lista de bases de datos. Y en cuanto al usuario PostgreSQL, deberías ver al usuario ‘semáforo‘ en la lista de usuarios.

\du
\l

Lista de usuarios del servidor PostgreSQL.

listar usuarios

Lista de bases de datos en el servidor PostgreSQL.

listar base de datos

Ahora que ya has creado la base de datos y el usuario para Ansible Semaphore. Ahora pasa a la sección siguiente para iniciar la instalación de Ansible Semaphore.

Instalación de Ansible Semaphore

Con las dependencias del paquete instaladas y la base de datos PostgreSQL y el usuario creados, a continuación instalarás el paquete Ansible Semaphore. Hay varios paquetes disponibles para varias distribuciones de Linux, visita la página oficial de Ansible Semaphore en GitHub para obtener versiones detalladas.

Introduce el siguiente comando para descargar el archivo del paquete Debian para Ansible Semaphore. En este ejemplo, descargarás la última versión de Ansible Semaphore de la página oficial de Ansible Semaphore en GitHub.

VER=$(curl -s https://api.github.com/repos/ansible-semaphore/semaphore/releases/latest|grep tag_name | cut -d '"' -f 4|sed 's/v//g')
wget -q https://github.com/ansible-semaphore/semaphore/releases/download/v${VER}/semaphore_${VER}_linux_amd64.deb

Una vez descargado el archivo del paquete Debian, deberías ver el archivo«semaphore_2.8.77_linux_amd64.deb» en tu directorio de trabajo actual. Además, durante este escrito, la última versión de Ansible Semaphore es la 2.8.77.

Ahora introduce el siguiente comando dpkg para instalar el archivo del paquete Ansible Semaphore Debian‘semaphore_${VER}_linux_amd64.deb’.

sudo dpkg -i semaphore_${VER}_linux_amd64.deb

instalar semáforo

Una vez instalado Ansible Semaphore, el archivo binario llamado‘semaphore‘ estará disponible en el directorio ‘/usr/bin’.

Ejecuta el siguiente comando para verificar la ruta completa del archivo binario ‘semaphore‘.

which semaphore

A continuación, ejecuta los siguientes comandos ‘semaphore’ para verificar la versión actual de Ansible Semaphore que está instalada en tu sistema y la página de ayuda del comando ‘semaphore’.

semaphore version
semaphore help

verificar semáforo

Con esto, el Ansible Semaphore está instalado. Pero para llegar más lejos, también puedes configurar una terminación bash para la utilidad del comando ‘semáforo‘.

Para ello, en primer lugar, instala el paquete ‘bash-completion‘ en tu sistema Debian mediante el comando apt que aparece a continuación.

sudo apt install bash-completion

Una vez instalado ‘bash-completion‘, abre el archivo de configuración de bash‘~/.bashrc‘ utilizando el siguiente comando del editor nano.

sudo nano ~/.bashrc

Añade las siguientes configuraciones al final de la línea.

if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

source <(semaphore completion bash)

Guarda y cierra el archivo cuando hayas terminado.

A continuación, vuelve a cargar el archivo de configuración ‘~/.bashrc’ y escribe el comando ‘semaphore’ y pulsa el botón TAB para obtener la lista de opciones/parámetros disponibles de la utilidad de comandos Ansible Semaphore.

source ~/.bashrc
semaphore TAB

Cuando esté configurado el autocompletado para Ansible Semaphore, deberías ver la lista de parámetros disponibles del comando como ésta.

semáforo autocompletar

En esta sección, has instalado el paquete Ansible Semaphore desde el archivo de paquetes de Debian. También has configurado un autocompletado para la utilidad del comando«semáforo«. En el siguiente paso, configurarás la instalación de Ansible Semaphore.

Configurar Ansible Semaphore

Tras instalar Ansible Semaphore, ahora establecerás y configurarás tu instalación con PostgreSQL por defecto como servidor de base de datos. Además, generarás la configuración de Ansible Semaphore que se almacenará en el directorio ‘/etc/semaphore‘.

Primero, crea un nuevo directorio de configuración‘/etc/semaphore‘, y mueve tu directorio de trabajo a él. Este directorio se utilizará para almacenar la configuración del Ansible Semaphore.

mkdir -p /etc/semaphore; cd /etc/semaphore

Ahora introduce el siguiente comando‘semaphore’ para establecer y configurar la instalación del Ansible Semaphore.

semaphore setup

Una vez ejecutado el comando, se te pedirán algunas configuraciones del Ansible Semaphore.

  • En primer lugar, selecciona el número 3 para configurar Ansible Semaphore con el servidor de base de datos PostgreSQL. A continuación, introduce los detalles del nombre, usuario y contraseña de la base de datos PostgreSQL.
  • En cuanto a la ruta de Playbook, introduce el nuevo directorio como ‘/opt/playbook’.
  • Para el resto de configuraciones, pulsa ENTER para dejar la configuración por defecto. Puedes configurarlo más tarde, una vez finalizada la instalación.

Imagen

A continuación, también se te pedirá que crees un nuevo usuario administrador para Ansible Semaphore. Introduce tu nombre de usuario, dirección de correo electrónico y contraseña. Una vez finalizada la configuración, deberías recibir una salida similar a ésta. Además, verás el archivo de configuración de Ansible Semaphore generado‘/etc/semaphore/config.json‘.

configurar semáforo

Con esto, ya has configurado la instalación de Ansible Semaphore con el servidor de base de datos PostgreSQL y también has configurado el usuario y la contraseña de administrador para Ansible Semaphore. Además, también has configurado el directorio por defecto de la ruta Playbookj a ‘/opt/semaphore‘.

Ya estás listo para iniciar el Ansible Semaphore. En el siguiente paso, configurarás y ejecutarás Ansible Semaphore mediante Systemd.

Ejecutar Ansible Semaphore con Systemd

En esta sección, crearás un nuevo archivo de unidad systemd que se utilizará para gestionar el p[roceso Ansible Semaphore. Esto te permitirá gestionar fácilmente Ansible Semaphore mediante la utilidad de comandos systemctl.

Crea un nuevo archivo de unidad systemd‘/etc/systemd/system/semaphore.service ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/systemd/system/semaphore.service

Añade las siguientes líneas al archivo.

[Unit]
Description=Semaphore Ansible
Documentation=https://github.com/ansible-semaphore/semaphore
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/semaphore service --config=/etc/semaphore/config.json
SyslogIdentifier=semaphore
Restart=always

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora introduce el siguiente comando para recargar el gestor systemd y aplicar el nuevo archivo de unidad systemd. Con esto, ya puedes iniciar el servicio Ansible Semaphore mediante el comando systemctl.

sudo systemctl daemon-reload

Escribe el siguiente comandosystemctl’ para iniciar y habilitar el serviciosemáforo’. Se ejecutará por defecto en el puerto TCP‘3000‘.

sudo systemctl start semaphore
sudo systemctl enable semaphore

semáforo systemd

A continuación, verifica el servicio «semáforo» para asegurarte de que se está ejecutando y está habilitado.

sudo systemctl status semaphore

Una salida‘habilitado‘ confirma que el Ansible Semaphore se ejecutará automáticamente al iniciar el sistema. Y el estado de Ansible Semáforo es en ejecución.

verificar ansible semaphore

Por último, también puedes acceder al Ansible Semaphore desde tu navegador web. Abre el navegador web y visita la dirección IP del servidor seguida del puerto por defecto 3000 (es decir: http://192.168.5.10:3000/). Cuando Ansible Semaphore se esté ejecutando, deberías ver la página de inicio de sesión de la aplicación web Ansible Semaphore.

inicio de sesión semáforo

Ahora que el Ansible Semaphore se está ejecutando en segundo plano como un servicio systemd y se está ejecutando en el puerto por defecto 3000. En el siguiente paso, configurarás Nginx como proxy inverso para Ansible Semaphore.

Ejecutar Ansible Semaphore con el proxy inverso Nginx

Llegados a este punto, ya has terminado la instalación de Ansible Semaphore y ahora se ejecuta en el puerto 3000 por defecto. En esta sección, configurarás Nginx como proxy inverso para el Ansible Semaphore. Así que antes de empezar, asegúrate de que tienes el nombre de dominio para tu instalación.

Crea un nuevo archivo de bloque del servidor Nginx ‘/etc/nginx/sites-available/semaphore.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/nginx/sites-available/semaphore.conf

Añade las siguientes líneas al archivo y asegúrate de cambiar el parámetro ‘server_name’ por tu nombre de dominio.

upstream semaphore {
    server 127.0.0.1:3000;
  }
server {
listen 80;
server_name ansible.hwdomain.io;
client_max_body_size 0;
chunked_transfer_encoding on;

location / {
proxy_pass http://semaphore/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_buffering off;
proxy_request_buffering off;
}

location /api/ws {
proxy_pass http://semaphore/api/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Origin "";
}
}

Guarda y cierra el archivo cuando hayas terminado.

A continuación, introduce el siguiente comando para activar la configuración del bloque del servidor‘semaphore.conf‘. A continuación, verifica la configuración de Nginx para asegurarte de que tienes los archivos de configuración adecuados y correctos. Cuando la operación se realice correctamente, deberías ver una salida como‘syntax is ok – test is successful’.

sudo ln -s /etc/nginx/sites-available/semaphore.conf /etc/nginx/sites-enabled
sudo nginx -t

Por último, reinicia el servicio Nginx para aplicar los cambios. Ahora la instalación de Ansible Semaphore es accesible desde tu nombre de dominio.

sudo systemctl restart nginx

configurar semáforo nginx

Configurar UFW

En este ejemplo, instalarás y activarás el cortafuegos en tu sistema Debian mediante UFW. Utilizarás UFW para abrir los servicios SSH, HTTP y HTTPS.

En primer lugar, instala el paquete UFW mediante el siguiente comando apt. Introdúcelo y pulsa ENTER para continuar.

sudo apt install ufw

instalar ufw

A continuación, ejecuta el siguiente comando para añadir las aplicaciones OpenSSH y ‘Nginx Full’ al UFW. La aplicación OpenSSH abrirá el puerto SSH 22 por defecto y la aplicación ‘Nginx Full’ abrirá los puertos HTTP y HTTPS.

sudo ufw allow OpenSSH
sudo ufw allow "Nginx Full"

Ahora ejecuta el siguiente comando para iniciar y habilitar la UFW. Introduce y y pulsa ENTER para confirmar.

sudo ufw enable

activar ufw

Por último, verifica el estado de la UFW utilizando el siguiente comando. Deberías ver la UFW con el ‘Estado: Activo’; las aplicaciones OpenSSH y ‘Nginx Full’ están añadidas y disponibles en la lista de reglas.

sudo ufw status

Estado de ufw

Asegurar Ansible Semaphore con Letsencrypt

Tras configurar UFW, ahora configurarás y asegurarás Ansible Semaphore con certificados SSL/TLS mediante Certbot y Letsencrypt. Instalarás Certbot con el plugin Certbot-Nginx, y luego generarás certificados SSL/TLS desde letsencrypt.

Introduce el siguiente comando para instalar Certbot y el plugin Certbot-Nginx. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo apt install certbot python3-certbot-nginx

instalar certbot

Una vez instalado Certbot, ejecuta el siguiente comando para generar certificados SSL para tu nombre de dominio y asegurar la instalación de Ansible Semaphore. Asegúrate de cambiar la dirección de correo electrónico y el nombre de dominio en este comando.

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --email [email protected] -d ansible.hwdomain.io

Cuando finalice el proceso, tus certificados SSL/TLS se generarán en el directorio ‘/etc/letsencrypt/live/yourdomain.com/’. Además, ahora se puede acceder al Ansible Semaphore a través de una conexión HTTPS segura y redirigirá automáticamente cualquier petición HTTP a la conexión HTTPS segura.

Ahora abre tu navegador web y visita el nombre de dominio de tu instalación de Ansible Semaphore (es decir: https://ansible.hwdomain.io/auth/login). Cuando tengas configurado correctamente Nginx y el SSL Letsencrypt esté funcionando, deberías ver la página de inicio de sesión de Ansible Semaphore.

Introduce tu usuario y contraseña de administrador de Ansible Semaphore y haz clic en INICIAR SESIÓN para confirmar.

semáforo de acceso

Si lo consigues, se te pedirá que crees el primer proyecto para tu instalación. Introduce el nombre del proyecto y haz clic en CREAR.

crear el primer proyecto

Una vez creado el primer proyecto, deberías ver el panel de administración de Ansible Semaphore.

tablero semáforo

Conclusión

A lo largo de este tutorial, has instalado y configurado Ansible Semaphore en un servidor Debian 11 con PostgreSQL como servidor de base de datos y Nginx como proxy inverso para Ansible Semaphore. Has aprendido el uso básico de PostgreSQL para crear una base de datos y un usuario y la configuración básica del bloque de servidor Nginx para el proxy inverso.

Además, también has asegurado la instalación del Ansible Semaphore mediante UFW y certificados SSL/TLS generados desde Letsencrypt.

Con esto en mente, ya puedes integrar tu playbook de Ansible en Ansible Semaphore a través del panel de administración web. También puedes configurar varios sistemas de notificación por correo electrónico, Slack y muchos más. Para obtener información detallada, visita la documentación oficial de la aplicación Ansible Semaphore.

También te podría gustar...