Repositórios git
Manter formulários, ficheiros de variáveis, configuração e playbooks em git
Para administradores que mantêm formulários, configuração e playbooks em git: o que um repositório pode conter e que origem prevalece.
Para que serve um repositório
Um repositório é um remoto git que o AnsibleForms clona e mantém atualizado, e cada um tem interruptores que dizem o que contém:
| Interruptor | O que o AnsibleForms lê dele | Pasta no repositório |
|---|---|---|
| Usar para a configuração ? | config.yaml com as categorias, funções e constantes | a raiz |
| Usar para formulários ? | Os ficheiros de formulários, que o designer também guarda de volta nele, e os seus ficheiros de variáveis | forms, ou a raiz; ficheiros de variáveis em vars |
| Usar para playbooks ? | Os playbooks Ansible que as tarefas executam | playbooks, ou a raiz |
| Usar para workflows? | Os ficheiros de workflow, que o designer também guarda de volta nele | qualquer pasta |
| Usar para inventários? | Um inventário, com o nome do repositório, que um formulário indica com inventory: | a raiz: inventory.yaml, group_vars, host_vars |
Sem a subpasta, usa-se a raiz do repositório. Um só repositório pode conter tudo; se os separar, só Usar para formulários, Usar para workflows e Usar para inventários podem estar ligados em vários: os outros interruptores ficam com o primeiro repositório e registam um aviso.
Cada repositório é clonado numa subpasta com o seu nome, dentro de REPO_PATH.
Um repositório para tudo
Um único repositório pode conter formulários, ficheiros de variáveis, configuração e playbooks, com os interruptores ligados e uma subpasta por tipo.
forms-repo/
├── config.yaml # categories, roles and constants
├── forms/ # form files (*.yaml)
├── playbooks/ # Ansible playbooks and roles
└── vars/ # vars files used by forms
Um repositório por finalidade
Repositórios separados permitem que cada equipa seja dona da sua parte, com um interruptor cada e os ficheiros diretamente na raiz.
| Repositório | Interruptor | Conteúdo na raiz |
|---|---|---|
af-config | Usar para a configuração ? | config.yaml |
af-forms-network, af-forms-storage | Usar para formulários ? | Os ficheiros de formulários de cada equipa, juntados numa só lista |
af-playbooks | Usar para playbooks ? | Os playbooks e as roles |
Só os formulários podem vir de vários repositórios; a configuração e os playbooks vêm cada um de um só. Os ficheiros de variáveis vêm da pasta vars do primeiro repositório de formulários que tenha uma.
Como os repositórios se combinam com as pastas locais
O conteúdo de um repositório substitui a pasta local correspondente; esta tabela resume de onde é lido cada tipo de ficheiro.
| Conteúdo | Lido de, prevalece a primeira correspondência |
|---|---|
| Configuração | 1. a base de dados, quando a configuração é guardada lá (ENABLE_CONFIG_IN_DATABASE) 2. o config.yaml do repositório Usar para a configuração 3. o config.yaml de um repositório Usar para formulários, quando nenhum repositório é usado para a configuração 4. CONFIG_PATH |
| Formulários | Todos os repositórios Usar para formulários mais FORMS_STAGING_PATH; FORMS_FOLDER_PATH só quando não há nenhum |
| Playbooks | O repositório Usar para playbooks, caso contrário ANSIBLE_PATH |
| Ficheiros de variáveis | A pasta vars do primeiro repositório Usar para formulários que tenha uma, caso contrário VARS_FILES_PATH |
| Workflows | Todos os repositórios Usar para workflows mais WORKFLOWS_PATH, em conjunto |
Os formulários de vários repositórios são juntados numa só lista. Quando dois deles contêm um formulário com o mesmo nome, fica o primeiro carregado e é registado o aviso skipping duplicate form <name>, por isso mantenha os nomes dos formulários únicos entre repositórios.
Resolução de problemas
A maioria dos problemas aparece na coluna Pull e em Mostrar saída do último pull (ou Mostrar saída do último push), que contêm a própria mensagem de erro do git.
- O clone ou pull de um repositório falhou: autenticação, hosts conhecidos e alterações locais.
- O repositório de formulários ainda não está clonado: o designer não pode guardar antes do primeiro clone.
- Um repositório preso em
runningé reposto comofailed: depois de um reinício, no arranque seguinte; no espaço de um minuto quando o nó que executa a sua operação git deixa de responder durante 2 minutos; e, em qualquer caso, ao fim de 2 horas. Faça Pull de novo.
Nesta secção
Cada tema tem a sua própria página:
| Página | O que abrange |
|---|---|
| Adicionar um repositório | A página Repositórios, todos os campos de um repositório, e como declarar um no config seed |
| Autenticação | HTTPS com um token, SSH com a chave gerada, e comandos git personalizados |
| Fazer pull das alterações | Pulls agendados, manuais e pela API, e alterações locais |
| Designer e push | Editar formulários no designer e enviá-los (push) para o repositório |