Introdução
O Ansible Semaphore é uma interface web open source e leve para gerenciamento de playbooks Ansible, oferecendo controle de acesso, histórico de execuções, agendamento de tarefas e integração com repositórios Git. É uma alternativa mais simples ao AWX/Tower, ideal para equipes de TI industrial que precisam de uma camada visual sobre a automação sem a complexidade operacional de uma stack Kubernetes. Neste tutorial, vamos instalar o Semaphore no Ubuntu Linux utilizando Docker, a forma mais rápida e recomendada de colocá-lo em produção.
Pré-requisitos
- Ubuntu Linux 20.04 LTS ou superior.
- Usuário com privilégios sudo.
- Docker e Docker Compose instalados.
- Pelo menos 1 vCPU e 1 GB de RAM disponíveis (recomendado 2 GB ou mais).
Instalando o Docker (caso ainda não tenha)
sudo apt update
sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -yPasso 1: Preparando o ambiente
Crie um diretório dedicado para os dados persistentes do Semaphore:
mkdir -p ~/semaphore/mysql ~/semaphore/data
cd ~/semaphorePasso 2: Criando o docker-compose.yml
O Semaphore requer um banco de dados (MySQL, PostgreSQL ou BoltDB). O exemplo abaixo usa MySQL:
version: "3"
services:
mysql:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: senha_root_segura
MYSQL_DATABASE: semaphore
MYSQL_USER: semaphore
MYSQL_PASSWORD: senha_semaphore_segura
volumes:
- ./mysql:/var/lib/mysql
semaphore:
image: semaphoreui/semaphore:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: senha_semaphore_segura
SEMAPHORE_DB_HOST: mysql
SEMAPHORE_DB_PORT: 3306
SEMAPHORE_DB: semaphore
SEMAPHORE_DB_DIALECT: mysql
SEMAPHORE_ADMIN: admin
SEMAPHORE_ADMIN_PASSWORD: senha_admin_segura
SEMAPHORE_ADMIN_NAME: Administrador
SEMAPHORE_ADMIN_EMAIL: [email protected]
depends_on:
- mysqlPasso 3: Subindo os containers
sudo docker compose up -dVerifique se os containers estão rodando corretamente:
sudo docker compose ps
sudo docker compose logs -f semaphorePasso 4: Acessando a interface web
Abra o navegador e acesse:
http://<IP_DO_SERVIDOR>:3000Faça login com o usuário e senha definidos nas variáveis SEMAPHORE_ADMIN e SEMAPHORE_ADMIN_PASSWORD.
Passo 5: Configurando seu primeiro projeto
- No painel, clique em New Project e dê um nome, por exemplo, "Automacao Chao de Fabrica".
- Em Key Store, cadastre a chave SSH privada usada para acessar os hosts gerenciados.
- Em Repositories, aponte para o repositório Git onde seus playbooks estão versionados.
- Em Inventory, cole ou importe seu arquivo
hosts.ini. - Em Templates, crie uma nova task apontando para o playbook desejado, por exemplo
site.yml.
Boas práticas
- Utilize HTTPS com um proxy reverso (Nginx ou Traefik) na frente do Semaphore em produção.
- Faça backup regular do volume do banco de dados (
./mysql) e do diretório de dados do Semaphore. - Restrinja o acesso à interface web via firewall ou VPN, já que ela controla execução remota de comandos.
- Utilize variáveis de ambiente e o Vault interno do Semaphore para armazenar credenciais sensíveis.
- Configure permissões de usuário por projeto para equipes com diferentes níveis de acesso.