6

Se è in esecuzione uno strumento di automazione come Ansible per creare lo stack di infrastruttura nel cloud (ad esempio AWS), è sufficiente avere lo strumento di automazione e lo stack di compilazione in regioni/VPC separati nel cloud o ha più senso avere il tuo strumento di automazione e script localmente (proprio centro dati/macchina)?Ansible - Automazione remota o locale?

Entrambi sembrano essere usati, ma mi chiedevo solo se esistesse uno standard di best practice.

risposta

4

In contrasto con lo good answerxeraa eseguiamo il più possibile all'interno di AWS.

I reali benefici che otteniamo da questo è che ci permette di utilizzare centralizzati Jenkins server che eseguono Ansible (e Terraform nel nostro caso per il provisioning AWS vero e proprio con Ansible appena usato per configurare le istanze EC2 ed eseguire Playbook ad-hoc per compiti amministrativi).

Possiamo quindi controllare l'accesso a questi server Jenkins tramite credenziali e/o gruppi di sicurezza/NACL.

Fare in questo modo significa che possiamo controllare la quantità di persone che hanno una qualche forma di credenziali che consentirebbe loro di costruire qualcosa che gli piace e/o distruggere tutto ciò che vogliono.

Idealmente forniremmo le credenziali ai server Jenkins tramite i ruoli di istanza di IAM EC2 ma non siamo ancora arrivati.

Una reale positivo di questo è che la nostra linea del fronte/secondo ragazzi di supporto linea che usano Windows praticamente esclusivamente in grado di accedere a una bella interfaccia grafica web per la gestione le cose nel bel mezzo della notte ed eseguire processi di Jenkins che specificamente hanno accesso per eseguire ciò si farà come riavviare un server/servizio o anche ricostruire parte di un VPC.

Abbiamo un account "dev" separato a cui gli sviluppatori hanno accesso dalle proprie macchine ed è qui che costruiamo le cose mentre sviluppiamo la nostra base di codice Ansible (e Terraform) prima che il codice sia usato nel nostro test e ambienti di produzione.

+0

C'è una via di mezzo che vorrei aggiungere. Puoi ancora eseguire tutto da un Jenkins centralizzato, sfruttando i vantaggi che hai descritto, ma invece di jenkins con i playbook remoti, potresti eseguire comandi SSH in computer di destinazione che attivano i playbook locali (possibilmente utilizzando ansible-pull in modo da ottenere una nuova copia ogni volta). In questo modo ottieni il meglio da entrambi i mondi. –

4

Eseguiamo tutto localmente.

Inoltre

  • Proviamo tutti Playbook (e il nostro software) in una scatola di Vagrant locali, quindi abbiamo bisogno a livello locale in ogni caso.
  • Non abbiamo bisogno di macchine aggiuntive. E dovresti configurarli anche con Ansible, quindi almeno qualcuno deve aver installato Ansible. In caso contrario, hai un problema di pollo vs uovo.
  • Probabilmente leggermente più veloce, perché si ha un hop di rete in meno.

Minus

  • Tutti hanno bisogno di un'installazione locale Ansible, che funziona solo su Linux e Mac, ma non su Windows (non può che essere il bersaglio).

Altre considerazioni

  • Per i nostri utenti di Windows, un utente Linux/Mac crea una macchina virtuale con Ansible (tutto impostato) ed esporta come una scatola di base. Quindi gli utenti di Windows possono importare quella casella base in Vagrant e devono solo avviarla - tutto è già installato. Questo include Ansible in modo da poter eseguire tutto dalla VM.
  • Inizialmente avevamo pianificato di inserire Ansible nelle nostre istanze NAT (per le subnet VPC private). Ma poi avremmo bisogno di una configurazione per configurare VPC, gruppi di sicurezza e istanze NAT e un'altra per eseguire le istanze NAT e configurare il resto dell'infrastruttura. Tuttavia, non potremmo vedere alcun vantaggio reale in questo, quindi ora stiamo avendo tutto a livello locale.

PS: Non sono sicuro se esiste una risposta definitiva, ma questi sono i nostri argomenti.

+0

Bella risposta. Per curiosità, avete qualche considerazione per assicurarvi che il vostro codice base venga eseguito su un ambiente di sviluppo/test prima di prod? O semplicemente insisti che le persone gestiscono le cose localmente contro Vagrant prima di eseguirle sui server live? – ydaetskcoR

+0

Abbiamo un lavoro di Jenkins che fa una corsa a secco e una sfilacciata ansible contro ogni spinta. Altrimenti è responsabilità dello sviluppatore, ma abbiamo solo 5 con accesso Ansible e 8 in generale – xeraa

Problemi correlati