Prompts
Prompts são flags e opções predefinidas, específicas de cada tipo de template, que você pode ativar para permitir a personalização em tempo de execução. Diferentemente das Variáveis de Survey, que são campos personalizados criados por você, os prompts são opções internas que correspondem a flags específicas da CLI do Ansible, do Terraform e de outras ferramentas.
Este recurso permite que você:
- Substitua os valores padrão do template em tempo de execução
- Direcione hosts ou recursos específicos
- Controle o comportamento da execução com flags da CLI
- Passe opções de execução por chamadas de API ou agendamentos
Prompts vs. Variáveis de Survey
| Recurso | Prompts | Variáveis de Survey |
|---|---|---|
| Definição | Opções predefinidas específicas do template | Campos personalizados criados por você |
| Exemplos | Ansible: --limit, --tagsTerraform: workspaces, -destroy | Nome do ambiente, número da versão, parâmetros personalizados |
| Configuração | Ativadas por caixas de seleção no template | Adicionadas nas configurações do template com nome e tipo |
| Passadas como | Flags internas da CLI | Ansible: --extra-varsTerraform: -var |
Os Prompts são opções padronizadas incorporadas ao Semaphore para ferramentas específicas, enquanto as Variáveis de Survey são campos personalizados flexíveis que você mesmo define.
Prompts do Ansible
Para templates de playbook do Ansible, você pode ativar prompts para as seguintes opções da CLI:
Limit
Ative o prompt --limit para especificar quais hosts serão o alvo ao executar o playbook.
Equivalente na CLI: ansible-playbook playbook.yml --limit webservers
Casos de uso:
- Executar o playbook em um subconjunto dos hosts do inventário
- Direcionar servidores específicos para o deploy
- Testar alterações em um único host antes de aplicá-las em todos
Exemplo:
- Seu inventário contém 50 servidores web
- Ative o prompt Limit
- Ao executar a tarefa, especifique
web-01.example.compara direcionar apenas esse servidor - Ou especifique
webservers:&productionpara direcionar os servidores web de produção
Tags
Ative o prompt --tags para executar apenas as tasks com tags específicas.
Equivalente na CLI: ansible-playbook playbook.yml --tags deploy,restart
Casos de uso:
- Executar apenas partes específicas de um playbook
- Executar as etapas de deploy sem as tasks de configuração
- Reiniciar serviços rapidamente sem executar o playbook completo
Exemplo:
---
- hosts: all
tasks:
- name: Install packages
apt:
name: nginx
tags: install
- name: Deploy application
copy:
src: app.tar.gz
dest: /opt/app/
tags: deploy
- name: Restart service
service:
name: nginx
state: restarted
tags: restart
Ative o prompt Tags e informe deploy,restart para pular a etapa de instalação.
Skip Tags
Ative o prompt --skip-tags para pular as tasks com tags específicas.
Equivalente na CLI: ansible-playbook playbook.yml --skip-tags testing,debug
Casos de uso:
- Pular tasks opcionais em produção
- Excluir tasks de depuração ou de teste
- Ignorar tasks demoradas quando não forem necessárias
Exemplo: Usando o playbook acima, ative Skip Tags e informe install para pular a instalação de pacotes e executar apenas as tasks de deploy e reinício.
Skip Galaxy install
Ative o prompt para permitir que o usuário pule a etapa ansible-galaxy install de roles e coleções ao executar a tarefa.
Casos de uso:
- Os requirements já estão instalados na imagem do runner
- Economizar tempo em execuções repetidas quando nada mudou no
requirements.yml
Force Galaxy install
Ative o prompt para permitir que o usuário force ansible-galaxy install --force para todos os arquivos de requirements, ignorando o checksum dos requirements que o Semaphore mantém entre as execuções.
Equivalente na CLI: ansible-galaxy role install -r requirements.yml --force
Casos de uso:
- Um arquivo de requirements referencia um branch em vez de uma versão fixa e você precisa do commit mais recente
- Uma instalação anterior deixou roles ou coleções em um estado inconsistente
- Verificar que um playbook funciona a partir de um conjunto limpo de dependências
Consulte Requirements do Galaxy para saber como funcionam os valores padrão no nível do template.
Ativando os prompts do Ansible
Para ativar os prompts do Ansible:
- Acesse Templates de Tarefa e selecione o seu template do Ansible
- Localize a seção Ansible Prompts nas configurações do template
- Marque as caixas de seleção dos prompts desejados:
- ☐ Limit - Ativa a flag
--limit - ☐ Tags - Ativa a flag
--tags - ☐ Skip Tags - Ativa a flag
--skip-tags - ☐ Debug - Ativa a seleção de verbosidade (
-v) - ☐ Skip Galaxy install - Permite pular o
ansible-galaxy install - ☐ Force Galaxy install - Permite forçar o
ansible-galaxy install --force
- ☐ Limit - Ativa a flag
- Salve o template

Quando ativados, esses campos aparecem no formulário de execução da tarefa, nas requisições de API e nas configurações de agendamento.
Prompts do Terraform/OpenTofu
Para templates do Terraform e do OpenTofu, o Semaphore oferece vários prompts internos:
Seleção de workspace
Selecione qual workspace do Terraform será usado na execução da tarefa.
Equivalente na CLI: terraform workspace select staging
Casos de uso:
- Gerenciar vários ambientes (dev, staging, produção)
- Separar os arquivos de state para configurações diferentes
- Testar alterações de infraestrutura de forma isolada
Configuração:
- Crie os workspaces na aba Workspaces do template
- O seletor de workspace aparece automaticamente no formulário da tarefa
- Os usuários escolhem o workspace de destino ao executar as tarefas
Consulte Workspaces do Terraform para a configuração detalhada.
Flag Destroy
Ative a flag -destroy para desmontar a infraestrutura.
Equivalente na CLI: terraform apply -destroy
Casos de uso:
- Limpar ambientes de teste temporários
- Desativar infraestrutura
- Remover recursos específicos
Importante: Esta é uma operação destrutiva. Use com cautela e considere exigir confirmação nos seus fluxos de trabalho.
Flag Migrate State
Ative a flag -migrate-state ao alterar a configuração do backend.
Equivalente na CLI: terraform init -migrate-state
Casos de uso:
- Mover o state para outro backend
- Migrar entre locais de armazenamento
- Atualizar a configuração do backend
Ativando os prompts do Terraform
Os prompts do Terraform estão disponíveis nas configurações do template:
- Acesse Templates de Tarefa e selecione o seu template do Terraform
- Configure os prompts disponíveis nas configurações do template:
- Seleção de workspace (ativada automaticamente se houver workspaces configurados)
- Opção da flag Destroy
- Opção Migrate State
- Salve o template
O formulário da tarefa exibe essas opções ao executar tarefas do Terraform.
Prompts de Bash, PowerShell e Python
Para templates de Bash, PowerShell e Python, os prompts são mínimos, pois a maior parte da personalização é feita por meio das Variáveis de Survey.
Os prompts disponíveis são:
- CLI args
- Branch
Esses tipos de template se beneficiam mais das Variáveis de Survey personalizadas para passar parâmetros aos scripts.
Usando os prompts
Execução manual de tarefas
Ao executar uma tarefa a partir de um template com prompts ativados:
- Clique em Run no template
- Um formulário aparece com os campos dos prompts ativados
- Preencha os valores dos prompts que deseja usar (campos opcionais podem ficar vazios)
- Clique em Run Task
A tarefa é executada com os valores de prompt especificados, passados como flags da CLI.
Chamadas de API
Para passar valores de prompt pela API, inclua-os no payload da requisição:
Exemplo com Ansible:
curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-d '{
"template_id": 123,
"limit": "webservers",
"tags": "deploy,restart",
"skip_tags": "testing"
}' \
https://your-semaphore.com/api/project/1/tasks
Importante: Os prompts precisam estar ativados no template para que os valores sejam aceitos. Se você passar valores de prompt pela API sem ativá-los, esses valores serão ignorados.
Tarefas agendadas
Os agendamentos podem incluir valores de prompt para personalizar a execução automatizada das tarefas:
Exemplo: Agendamento com prompts do Ansible
- Agendamento diário de deploy com
limit: "production"etags: "deploy" - Agendamento semanal de manutenção com
tags: "updates,cleanup"
Configure os valores de prompt nas configurações do agendamento para que cada execução agendada use as opções especificadas.
Integrações e webhooks
As integrações podem extrair valores dos webhooks e mapeá-los para os prompts:
Exemplo: Webhook do GitHub aciona o deploy
- Extrai o nome do branch do webhook
- Mapeia para o prompt Limit para direcionar um ambiente específico
- Faz o deploy apenas nos servidores correspondentes ao ambiente do branch
Consulte Integrações para a configuração de webhooks.
Boas práticas
Ative apenas os prompts necessários
Cada prompt ativado adiciona um campo ao formulário da tarefa. Ative apenas os prompts que os usuários realmente precisarão personalizar.
✅ Bom: Ativar Limit para equipes de operações que precisam direcionar hosts específicos ❌ Ruim: Ativar todos os prompts "por precaução"
Combine com Variáveis de Survey
Use prompts para as opções de CLI específicas da ferramenta e Variáveis de Survey para parâmetros personalizados:
Exemplo de template do Ansible:
- Prompts: Limit (quais hosts), Tags (quais tasks)
- Variáveis de Survey:
app_version(qual versão),enable_rollback(lógica personalizada)
Documente o uso da API
Se os templates forem acionados pela API, documente quais prompts estão disponíveis e o formato esperado:
## API Usage
Enabled prompts:
- `limit`: Host pattern (optional)
- `tags`: Comma-separated tag list (optional)
Example:
POST /api/project/1/tasks
{
"template_id": 123,
"limit": "webservers:&production",
"tags": "deploy"
}
Use Limit para testes seguros
Sempre teste playbooks potencialmente destrutivos primeiro com o prompt Limit:
- Ative o prompt Limit no template
- Primeira execução: especifique
limit: "test-server-01"para testar em um host - Verifique o sucesso
- Segunda execução: especifique
limit: "production"para aplicar em todos os hosts
Valide as combinações de prompts
Algumas combinações de prompts podem não fazer sentido. Adicione documentação ou validação:
- Usar
--tags deploycom--skip-tags deploygera conflito - Especificar workspace e flag destroy ao mesmo tempo exige cautela extra
Casos de uso comuns
Rollout gradual com Limit
Faça o deploy em produção gradualmente usando o Limit do Ansible:
- Execução 1:
limit: "web-01.example.com"- Deploy em um servidor - Monitore em busca de problemas
- Execução 2:
limit: "webservers:&canary"- Deploy nos servidores canary - Valide as métricas
- Execução 3:
limit: "webservers:&production"- Rollout completo
Execução seletiva com Tags
Use Tags para executar apenas partes específicas de um playbook:
Manhã: tags: "deploy" - Deploy da nova versão
Tarde: tags: "config" - Atualização da configuração
Noite: tags: "restart" - Reinício dos serviços com a nova configuração
Gerenciamento de ambientes com workspaces
Use a seleção de workspace do Terraform para gerenciar ambientes:
- Desenvolvimento: Selecione o workspace
dev- recursos mais baratos, iteração mais rápida - Staging: Selecione o workspace
staging- semelhante à produção, para testes - Produção: Selecione o workspace
prod- infraestrutura de produção completa
Limpeza com Destroy
Use o destroy do Terraform para infraestrutura temporária:
- Crie o ambiente de teste: execute com o workspace
test-branch-123 - Execute os testes de integração
- Limpe: execute com a flag destroy ativada e o workspace
test-branch-123
Solução de problemas
Valores de prompt ignorados
Problema: Os valores de prompt são passados, mas não têm efeito
Solução: Verifique se o prompt correspondente está ativado nas configurações do template. Os prompts precisam ser ativados explicitamente.
Não é possível especificar o limit
Problema: O campo Limit não aparece no formulário da tarefa
Solução:
- Edite o template
- Localize a seção "Ansible Prompts"
- Marque a caixa de seleção "Limit"
- Salve o template
Chamadas de API falham com valores de prompt
Problema: Requisições de API com valores de prompt retornam erros
Solução:
- Confirme que os prompts estão ativados no template
- Verifique a formatação do JSON no corpo da requisição
- Verifique se os nomes dos campos correspondem exatamente (
limit, nãohost_limit)
Tags não filtram as tasks
Problema: As tags são especificadas, mas todas as tasks continuam sendo executadas
Solução:
- Verifique se as tasks no playbook têm as tags corretamente definidas
- Verifique se há erros de digitação nos nomes das tags
- Confirme que as tags estão separadas por vírgula sem espaços:
deploy,restart, e nãodeploy, restart
Documentação relacionada
- Variáveis de Survey - Campos personalizados para templates
- Templates do Ansible - Configuração específica do Ansible
- Templates do Terraform - Configuração específica do Terraform
- Agendamentos - Execução automatizada de tarefas
- Integrações - Tarefas acionadas por webhook
- Documentação da API - Referência da API