Beispiel: FreeBSD-Abbild

Dieses Beispiel erzeugt ein minimales FreeBSD-Abbild, das mit OpenStack und bsd-cloudinit kompatibel ist. Das bsd-cloudinit Programm ist unabhängig gepflegt und aktiv. Die beste Informationsquelle über den aktuellen Stand des Projektes ist `bsd-cloudinit<http://pellaeon.github.io/bsd-cloudinit/>`_.

KVM mit virtio-Treibern wird als Virtualisierungsplattform verwendet, da dies bei OpenStack-Operatoren am weitesten verbreitet ist. Wenn Sie eine andere Plattform für Ihre Cloud-Virtualisierung verwenden, verwenden Sie dieselbe Plattform im Abbilderstellungsschritt.

Dieses Beispiel zeigt, wie ein FreeBSD 10-Abbild erstellt wird. Um ein FreeBSD 9.2-Abbild zu erstellen, folgen Sie diesen Schritten mit den angegebenen Unterschieden.

So erstellen Sie ein FreeBSD-Abbild

  1. Machen Sie ein virtuelles Laufwerk:

    $ qemu-img create -f qcow2 freebsd.qcow2 1G
    

    Die minimale Festplattengröße für FreeBSD beträgt 1 GB. Weil das Ziel ist, das kleinstmögliche Basisbild zu machen, verwendet das Beispiel diese minimale Größe. Diese Größe reicht aus, um die optionalen `` doc``, `` games`` und `` lib32`` Ports einzuschließen. Um die ports Sammlung einzuschließen, fügen Sie noch 1 GB hinzu. Um src hinzuzufügen, fügen Sie 512 MB hinzu.

  2. Holen Sie sich das Installationsprogramm ISO:

    $ curl ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/10.1/FreeBSD-10.1-RELEASE-amd64-bootonly.iso \
      > FreeBSD-10.1-RELEASE-amd64-bootonly.iso
    
  3. Starten Sie eine VM auf Ihrem lokalen Arbeitsplatz. Verwenden Sie dieselben Hypervisor-, virtuellen Festplatten- und virtuellen Netzwerk-Treiber, wie Sie es in Ihrer Produktionsumgebung verwenden.

    Der folgende Befehl verwendet die minimale RAM-Menge, die 256 MB beträgt:

    $ kvm -smp 1 -m 256 -cdrom FreeBSD-10.1-RELEASE-amd64-bootonly.iso \
      -drive if=virtio,file=freebsd.qcow2 \
      -net nic,model=virtio -net user
    

    Sie können bis zu 1 GB zusätzlichen RAM angeben, um den Installationsvorgang schneller laufen zu lassen.

    Diese VM muss auch über einen Internet-Zugang zum Herunterladen von Paketen verfügen.

    Bemerkung

    Mit dem gleichen Hypervisor können Sie sicherstellen, dass Sie die gleichen Geräte emulieren, die in der Produktion vorhanden sind. Allerdings, wenn Sie vollständige Hardware-Virtualisierung statt Paravirtualisierung verwenden, müssen Sie nicht den gleichen Hypervisor verwenden; Sie müssen die gleiche Art von virtualisierten Hardware verwenden, da FreeBSD-Gerätenamen mit ihren Treibern verwandt sind. Wenn der Name Ihres Root-Block-Geräts oder der primären Netzwerkschnittstelle in der Produktion unterschiedlich ist als die bei der Erstellung von Abbildern verwendeten Namen, können Fehler auftreten.

    Sie haben jetzt eine VM, die von der heruntergeladenen Installation ISO bootet und mit dem leeren virtuellen Laufwerk verbunden ist, das Sie zuvor erstellt haben.

  4. Um das Betriebssystem zu installieren, füllen Sie die folgenden Schritte innerhalb der VM aus:

    1. Wenn Sie dazu aufgefordert werden, wählen Sie die ISO in :guilabel: Install Modus.

    2. Übernehmen Sie die Standard-Keymap oder wählen Sie eine entsprechende Mapping für Ihre Bedürfnisse aus.

    3. Geben Sie einen Hostnamen für Ihr Abbild an. Wenn Sie bsd-cloudinit verwenden, überschreibt es diesen Wert mit dem Namen, der von OpenStack bereitgestellt wird, wenn eine Instanz von diesem Abbild hochfährt.

    4. Wenn Sie dazu aufgefordert werden für die optionalen doc, games, lib32, ports und src Systemkomponenten, wählen Sie nur diejenigen, die Sie benötigen. Es ist möglich, eine voll funktionsfähige Installation zu haben, ohne zusätzliche Komponenten auszuwählen. Wie bereits erwähnt, unterstützt ein minimales System mit einem virtuellen 1 GB-Laufwerk doc, games und lib32 inklusive. Die ports Kollektion benötigt mindestens 1 GB zusätzlichen Platz und eventuell mehr, wenn Sie planen, viele Ports zu installieren. Die src Kollektion benötigt zusätzlich 512 MB.

    5. Konfigurieren Sie die primäre Netzwerkschnittstelle, um DHCP zu verwenden. In diesem Beispiel, das ein virtio Netzwerkgerät verwendet, heißt diese Schnittstelle vtnet0.

    6. Akzeptiere den Standard-Netzwerk-Mirror.

    7. Festplattenpartitionierung einrichten

      Die Festplattenpartitionierung ist ein kritisches Element des Abbilderstellungsprozesses und das automatisch generierte Standardpartitionierungsschema funktioniert derzeit nicht mit bsd-cloudinit.

      Da die Voreinstellung nicht funktioniert, müssen Sie die manuelle Partitionierung auswählen. Der Partitionseditor sollte nur ein Blockgerät auflisten. Wenn Sie virtio für den Festplatten-Gerätetreiber verwenden, heißt es vtbd0. Wählen Sie dieses Gerät aus und führen Sie den Befehl :command: create dreimal aus:

      1. Wählen Sie :guilabel: Create, um eine Partitionstabelle zu erstellen. Diese Aktion ist die Voreinstellung, wenn keine Partitionstabelle vorhanden ist. Dann wählen Sie :guilabel: GPT GUID Partitionstabelle aus der Liste. Diese Wahl ist die Voreinstellung.

      2. Erstellen Sie zwei Partitionen:

        • Erste Partition: A 64 kB freebsd-boot Partition ohne Einhängepunkt.

        • Zweite Partition: Eine freebsd-ufs-Partition mit einem Einhängepunkt von / mit dem restlichen freien Platz.

      Die folgende Abbildung zeigt eine abgeschlossene Partitionstabelle mit einem virtuellen 1 GB-Laufwerk:

      _images/freebsd-partitions.png

      Wählen Sie :guilabel: Finish und dann :guilabel:` Commit`, um Ihre Änderungen auszuführen.

      Bemerkung

      Wenn Sie dieses Beispiel ändern, muss die Root-Partition, die auf / montiert wird, die letzte Partition auf dem Laufwerk sein, damit sie zur Laufzeit auf die Festplattengröße erweitern kann, die Ihr Instanztyp bereitstellt. Beachten Sie auch, dass bsd-cloudinit derzeit eine hartcodierte Annahme hat, dass dies die zweite Partition ist.

  5. Wählen Sie ein Root-Passwort aus.

  6. Wählen Sie die CMOS-Zeitzone aus.

    Der virtualisierte CMOS speichert fast immer seine Zeit in UTC, also, wenn Sie nicht anders wissen, wählen Sie UTC.

  7. Wählen Sie die Zeitzone aus, die Ihrer Umgebung entspricht.

  8. Aus der Liste der Dienste, die beim Booten starten, müssen Sie auswählen ssh. Optional können Sie andere Dienste auswählen.

  9. Optional können Benutzer hinzugefügt werden.

    Sie müssen keine Benutzer zu diesem Zeitpunkt hinzufügen. Das bsd-cloudinit-Programm fügt ein freebsd Benutzerkonto hinzu, wenn es nicht existiert. Die ssh Schlüssel für diesen Benutzer sind mit OpenStack verbunden. Um dieses Benutzerkonto anzupassen, können Sie es jetzt erstellen. Zum Beispiel möchten Sie vielleicht die Shell für den Benutzer anpassen.

  10. Endkonfiguration

    In diesem Menü können Sie die vorherigen Einstellungen aktualisieren. Überprüfen Sie, ob die Einstellungen korrekt sind, und klicken Sie auf exit.

  11. Nach dem Beenden können Sie eine Shell öffnen, um manuelle Konfigurationsschritte abzuschließen. Wählen Sie :guilabel: Yes, um ein paar OpenStack-spezifische Änderungen zu machen:

    1. Richten Sie die Konsole ein:

      # echo 'console="comconsole,vidconsole"' >> /boot/loader.conf
      

      Dies setzt die Konsolenausgabe auf die serielle Konsole, die angezeigt wird durch nova consolelog und die Videokonsole für Seiten mit VNC oder Spice konfiguriert.

    2. Minimierung der Boot-Verzögerung:

      # echo 'autoboot_delay="1"' >> /boot/loader.conf
      
    3. Laden Sie die neueste bsd-cloudinit-installer herunter. Die Download-Befehle unterscheiden sich zwischen FreeBSD 10.1 und 9.2 aufgrund von Unterschieden in wie der fetch Befehl behandelt HTTPS URLs.

      In FreeBSD 10.1 überprüft fetch standardmäßig SSL-Peers, also müssen Sie das ca_root_nss -Paket installieren, das Zertifikatsautorisierungszertifikate enthält und :command:` fetch` zeigt, wo es zu finden ist. Für FreeBSD 10.1 führen Sie diese Befehle aus:

      # pkg install ca_root_nss
      # fetch --ca-cert=/usr/local/share/certs/ca-root-nss.crt \
        https://raw.github.com/pellaeon/bsd-cloudinit-installer/master/installer.sh
      

      FreeBSD 9.2 fetch unterstützt keine Peer-Verifikation für https. Führen Sie für FreeBSD 9.2 diesen Befehl aus:

      # fetch https://raw.github.com/pellaeon/bsd-cloudinit-installer/master/installer.sh
      
    4. Führen Sie den Installer aus:

      # sh ./installer.sh
      

      Geben Sie diesen Befehl ein, um das neueste bsd-cloudinit-Paket herunterzuladen und zu installieren und die notwendigen Voraussetzungen zu installieren.

    5. Installieren Sie sudo und konfiguriere den freebsd Benutzer mit passwortlosem Zugriff:

      # pkg install sudo
      # echo 'freebsd ALL=(ALL) NOPASSWD: ALL' > /usr/local/etc/sudoers.d/10-cloudinit
      
  12. Schalten Sie das System aus:

    # shutdown -h now