promovaweb/specsfy

specsfy-specialist-ansible

Criar e revisar playbooks, roles e Vault com Ansible.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/promovaweb/specsfy --skill specsfy-specialist-ansible

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Ansible

Quando usar

  • Acionar quando o projeto tem playbooks, roles, inventory, ansible.cfg

ou requirements.yml/galaxy.yml de collections.

  • Acionar também para revisar se uma automação existente é realmente

idempotente antes de rodá-la contra um ambiente compartilhado.

  • Não acionar para orquestrar serviços já containerizados em cluster; usar

$specsfy-specialist-docker-swarm nesse caso; Ansible aqui entra no provisionamento do host, não na orquestração de serviços do Swarm.

  • Combinar com $specsfy-specialist-delivery-engineering quando a execução

do playbook é uma etapa de um pipeline de deploy.

Fluxo

Apresente o plano, informe o progresso e termine com arquivos alterados e validações executadas. Para texto público, siga o Contrato Editorial Compartilhado aplicável ao projeto consumidor.

  1. Em release ou deploy completo, trabalhar sob

$specsfy-specialist-deploy e usar o SEMVER, a imagem e os manifestos já preparados pela orquestradora.

  1. Confirmar hosts, grupos, ambiente-alvo, método de conexão e escopo

exato de hosts antes de qualquer execução com efeito.

  1. Usar ./deploy check-hosts para apresentar todos os hosts em tabela e

confirmar o módulo ping antes da primeira task remota. Usar ./deploy sync-keys para adicionar somente chaves públicas ao usuário deploy, sem excluir entradas existentes do authorized_keys.

  1. Inspecionar a precedência de variáveis aplicável (ver tabela em

references/standards.md) e as versões fixadas de collections e ansible-core.

  1. Modelar o estado desejado com módulos idempotentes e roles coesas, uma

responsabilidade por role.

  1. Proteger secrets com Ansible Vault ou um provedor externo (lookup em

cofre gerenciado); nunca em texto plano no repositório.

  1. Para execução pelo agente, usar ./deploy run --non-interactive sob a

orquestradora de deploy. Respeitar arquivo, script, Vault IDs e configuração nativa já fornecidos. Sem fonte externa, orientar ./deploy configure-vault no terminal humano. Não pedir ou ler a senha pela conversa. O comando ./deploy run permanece manual, com entrada oculta.

  1. Validar sintaxe, ansible-lint, check mode e diff sem revelar segredos no

output.

  1. Testar a role em ambiente descartável e repetir a mesma execução para

provar que a segunda rodada não relata changed.

  1. Aplicar em produção com serialização (serial), limites (--limit) e

regra de parada (max_fail_percentage/any_errors_fatal) compatíveis com o alcance da mudança.

Padrões

  • Criar um preflight separado para conferir versão do controlador, sistema do

alvo, acesso ao Docker, papel de manager, login no registry, collections, imagem imutável e Docker Secrets antes do play com escrita.

  • Quando a stack usar Cloudflare Tunnel, criar

cloudflare_tunnel_token a partir de vault_cloudflare_tunnel_token com no_log: true. A stack recebe somente o nome do Docker Secret.

  • Copiar manifests versionados para um diretório estável no host, validar cada

um com docker stack config e publicar as stacks em ordem de dependência.

  • Após cada publicação, consultar as réplicas até atingir a convergência ou

encerrar com erro após tentativas limitadas. Não concluir pelo retorno do módulo de deploy isoladamente.

  • Tratar check mode com honestidade: tasks de inspeção podem usar

check_mode: false; tasks que alteram estado devem ser puladas ou suportar a simulação. O preflight precisa permanecer útil sem implantar stacks.

  • Usar FQCN (ansible.builtin.copy, não copy) e módulos declarativos,

evitando shell/command sempre que existir módulo idempotente equivalente.

  • Dar nomes acionáveis a tasks e handlers (name: descreve o efeito, não o

módulo); notificar handler somente quando a task realmente mudar estado.

  • Separar defaults/main.yml (configurável pelo consumidor da role),

vars/main.yml (interno, não deve ser sobrescrito) e secrets (Vault ou lookup externo) em arquivos distintos.

  • Fixar collections em requirements.yml com versão e validar a matriz de

compatibilidade com o ansible-core instalado antes de atualizar.

  • Usar changed_when/failed_when apenas para representar a semântica real

do comando; nunca para silenciar uma falha genuína ou fingir idempotência em um shell/command que sempre relata mudança.

  • Restringir privilégio (become só na task que precisa) e usar `no_log:

true` em qualquer task que manipule segredo, mesmo que o valor pareça inofensivo no log.

  • Não depender da ordem acidental dos hosts ou da execução paralela

padrão quando a task tiver efeito colateral entre hosts (ex.: um serviço que só um host por vez pode reiniciar); usar serial e throttle explicitamente nesses casos.

Antipadrões

  • shell/command sem creates, removes ou changed_when explícito: a

task relata changed toda vez, mesmo quando o estado final é idêntico; isso quebra a leitura de "o que realmente mudou" em uma execução e mascara uma automação não idempotente.

  • Handler notificado incondicionalmente (fora de uma task que só dispara

notify quando changed): reinicia serviço a cada execução, inclusive quando nada mudou, criando indisponibilidade desnecessária.

  • Variável de ambiente (produção/staging) só resolvida por group_vars

genérico sem revisar a precedência real: um -e na linha de comando ou uma host_vars mais específica pode silenciosamente sobrescrever o valor esperado.

  • Vault decriptado e commitado por engano, ou segredo interpolado em um

debug:/log sem no_log: o segredo vaza pelo histórico do Git ou pelo output da execução, mesmo que o arquivo fonte esteja corretamente criptografado.

Validação

  • ansible-playbook --syntax-check, ansible-lint e execução em `--check

--diff` (check mode) antes de qualquer aplicação real, confirmando que o diff não expõe segredo.

  • Duas execuções consecutivas no mesmo alvo: a segunda não deve relatar

nenhuma task como changed; essa é a prova operacional de idempotência, não uma inspeção visual do código.

  • Testes de handlers (o serviço realmente reinicia quando deveria), de

templates (renderização correta por ambiente) e de falha parcial (any_errors_fatal, max_fail_percentage se comportam como esperado quando um host falha no meio do batch).

  • Confirmação explícita do inventory e do --limit usados antes de qualquer

mutação remota; nunca aceitar "rodar em todos os hosts" como default silencioso.

  • Não declarar uma role "idempotente" ou "segura" sem as duas execuções

consecutivas e o check mode acima; a leitura do playbook não substitui a execução real contra um ambiente descartável.

Skills relacionadas

  • $specsfy-specialist-deploy coordena a automação completa do servidor; esta

skill cuida das roles e do playbook Ansible.

  • $specsfy-specialist-versioning mantém SEMVER alinhado à imagem e aos

manifestos transportados pela automação.

  • $specsfy-specialist-docker-swarm quando o host provisionado por Ansible

entra em um cluster Swarm; Ansible prepara o node, Swarm orquestra os serviços dentro dele.

  • $specsfy-specialist-delivery-engineering quando a execução do playbook é

uma etapa de pipeline com promoção entre ambientes.

  • $specsfy-specialist-application-security para revisão de gestão de

segredo, rotação de credencial e hardening do host provisionado.

  • $specsfy-specialist-debian-server para preparar APT, SSH, sysctl, systemd,

firewall e Docker Engine antes da automação da aplicação.

Leia references/standards.md para estrutura de roles, precedência de variáveis, idempotência, segurança operacional e comandos de teste, com fontes oficiais da documentação do Ansible.

同じリポジトリから

関連する Skills

すべての Skills
promovaweb
コミュニティ

specsfy-specialist-react

Projetar, implementar e revisar interfaces React com composição, estado, efeitos, concorrência, acessibilidade, performance e testes. Use quando a tarefa envolve componentes React, hooks, context, forms ou renderização cliente; use também para decidir ownership de estado entre componente, context e biblioteca externa; não use para fronteiras server/client, cache ou routing de framework — aí use a skill Next.js; para a galeria de componentes visuais prontos, use react-ui-components.

導入数
2
GitHub Stars
86
更新日
10月14日
promovaweb
コミュニティ

specsfy-specialist-ui-design

Projetar e revisar interfaces visuais de sistemas, dashboards e aplicações com hierarquia, layout, tokens, componentes, densidade, estados e responsividade. Use para telas, dashboards, design systems, layouts, tabelas, formulários e navegação; combine com UX e acessibilidade quando houver fluxo ou interação.

導入数
2
GitHub Stars
86
更新日
10月14日
promovaweb
コミュニティ

specsfy-specialist-domain-modeling

Descobrir e refinar linguagem ubíqua de domínio, invariantes, eventos, aggregates e bounded contexts a partir de cenários concretos, evitando anemic domain model. Use quando termos, regras ou ownership de dados estiverem ambíguos, dois times usarem a mesma palavra com sentido diferente, ou uma decisão de modelo for necessária; não criar documentação paralela à fonte autorizada; não use para decisão de infraestrutura ou deployment, use $specsfy-specialist-software-architecture para isso.

導入数
2
GitHub Stars
86
更新日
10月14日
promovaweb
コミュニティ

specsfy-specialist-data-modeling

Modelar dados, entidades, relações, ciclos de vida, qualidade e contratos persistentes antes de implementar mudanças.

導入数
2
GitHub Stars
86
更新日
10月14日