Questa è una domanda molto ampia su metodi e consigli relativi alle variabili / struttura dell'ambiente. Ma alla fine cerco risposte per la domanda molto specifica di "Come devo memorizzare le variabili di ambiente?"
Innanzitutto alcuni chiarimenti:
- Un ambiente per me può essere da 3 a 10 server ed è un modo per contenere l'infrastruttura di un cliente specifico.
- All'interno di ogni ambiente ci sono alcune variabili che sono per lo più generate automaticamente da alcuni input chiave (nome, dimensione ecc.).
Allo stato attuale, stiamo memorizzando tutte le variabili di ambiente in una struttura del genere:
<playbook>.yml # Various playbooks for deployment
roles/windows # Ansible role for Ubuntu
roles/ubuntu # Ansible role for Ubuntu
config/hosts/<name>.yml # Ansible inventory
config/hosts/vars/<name>.json # Environment specific variables
In questo momento la configurazione è inizializzata come sottomodulo nel repository git sopra. Poiché il file delle variabili cambia piuttosto frequentemente, ciò ha causato problemi con la modifica dei dati, una volta, due o addirittura tre volte tra i commit rendendo le modifiche sempre più difficili da rintracciare.
Dal momento che personalmente lo vedo in futuro, dovremmo cercare di memorizzare tutte le variabili dei nostri clienti in modo centralizzato / scalabile e quindi agganciarci con un inventario dinamico con ansible .
Capisco che ci sono alcune tecnologie che sembrano fare una parte di ciò che potrebbe essere richiesto come Console, ma sembrano funzionare meglio in un ambiente che serve una grande applicazione piuttosto che molte più piccole leggermente diverse.
Fondamentalmente vedo che dobbiamo scrivere uno script di inventario e poi semplicemente inserire tutti i nostri dati in un database costruito per scopi diversi e continuare quindi come se nulla fosse cambiato. Vedo questo concepibilmente come un modo per ridurre potenzialmente molti dei dati che archiviamo attualmente e forse esaminare diversi modi di archiviare i dati piuttosto che ridimensionare ciò che li serve di nuovo.
Spero che qualcuno abbia qualche tipo di esperienza nell'implementazione di infrastrutture come codice quando deve affrontare molti ambienti più piccoli rispetto a uno, due o tre enormi.
Eventuali suggerimenti?