2015-05-08 14 views
5

Ho creato un ambiente con diversi host Linux basati su KVM. Sto usando virt-manager per creare diverse VM e sto usando bridge Linux per creare connettività tra VM in host diversi.Posso eseguire un ambiente cloud-init senza utilizzare openstack o EC2?

Ora, mi piacerebbe avere un server di configurazione automatica in modo che le mie macchine virtuali possano autoconfigurare il loro nome, indirizzo IP, eseguire alcuni script, ecc. In base a un ID univoco che ciascuno di essi possiede. È possibile replicare una sorta di configurazione di cloud-init in un ambiente non openstack?

Ho provato a utilizzare cloud-init l'origine dati NoCloud nel modo seguente. In primo luogo, ho installato cloud-init nella VM e configurato cloud.cfg:

datasource: 
    NoCloud 
datasource_list: [ NoCloud ] 
disable_ec2_metadata: True 

Poi, ho creato un file di dati utente e file di metadati con il seguente contenuto:

dall'utente dati:

#cloud-config 
hostname: prueba 
password: passw0rd 
chpasswd: { expire: False } 
ssh_pwauth: True 

meta-dati:

instance-id: iid-local01 
local-hostname: prueba 

Poi, ho generato un file ISO:

genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data 

Infine, ho collegato il disco alla VM e l'ho avviato. Questa è la parte rilevante del XML:

<disk type='file' device='disk'> 
    <driver name='qemu' type='raw'/> 
    <source file='/opt/images/seed.iso'/> 
    <backingStore/> 
    <target dev='vdb' bus='virtio'/> 
    <alias name='virtio-disk1'/> 
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> 
</disk> 

Quando la macchina virtuale si avvia, si dice:

2015-05-12 12:12:40,394 - util.py[WARNING]: Getting data from <class 'cloudinit.sources.DataSourceNoCloud.DataSourceNoCloudNet'> failed 
* Stopping Read required files in advance (for other mountpoints)       [ OK ] 
* Stopping Read required files in advance (for other mountpoints)       [ OK ] 
* Stopping Read required files in advance (for other mountpoints)       [ OK ] 
2015-05-12 12:12:48,808 - url_helper.py[WARNING]: Calling 'http://169.254.169.254/2009-04-04/meta-data/instance-id' failed [3/120s]: request error [HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /2009-04-04/meta-data/instance-id (Caused by <class 'socket.error'>: [Errno 113] No route to host)] 

Qualche suggerimento su come farlo funzionare?

+0

Le origini dati in /etc/cloud/cloud.cfg non hanno funzionato correttamente per me. Ho eseguito 'dpkg-reconfigure cloud-init' e specificato l'origine dati NoCloud. Procedimento per generare l'immagine con l'utente-dati e meta-dati era anche un po 'diverso: troncare --size 2M init.img mkfs.vfat -n cidata init.img mcopy -oi init1.img meta-dati utente-dati :: – garciadeblas

+0

Ho inserito un nuovo disco e il risultato nel descrittore di dominio libvirt XML della VM era il seguente: garciadeblas

+0

Con la configurazione superiore, posso far funzionare alcuni comandi di configurazione cloud (impostazione password e nome host), mentre altri come runcmd o write_files non funziona ancora – garciadeblas

risposta

2

È possibile replicare una sorta di configurazione di cloud-init in un ambiente non openstack?

Sicuro.

Cloud-init non richiede un servizio di metadati di rete (come quello fornito da EC2 e OpenStack) per funzionare. Leggera felicemente le informazioni di configurazione da un dispositivo CD-ROM locale; vedere, ad esempio, la sezione "Connetti alla macchina atomica" di this document, che descrive come creare il filesystem necessario.

Questo è documentato here nella documentazione di cloud-init.

+0

Grazie per il tuo suggerimento. Ho provato a seguire i passaggi. Ho modificato la mia domanda per includere tutti i passaggi, ma non riesco a farlo funzionare. – garciadeblas

+0

Dai documenti, non è chiara la configurazione nella macchina virtuale. Come dovrei configurare cloud-init nella VM? – garciadeblas

+0

Non capisco la tua domanda. Dalla tua risposta pubblicata 5/14 sembra che tu sia riuscito a far funzionare le cose. A questo punto potresti voler aprire una nuova domanda ... – larsks