Ich habe eine Umgebung mit mehreren Linux-Hosts basierend auf KVM erstellt. Ich benutze Virt-Manager, um verschiedene VMs zu erstellen, und ich verwende Linux-Bridges, um Konnektivität zwischen VMs in verschiedenen Hosts zu erstellen.Kann ich eine Cloud-Init-Umgebung ohne Open Stack oder EC2 ausführen?
Jetzt hätte ich gerne einen Autokonfigurationsserver, damit meine VMs ihren Namen, ihre IP-Adresse, ihre Skripts usw. automatisch konfigurieren können, basierend auf einer eindeutigen ID, die jeder von ihnen hat. Ist es möglich, eine Art Cloud-Init-Setup in einer Nicht-Openstack-Umgebung zu replizieren?
Ich habe versucht, Cloud-Init die Datenquelle NoCloud in der folgenden Weise. Zuerst habe ich installiert cloud-init in der VM und konfiguriert cloud.cfg:
datasource:
NoCloud
datasource_list: [ NoCloud ]
disable_ec2_metadata: True
Dann habe ich eine Benutzer-Datendatei und Meta-Datendatei mit folgendem Inhalt erstellt:
benutzer- Daten:
#cloud-config
hostname: prueba
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
Meta-Daten:
instance-id: iid-local01
local-hostname: prueba
Dann habe ich eine ISO-Datei erzeugt:
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
Schließlich habe ich die Festplatte an die VM angeschlossen und gestartet. Dies ist der relevante Teil des 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>
Wenn die VM beginnt, heißt es:
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)]
Vorschläge, wie es funktioniert?
Datenquellen in /etc/cloud/cloud.cfg funktionierte nicht richtig für mich. Ich habe 'dpkg-reconfigure cloud-init' ausgeführt und die NoCloud-Datenquelle angegeben. Das Verfahren, das Bild mit den Benutzer-Daten und Meta-Daten zur Erzeugung war auch etwas anders: Trunkat --size 2M init.img mkfs.vfat -n cidata init.img mcopy -oi init1.img Metadaten für Benutzerdaten :: – garciadeblas
Ich habe eine neue Platte eingefügt und das Ergebnis im XML libvirt Domänen-Deskriptor der VM war wie folgt: –
garciadeblas
Mit der oberen Konfig, kann ich einige Cloud-Config-Befehle funktionieren ordnungsgemäß (Einstellung von Passwort und Hostname), während andere wie runcmd oder write_files arbeite noch nicht – garciadeblas