Pular para conteúdo

Estrutura

ansible/
  bootstrap.yml                playbook rodado da sua máquina, via push, só na primeira vez (ver passo 1)
  site.yml, local.yml         playbooks: local.yml é o entrypoint do ansible-pull
  inventory/                  host único (conexão local, os comandos abaixo rodam de dentro do próprio node), versões pinadas
  roles/
    k3s/                      instala o k3s
    firewalld/                liga o firewall (tag separada, não roda pelo ansible-pull sem supervisão)
    vault_repo/               clona o infrastructure-vault no node (tag vault-repo)
    argocd_bootstrap/         release do Argo CD e o apply do root.yaml (tag argocd-bootstrap)
      files/                  values do Helm que o role consome
    self_pull_timer/          instala e habilita o timer do ansible-pull (tag self-pull-timer, roda por último)
    gate_check_mode_prereq/   task compartilhada: decide se um preview sob --check tem o que comparar
  systemd/                    unit e timer do ansible-pull

argocd/
  root/                       AppProjects "ladesa" e "ladesa-satellites", e a Application "root" (app-of-apps)
  apps/                       uma Application por peça de foundation, e uma por repositório satélite
  foundation/                 manifests dos core services, trazidos como já rodam hoje

scripts/                      freeze-manifest.sh

As Applications foundation-*.yaml já estão mapeadas a partir do que roda de verdade no cluster hoje. Os arquivos app-*.yaml dos repositórios satélite (web, docs, management-service, timetable-generator, authentication-service) ainda não existem aqui. Dependem de cada um desses repositórios ganhar sua própria pasta gitops primeiro, o que é trabalho separado.

flowchart TB
    Ansible[ansible/] --> Roles[roles/: k3s, firewalld, vault_repo, argocd_bootstrap, self_pull_timer, gate_check_mode_prereq]
    ArgoCD[argocd/] --> Root[root/: AppProjects + Application root]
    ArgoCD --> Apps[apps/: uma Application por peça]
    ArgoCD --> Foundation[foundation/: manifests dos core services]
    Root -->|descobre| Apps

bootstrap.yml é a exceção ao resto do Ansible deste repositório: roda via push, da máquina de quem administra contra o node por SSH, em vez de via ansible-pull local. Existe só porque o node não tem ansible-core instalado antes da primeira execução, então nada aqui pode depender do próprio ansible-pull pra se instalar. Não é um role, não entra em site.yml, e nunca roda de novo depois do bootstrap inicial (ver passos 1 e 5 do Bootstrap mínimo na VM).

Por que o histórico deste repositório começa com um commit só

Antes deste repositório ser público, ele acumulou um histórico com várias iterações de segredo cifrado (sempre cifrado, nunca em texto puro, mas ainda assim conteúdo que não faz sentido expor publicamente). Quando o repositório passou de privado pra público, o histórico foi comprimido num único commit inicial, e o repositório antigo foi preservado, privado, até a migração estar validada. Dali pra frente, o histórico volta a crescer normalmente, commit por commit.

flowchart LR
    Privado[repositório privado, histórico com segredo cifrado] --> Squash[squash num commit inicial só]
    Squash --> Publico[repositório público, histórico normal dali pra frente]
    Privado -.->|preservado, privado| Backup[até migração validada]