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 integradas que correspondem a flags de CLI específicas do Ansible, Terraform e outras ferramentas.
Esse recurso permite:
- Substituir os padrões do template em tempo de execução
- Direcionar hosts ou recursos específicos
- Controlar o comportamento da execução com flags de CLI
- Passar 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 de CLI integradas | Ansible: --extra-varsTerraform: -var |
Os Prompts são opções padronizadas integradas 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 de 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 de hosts do inventory
- Direcionar servidores específicos para o deploy
- Testar alterações em um único host antes de aplicá-las em todos
Exemplo:
- Seu inventory 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 tarefas 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 tarefas 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 tarefas com tags específicas.
Equivalente na CLI: ansible-playbook playbook.yml --skip-tags testing,debug
Casos de uso:
- Pular tarefas opcionais em produção
- Excluir tarefas de depuração ou de teste
- Ignorar tarefas 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 tarefas de deploy e reinicialização.
Ativando os prompts do Ansible
Para ativar os prompts do Ansible:
- Vá em 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 que você deseja:
- ☐ Limit - Ativa a flag
--limit - ☐ Tags - Ativa a flag
--tags - ☐ Skip Tags - Ativa a flag
--skip-tags
- ☐ 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 integrados:
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 arquivos de estado 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 estado para um backend diferente
- 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:
- Vá em 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 do Bash, PowerShell e Python
Para templates do Bash, PowerShell e Python, os prompts são mínimos, pois a maior parte da personalização é feita por meio de Variáveis de Survey.
Os prompts disponíveis são:
- CLI args
- Branch
Esses tipos de template se beneficiam mais de 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 (os campos opcionais podem ficar vazios)
- Clique em Run Task
A tarefa é executada com os valores de prompt especificados, passados como flags de 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 de tarefas:
Exemplo: Agendamento com prompts do Ansible
- Agendamento de deploy diário com
limit: "production"etags: "deploy" - Agendamento de manutenção semanal com
tags: "updates,cleanup"
Configure os valores dos prompts 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 de webhooks e mapeá-los para prompts:
Exemplo: Um webhook do GitHub aciona o deploy
- Extraia o nome do branch do webhook
- Mapeie-o para o prompt Limit para direcionar um ambiente específico
- Faça 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 tarefas)
- 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 único 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 deployjunto com--skip-tags deploygera conflito - Especificar workspace e a flag destroy ao mesmo tempo exige cautela extra
Casos de uso comuns
Implantação 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 possíveis problemas
- Execução 2:
limit: "webservers:&canary"- Deploy nos servidores canary - Valide as métricas
- Execução 3:
limit: "webservers:&production"- Implantação completa
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" - Reinicialização 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:
- Certifique-se de que os prompts estão ativados no template
- Verifique a formatação do JSON no corpo da requisição
- Confira se os nomes dos campos correspondem exatamente (
limit, e nãohost_limit)