4 minutos
Ansible - Semaphore UI
Semaphore UI
Semaphore é uma interface moderna para execução de instruções do Ansible (role, playbook, etc), pode ser considerado uma alternativa ao AWX para o homelab.
Estrutura
O diretório principal utilizado para os testes é /tmp/semaphore se não quiser perder as informações a cada reboot, utilizar outro diretório.
Informações Adicionais
Informações referente ao ambiente de testes utilizado.
Testes com a versão:
- SO: Debian GNU/Linux 12 (bookworm) e Armbian 23.8.1 (bullseye)
- Ansible: 2.9
- Semaphore UI: 2.9.37
Configuração
Criando o ambiente.
- Debian:
mkdir -p /tmp/semaphore - Acessar o diretório:
cd /tmp/semaphore
- Debian:
Download para instalação:
wget -c https://github.com/ansible-semaphore/semaphore/releases/download/v2.9.37/semaphore_2.9.37_linux_amd64.debInstalar o Semaphore:
sudo dpkg -i semaphore_2.9.37_linux_amd64.debConfiguração do Semaphore:
semaphore setup- Obs.: As informações abaixo foram preenchidas para os testes, alterar caso tenha necessidade.
- É necessário responder algumas perguntas, abaixo um exemplo.
What database to use:
- Selecionar 2 - BoltDB é um banco de dados local
db filename (default /tmp/semaphore/database.boltdb):
- Enter para selecionar o default
Playbook path (default /tmp/semaphore):
- Enter para selecionar o default
Public URL (optional, example: https://example.com/semaphore):
- Enter para selecionar o default, não será utilizado nesse post
Enable email alerts? (yes/no) (default no):
- Enter para selecionar o default, não será utilizado nesse post
Enable telegram alerts? (yes/no) (default no):
- Enter para selecionar o default, não será utilizado nesse post
Enable slack alerts? (yes/no) (default no):
- Enter para selecionar o default, não será utilizado nesse post
Enable LDAP authentication? (yes/no) (default no):
- Enter para selecionar o default, não será utilizado nesse post
Config output directory (default /tmp/semaphore):
- Enter para selecionar o default
Preencher as informações abaixo conforme sua necessidade, todas as informações devem ser preenchidas.
- Username: semaphore
- Email: semaphore@localhost
- Your name: semaphore
- Password: semaphore
Se tudo correr bem, deverá aparecer as informações abaixo, conforme as configurações feitas anteriormente.
You are all setup semaphore! Re-launch this program pointing to the configuration file
./semaphore server –config /tmp/semaphore/config.json
To run as daemon:
nohup ./semaphore server –config /tmp/semaphore/config.json &
Executar o semaphore:
nohup semaphore server --config=./config.json &- Executar o comando dentro da pasta /tmp/semaphore.
Acessar Semaphore UI
- localhost:3000 (Utilizando o navegador da sua preferência)
Criar chaves ssh
- Executar o comando dentro da pasta /tmp/semaphore
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/seu_usuario/.ssh/id_rsa): semaphore_rsa
Enter passphrase (empty for no passphrase): Enter para deixar sem senha
Enter same passphrase again: Enter para deixar sem senha
Your identification has been saved in semaphore_rsa
Your public key has been saved in semaphore_rsa.pub
- Ao colocar semaphore_rsa, será gerado duas chaves, semaphore_rsa e semaphore_rsa.pub no diretório que foi executado o comando, no caso em /tmp/semaphore
Copiando chave publica (semaphore_rsa.pub) ssh para o host que será configurado.
ssh-copy-id -i semaphore_rsa.pub seu_usuario@ip_host
Configurar o Semaphore.
Playbook
nginx.ymlutilizado nos testes em /tmp/semaphore, que será citado na instrução Tasks TemplateCódigo de exemplo.
- name: Semaphore Homelab hosts: semaphore_nodes become: true tasks: - name: Instalando Nginx ansible.builtin.apt: name: nginx state: latest update_cache: true
Configurar um nome para o Projeto.
- Preencher conforme a necessidade.

- Preencher conforme a necessidade.
Acessar o menu Key Store e criar duas chaves, uma para o ssh e outra para o password par utilizar com sudo na execução do playbook pelo semaphore.
Key Store SSH
- No campo Private Key, colocar o conteúdo do arquivo semaphore_rsa

- No campo Private Key, colocar o conteúdo do arquivo semaphore_rsa
Key Store Login with password
- Preencher o campo password com a senha de acesso ao host

- Preencher o campo password com a senha de acesso ao host
Environment
- Preencher o Extra Variables com alguma extra_vars

- Preencher o Extra Variables com alguma extra_vars
Repositories
- Preencher o campo URL or Path e Acces Key com a Key gerada somente com a senha.
- O campo URL or Path colocar /tmp/semaphore onde estará o playbook utilizado para o teste.

Inventory
- Configurar o inventory com as informações sobre o host que será configurado.

- Configurar o inventory com as informações sobre o host que será configurado.
Tasks Template
- Configurar o template com informações do que deverá ser executado.
- Em Playbook Filename é o playbook a ser executado que está na pasta /tmp/semaphore configurada em repository.

Tasks Template Execução
- Acessar Tasks Template e clicar em Run ao lado direito da tela.

- Acessar Tasks Template e clicar em Run ao lado direito da tela.