2015-04-20 30 views
10

Ho un requisito, in cui desidero eseguire il provisioning di diverse macchine virtuali con certificati SSL specifici della macchina (generati utilizzando il nome host/host della macchina) richiesti da un'applicazione Java.Come eseguire il provisioning di una VM utilizzando Vagrant, Chef e/o Puppet con certificato SSL specifico per computer?

posso creare questi certificati con alcuni nomi come QA-Machine01, Prod-Machine01 ecc in anticipo e può mantenere questi nella cartella da qualche parte.

Come posso fare Vagrant di scegliere dinamicamente questi certificati, prende il nome (QA-Machine01, Prod-Machine01) e la fornitura VM con il nome certificati Nome macchina?

+0

@RyPeck Potresti approfondire cosa manca nelle risposte effettive? – Tensibai

+1

Principalmente sperando che l'interrogante selezionerà una risposta corretta. – RyPeck

risposta

0

È possibile mount the certificates nel vagabondo e utilizzare hostname per scegliere quello giusto.

+0

A meno che non mi sbaglio, l'OP desidera creare la VM dai certificati. – Tensibai

+0

Io non la penso così @Tensibai da quando OP ha dichiarato/Posso creare questi certificati con alcuni nomi come QA-Machine01, Prod-Machine01 ecc in anticipo e posso tenerli in una cartella da qualche parte./ – ooxi

+0

Bene, Op ha ora i due lato della nostra comprensione;) (Ero più in questa frase: "e provision VM con nome dei certificati come Machine Name") – Tensibai

1

file Vagrant sono codice Ruby, quindi se avete tutti i certificati in una directory è possibile scrivere un ciclo nel file vagabondo dal Dir.glob per fare un multimachine vagrantfile:

Esempio:

mnames = Dir.glob("/my/cert/store/*.crt") 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    mname.each do |filename| 
    hostname = File.basename(filename).gsub(File.extname(filename),'') 

    config.vm.define hostname do |box| 
     box.vm.hostname = "#{hostname}.my.domain" 
     [.. any configuration you wish ...] 
     box.vm.provision :chef_client do |chef| 
     chef.add_recipe "my_recipe" 
     [..chef conf for your case ...] 
     end 
    end 
    end 
end 

Quindi è possibile vagrant up creare e fornire tutte le macchine o chiamare vagrant up QA-Machine01 solo per la macchina QA.

0

Non mi è chiaro cosa intendi quando dici di volere "Vagrant per selezionare dinamicamente questi certificati". Di solito è lo chef a mettere questi certificati in uso (dato che sarà la tecnologia che installerà il server web, il proxy ssl o qualsiasi altra cosa che userà i certificati). Inoltre, non è chiaro quale sia l'ambiente operativo, ma presumendo che se si esegue il depoying su QA e pungolo, si dispone di uno chef-server disponibile, raccomando l'utilizzo di chef-vault.

In questo scenario, utilizziamo data_bags e, in particolare, data_bags di chef-vault per questo scopo. Abbiamo un deposito denominato ssl-certificates con gli elementi in esso denominati per il CN del certificato SSL che ciascuno contiene. La query di ricerca dell'oggetto viene utilizzata per accedere all'ambito solo ai computer che ospitano quel CN.

Poiché lo chef-vault ha un meccanismo di fallback per l'utilizzo di sacchetti di dati regolari non crittografati, è ideale per l'utilizzo in entrambi gli ambienti dev/qa dove mantenere credenziali sicure si intromette e utilizzare in produzione dove mantenere la custodia di le tue chiavi private SSL sono fondamentali.