Beispiel: CentOS Abbild¶
Dieses Beispiel zeigt Ihnen, wie Sie ein CentOS-Abbild installieren und konzentrieren sich hauptsächlich auf CentOS 7. Da der CentOS-Installationsvorgang möglicherweise in Versionen abweicht, können sich die Installationsschritte unterscheiden, wenn Sie eine andere Version von CentOS verwenden.
Laden Sie ein CentOS-Installations-ISO herunter¶
Navigieren Sie zu den `CentOS Mirror <https://www.centos.org/download/mirrors/> `_ Seiten.
Klicken Sie auf einen der
HTTP
Links in der rechten Spalte neben einem der Mirror.Klicken Sie auf den Ordner-Link der CentOS-Version, die Sie verwenden möchten. Zum Beispiel
7 /
.Klicken Sie auf den
isos/
Ordner-Link.Klicken Sie auf die
x86_64/
Ordner-Link für 64-Bit-Abbilder.Klicken Sie auf das netinstall ISO-Image, das Sie herunterladen möchten. Zum Beispiel ist
CentOS-7-x86_64-NetInstall-1611.iso
eine gute Wahl, weil es ein kleineres Abbild ist, das fehlende Pakete aus dem Internet während der Installation herunterlädt.
Starten Sie den Installationsvorgang¶
Starten Sie den Installationsvorgang entweder mit :command:*virt-manager` oder virt-install wie oben beschrieben. Wenn Sie virt-install verwenden, vergessen Sie nicht, Ihren VNC-Client mit der virtuellen Maschine zu verbinden.
Annehmen, dass:
Der Name Ihres virtuellen Maschinenbildes ist
centos
; Sie benötigen diesen Namen, wenn Sie :command: virsh Befehle verwenden, um den Zustand des Abbildes zu manipulieren.Sie haben das netinstall ISO-Image im
/data/isos
-Verzeichnis gespeichert.
Wenn Sie den Befehl virt-install verwenden, sollten die Befehle so aussehen:
# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
# virt-install --virt-type kvm --name centos --ram 1024 \
--disk /tmp/centos.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=centos7.0 \
--location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso
Schritt durch die Installation¶
Wählen Sie im ersten Installations-Boot-Menü die Option :guilabel: Install CentOS 7. Nachdem das Installationsprogramm gestartet wurde, wählen Sie Ihre bevorzugte Sprache und klicken Sie auf :guilabel: Continue, um zur Installationsübersicht zu gelangen. Akzeptieren Sie die Vorgaben.

Ändern Sie den Ethernet-Status¶
Die Standard-Ethernet-Einstellung ist OFF
. Ändern Sie die Einstellung der Ethernet-Form OFF
auf ON
. Stellen Sie insbesondere sicher, dass IPv4 Settings' Methode
Automatic (DHCP)
ist, was der Standard ist.

Hostname¶
Mit dem Installateur können Sie einen Hostnamen auswählen. Die Voreinstellung (localhost.localdomain
) ist in Ordnung. Sie installieren das cloud-init
Paket später, das den Hostnamen beim Booten setzt, wenn eine neue Instanz mit diesem Abbild bereitgestellt wird.
Richten Sie das Installationsprogramm auf einen CentOS Webserver¶
Abhängig von der Version von CentOS fordert der Netzinstallateur den Benutzer auf, entweder eine URL oder die Website und ein CentOS-Verzeichnis anzugeben, das einem der CentOS-Mirror entspricht. Wenn der Installateur nach einer einzigen URL fragt, kann eine gültige URL http://mirror.umd.edu/centos/7/os/x86_64
sein.
Bemerkung
Betrachten Sie die Verwendung anderer Mirror als Alternative zu `` mirror.umd.edu``.

Wenn der Installateur nach Website-Namen und CentOS-Verzeichnis separat fragt, können Sie Folgendes eingeben:
Name der Website:
mirror.umd.edu
CentOS-Verzeichnis:
centos/7/os/x86_64
Siehe CentOS Mirrorseite <https://www.centos.org/download/mirrors/> `_, um eine vollständige Liste der Mirror zu erhalten, klicken Sie auf die HTTP` Link eines Mirrors, um den Webseitennamen eines Mirrors abzurufen.
Speichergeräte¶
Wenn Sie dazu aufgefordert werden, welche Art von Geräten Ihre Installation verwendet, wählen Sie :guilabel: Virtio Block Device.
Partitionieren Sie die Festplatten¶
Es gibt verschiedene Optionen für die Partitionierung der Festplatten. Die Standardinstallation verwendet LVM-Partitionen und erstellt drei Partitionen (/boot
, /
, swap
), was gut funktioniert. Alternativ möchten Sie vielleicht eine einzelne ext4-Partition erstellen, die auf `` /`` montiert ist, was auch gut funktioniert.
Wenn Sie unsicher sind, verwenden Sie das Standard-Partitionsschema für das Installationsprogramm. Während kein Schema inhärent besser ist als ein anderes, mit der Partition, die Sie am Ende der Liste dynamisch wachsen lassen möchten, wird es möglich sein, ohne eine andere Trennungsgrenze zu überschreiten.
Wählen Sie die Installationsoption¶
Schritt durch die Installation, mit den Standard-Optionen. Die einfachste Sache dies zu tun ist, die Minimal Install
Installation zu wählen, die einen SSH Server installiert.
Legen Sie das Root-Passwort fest¶
Achten Sie während der Installation darauf, das Root-Passwort festzulegen, wenn Sie dazu aufgefordert werden.
Trennen Sie die CD-ROM und starten Sie neu¶
Warten Sie, bis die Installation abgeschlossen ist.

Zum Auswerfen eines Datenträgers mit dem Befehl :comand: virsh erfordert libvirt, dass Sie eine leere Disk an derselben Stelle anhängen, auf der die CD-ROM zuvor angeschlossen war, was möglicherweise` hda` ist. Sie können das entsprechende Ziel mit dem Befehl :command:‘virsh dumpxml vm-image‘ bestätigen.
# virsh dumpxml centos
<domain type='kvm' id='19'>
<name>centos</name>
...
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...
</domain>
Führen Sie die folgenden Befehle vom Host aus, um den Datenträger auszuwerfen und mit virsh
als root neu zu starten. Wenn Sie virt-manager
verwenden, funktionieren die folgenden Befehle, aber Sie können auch die GUI verwenden, um sie abzubrechen und neu zu starten, indem Sie manuell stoppen und starten.
# virsh attach-disk --type cdrom --mode readonly centos "" hda
# virsh reboot centos
Installiere den ACPI-Dienst¶
Um den Hypervisor zum Neustarten oder Herunterfahren einer Instanz zu aktivieren, müssen Sie den acpid
Service auf dem Gast-System installieren und ausführen.
Melden Sie sich als root für den CentOS-Gast an und führen Sie die folgenden Befehle aus, um den ACPI-Dienst zu installieren und zu konfigurieren, um zu starten, wenn das System bootet:
# yum install acpid
# systemctl enable acpid
Konfigurieren, um Metadaten abzurufen¶
Eine Instanz muss mit dem Metadatendienst interagieren, um beim Start mehrere Aufgaben auszuführen. Zum Beispiel muss die Instanz den ssh-public Key erhalten und das Benutzerdaten-Skript ausführen. Um sicherzustellen, dass die Instanz diese Aufgaben ausführt, verwenden Sie eine dieser Methoden:
Installiere eine
cloud-init
RPM, was ein Port des Ubuntu `Cloud-init <https://launchpad.net/cloud-init> `_ Paket ist Dies ist der empfohlene Ansatz.Ändern Sie die Datei
/etc/rc.local
, um die gewünschten Informationen aus dem Metadatendienst abzurufen, wie im nächsten Abschnitt beschrieben.
Verwenden Sie cloud-init, um den öffentlichen Schlüssel zu holen¶
Das cloud-init
-Paket holt automatisch den öffentlichen Schlüssel vom Metadatenserver und platziert den Schlüssel in ein Konto. Installieren Sie `` cloud-init`` innerhalb des CentOS-Gastes, indem Sie:
# yum install cloud-init
Das Konto variiert je nach Verteilung. Auf CentOS-basierten virtuellen Maschinen heißt das Konto centos
.
Sie können den Namen des von cloud-init` verwendeten Kontos ändern, indem Sie die Datei ``/etc/cloud/cloud.cfg
bearbeiten und eine Zeile mit einem anderen Benutzer hinzufügen. Um beispielsweise cloud-init
zu konfigurieren, um den Schlüssel in ein Konto mit dem Namen admin
zu setzen, verwenden Sie die folgende Syntax in der Konfigurationsdatei:
users:
- name: admin
(...)
Installieren von Cloud-utils-growpart, um Partitionen zu vergrössern¶
Damit die Root-Partition richtig vergrössert werden kann, installieren Sie das cloud-utils-growpart
-Paket, das die richtigen Tools enthält, damit der Datenträger die Größe von cloud-init ändern kann.
# yum install cloud-utils-growpart
Schreiben Sie ein Skript, um den öffentlichen Schlüssel abzurufen (wenn kein Cloud-init)¶
Wenn Sie das cloud-init
-Paket nicht in Ihrem Abbild installieren können, um den ssh-public Key abzurufen und dem Root-Account hinzuzufügen, bearbeiten Sie das /etc/rc.d/rc.local
Datei und fügen Sie die folgenden Zeilen vor der Zeile touch /var/lock/subsys/local
:
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
> /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done
Bemerkung
Einige VNC-Clients ersetzen den Doppelpunkt (:
) mit einem Semikolon (;
) und den Unterstrich (_
) mit einem Bindestrich (-
). Stellen Sie sicher, dass http:
und nicht http;
heisst. Achten Sie darauf, authorized_keys
und nicht authorized-keys
zu spezifizieren.
Bemerkung
Das vorherige Skript erhält nur den ssh-public Key vom Metadatenserver. Es gibt keine Benutzerdaten, die optionale Daten sind, die vom Benutzer beim Anfordern einer neuen Instanz übergeben werden können. Benutzerdaten werden häufig verwendet, um ein benutzerdefiniertes Skript auszuführen, wenn eine Instanz startet.
Da der OpenStack-Metadatendienst mit der Version 2009-04-04 des Amazon EC2-Metadatendienstes kompatibel ist, konsultieren Sie die Amazon EC2-Dokumentation zum Thema ‚Instanzmetadaten verwenden‘ <http://docs.amazonwebservices.com/AWSEC2/2009-04-04/UserGuide/ AESDG-chapter-instancedata.html> `_ für Details, wie man Benutzerdaten erhält.
Deaktivieren der Zeroconf-Route¶
Damit die Instanz auf den Metadatendienst zugreifen kann, müssen Sie die Standard-Zeroconf-Route deaktivieren:
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
Konfigurieren der Konsole¶
Damit der Befehl nova console-log unter CentOS 7 funktioniert, müssen Sie möglicherweise die folgenden Schritte ausführen:
Bearbeiten Sie die
/etc/default/grub
Datei und konfigurieren Sie dieGRUB_CMDLINE_LINUX
Option. Löschen Sie die Optionrhgb quiet
und fügen Sieconsole=tty0 console=ttyS0,115200n8
hinzu.Beispielsweise:
... GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8"
Führen Sie den folgenden Befehl aus, um die Änderungen zu speichern:
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72ba Found initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.img done
Schalten Sie die Instanz aus¶
Von der Instanz aus als root laufen lassen:
# poweroff
Aufräumen (MAC-Adressdaten entfernen)¶
Das Betriebssystem speichert die MAC-Adresse der virtuellen Ethernet-Karte an Orten wie /etc/sysconfig/network-scripts/ifcfg-eth0
während des Instanzprozesseses. Jedoch wird jedes Mal, wenn das Abbild hochgefahren wird, die virtuelle Ethernet-Karte eine andere MAC-Adresse haben, so dass diese Informationen aus der Konfigurationsdatei gelöscht werden müssen.
Es gibt ein Dienstprogramm namens virt-sysprep, das verschiedene Aufräumaufgaben wie das Entfernen der MAC-Adressenreferenzen ausführt. Es wird ein virtuelles Maschinenabbild aufräumen:
# virt-sysprep -d centos
Undefinieren Sie die libvirt Domain¶
Jetzt können Sie das Abbild auf den Image-Service hochladen, Sie müssen dieses virtuelle Abbild nicht mehr von libvirt verwaltet haben. Verwenden Sie den Befehl: virsh undefine vm-image, um libvirt zu informieren:
# virsh undefine centos
Abbild ist komplett¶
Die zugrunde liegende Abbilddatei, die Sie mit dem Befehl :command: qemu-img create erstellt haben, ist bereit, hochgeladen zu werden. Zum Beispiel können Sie das /tmp/centos.qcow2
-Abbild in den Abbilddienst laden, indem Sie den Befehl openstack image create verwenden. Weitere Informationen finden Sie in der Befehlsliste ‚python-openstackclient‘ <https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/image.html> `__.