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

  1. Navigieren Sie zu den `CentOS Mirror <https://www.centos.org/download/mirrors/> `_ Seiten.

  2. Klicken Sie auf einen der HTTP Links in der rechten Spalte neben einem der Mirror.

  3. Klicken Sie auf den Ordner-Link der CentOS-Version, die Sie verwenden möchten. Zum Beispiel 7 /.

  4. Klicken Sie auf den isos/ Ordner-Link.

  5. Klicken Sie auf die x86_64/ Ordner-Link für 64-Bit-Abbilder.

  6. 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.

_images/centos-install.png

Ä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.

_images/centos-tcpip.png

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``.

_images/centos-url-setup.png

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.

_images/centos-complete.png

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:

  1. Bearbeiten Sie die /etc/default/grub Datei und konfigurieren Sie die GRUB_CMDLINE_LINUX Option. Löschen Sie die Option rhgb quiet und fügen Sie console=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"
    
  2. 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> `__.