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?
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
Ho inserito un nuovo disco e il risultato nel descrittore di dominio libvirt XML della VM era il seguente: –
garciadeblas
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