Sono bloccato. Googled fuori dal Web e non riuscivo a trovare una risposta.Come distinguere tra staging/produzione con un inventario dinamico?
Utilizzo Ansible da anni, ma sempre con inventari statici. Per distinguere tra diversi ambienti come la gestione temporanea e la produzione, ho utilizzato diversi file di inventario statico, staging
e production
, rispettivamente. Quando ho bisogno di server di gestione temporanea disposizione, farei:
ansible-playbook site.yml -i staging
Quando ho voluto fare lo stesso per la produzione, lo farei:
ansible-playbook site.yml -i production
Sia messa in scena e la produzione hanno bisogno di variabili con diversi valori, quindi ho group_vars/staging
e group_vars/production
. Tutto bene e secondo le migliori pratiche.
Ora, ho bisogno di fornire istanze EC2 in AWS. Sto usando this AWS guide. Ho un playbook con due giochi. Il primo viene eseguito su localhost
, crea/trova istanze EC2 necessarie in AWS e popola un gruppo con add_host
. Il secondo gioco usa quel gruppo per correre contro le istanze EC2 scoperte nel primo gioco. Tutto secondo quella guida.
Tutto funziona alla grande tranne una cosa. Non ho idea di come specificare quale ambiente eseguire il provisioning e quindi le variabili richieste non vengono caricate da group_vars/(staging|production)
. Fondamentalmente, quello che voglio è qualcosa di simile a -i (staging|production)
Ho usato tutti questi anni con inventari statici, ma sembra che l'utilizzo di -i
non abbia senso ora dato che l'inventario è dinamico. Voglio un modo per essere in grado di caricare variabili da group_vars/staging
o da group_vars/production
in base a un argomento che passo a ansible-playbook
durante l'esecuzione.
Come posso fare? Qual è la migliore pratica?
Forse potresti fare qualcosa con i playbook separati? Qualcosa come production.yml e staging.yml. Questi quaderni includevano quindi site.yml, ma includevano anche le loro vv specifiche per env. –