Hinweis:
- Dieses Tutorial ist in einer von Oracle bereitgestellten kostenlosen Übungsumgebung verfügbar.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
OCI Dynamic Inventory mit Oracle Linux Automation Engine verwenden
Einführung
Oracle Linux Automation Engine, die Open-Source-Software für Provisioning und Konfigurationsmanagement, verwendet eine Bestandsdatei, um mit verwalteten Knoten oder Hosts in Ihrer Infrastruktur zu arbeiten. Diese Bestandsdatei enthält eine Liste der Server, ihrer IP-Adressen und anderer optionaler Verbindungsinformationen.
Eine statische Bestandsdatei funktioniert gut, wenn sich Ihre Infrastruktur kaum ändert.
Bei der Nutzung der Cloud ist Ihre Infrastruktur jedoch wahrscheinlich ständig im Fluss. Daher wäre es großartig, eine Möglichkeit zu haben, Ihr Inventar dynamisch zu aktualisieren, wenn Hosts kommen und gehen.
Ziele
In diesem Tutorial lernen Sie Folgendes:
- Oracle Linux Automation Engine einrichten
- Dynamischen OCI-Bestand erstellen
- Dynamischen OCI-Bestand mit einem Handbuch verwenden
Voraussetzungen
-
Mindestens zwei Oracle Linux-Systeme mit der folgenden Konfiguration:
- einem Nicht-Root-Benutzer mit sudo-Berechtigungen
- SSH-Tastaturpaar für Nicht-Root-Benutzer
- die Möglichkeit, mit einer passwortlosen SSH-Anmeldung von einem Host zum anderen SSH zu verwenden
Oracle Linux Automation Engine bereitstellen
Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs
GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.
-
Öffnen Sie ein Terminal auf dem Luna Desktop.
-
Klonen Sie das Projekt
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Wechseln Sie in das Arbeitsverzeichnis.
cd linux-virt-labs/olam
-
Installieren Sie die erforderlichen Collections.
ansible-galaxy collection install -r requirements.yml
-
Aktualisieren Sie die Oracle Linux-Instanzkonfiguration.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ol-control-node" type: "control" 2: instance_name: "ol-host" type: "remote" EOF
-
Stellen Sie die Übungsumgebung bereit.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
Die kostenlose Übungsumgebung erfordert die zusätzliche Variable
local_python_interpreter
, dieansible_python_interpreter
für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python installiert, das sich unter den python3.6-Modulen befindet.Die Standard-Deployment-Ausprägung verwendet die AMD-CPU und Oracle Linux 8. Um eine Intel-CPU oder Oracle Linux 9 zu verwenden, fügen Sie dem Deployment-Befehl
-e instance_shape="VM.Standard3.Flex"
oder-e os_version="9"
hinzu.Wichtig: Warten Sie, bis die Arbeitsmappe erfolgreich ausgeführt wurde, und erreichen Sie die Aufgabe "Unterbrechen". In dieser Phase des Spiels ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Beachten Sie die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten sowie alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung benötigt werden.
Oracle Linux Automation Engine-Kontrollknoten installieren
Der Kontrollknoten ist das System, von dem aus die Oracle Linux Automation Engine-Playbooks ausgeführt werden. Bevor Sie Playbooks ausführen, müssen Sie die Oracle Linux Automation Engine-Packages installieren.
-
Öffnen Sie ein neues Terminal und verbinden Sie sich über SSH mit dem ol-control-node-System.
ssh oracle@<ip_address_of_instance>
-
Installieren Sie das Oracle Linux Automation Engine-Package und die Abhängigkeiten.
sudo dnf install -y ansible-core
Das Package ansible-core ist im Repository ol8_appstream verfügbar.
-
Testen Sie die Packageinstallation.
ansible --version
Prüfen Sie die Ausgabe, und suchen Sie nach der Standardversion von Python Oracle Linux Automation Manager. In dieser Umgebung müssen wir das Oracle Cloud Infrastructure-(OCI-)SDK für Python installieren.
Hinweis: Wenn in der Ausgabe FEHLER: Für Ansible muss die Gebietsschemacodierung UTF-8 sein; Keine erkannt. angezeigt wird, weist dies auf eine falsche Gebietsschemaeinstellung für
ansible
hin. Beheben Sie das Problem, indem Sie die folgenden beiden Umgebungsvariablen festlegen:export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Oracle Cloud Infrastructure-SDK für Python einrichten
Das OCI Dynamic Inventory-Plug-in erfordert eine funktionierende OCI-SDK für Python-Konfiguration auf dem Kontrollknoten. Das OCI-SDK kann mit Oracle Linux RPM oder PIP, dem Packageinstallationsprogramm für Python, installiert werden.
-
Installieren Sie das OCI-SDK für Python mit PIP.
-
Installieren Sie die Packages und Abhängigkeiten für PIP.
sudo dnf install -y python3.12-pip python3.12-setuptools
-
Python-Packages installieren
/usr/bin/python3.12 -m pip install oci
Fügen Sie die Option
--proxy
hinzu, wenn Sie sich hinter einem Proxy befinden. Details finden Sie in der Hilfe, indem Sie den Befehlpython3.12 -m pip help install
ausführen.
-
-
Testen Sie die OCI-SDK für Python-Installation, indem Sie die zugehörige Version drucken.
python3.12 -c "import oci;print(oci.__version__)"
-
Erstellen Sie das Standardkonfigurationsverzeichnis für das OCI-SDK.
mkdir -p ~/.oci
-
SDK-Standardkonfigurationsdatei erstellen
Das kostenlose Lab bietet eine vorab generierte SDK-Konfiguration, die wir mit
scp
in das System ol-control-node kopieren können.-
Öffnen Sie ein neues Terminal aus der Desktopumgebung.
-
Kopieren Sie alle SDK-Konfigurationsdateien in das System ol-control-node.
scp ~/.oci/* oracle@<ip_address_of_instance>:~/.oci/.
exit
Wenn Sie dieses Tutorial außerhalb der kostenlosen Übungsumgebung befolgen, lesen Sie die Anweisungen in den Abschnitten SDK- und CLI-Konfigurationsdatei und Erforderliche Schlüssel und OCIDs der OCI-Dokumentation, um Ihre OCI-Konfigurationsdatei zu generieren.
-
-
Wechseln Sie zum Terminalfenster, das mit dem ol-control-node-System verbunden ist.
-
Aktualisieren Sie den Speicherort von
key_file
in der SDK-Konfigurationsdatei.Wenn Sie die SDK-Konfigurationsdatei aus der Desktopumgebung kopieren, müssen Sie den Home-Verzeichnisteil des Benutzers in
key_file
ändern.sed -i 's/luna.user/oracle/g' ~/.oci/config
-
Erstellen Sie ein Python-Testskript, um zu prüfen, ob das SDK funktioniert.
cat << EOF | tee test.py > /dev/null import oci object_storage_client = oci.object_storage.ObjectStorageClient(oci.config.from_file()) result = object_storage_client.get_namespace() print("Current object storage namespace: {}".format(result.data)) EOF
Das Skript
test.py
zeigt den Object Storage-Namespace für den konfigurierten OCI-Mandanten und das konfigurierte Compartment an. -
Führen Sie das Skript aus
python3.12 test.py
Das Testskript druckt erfolgreich den eindeutigen Namespace des konfigurierten Mandanten.
Oracle Cloud Infrastructure-Ansible-Sammlung installieren
Die OCI Ansible Collection enthält eine Reihe von Modulen zur Automatisierung der Bereitstellung und Konfiguration der Cloud-Infrastruktur, der Orchestrierung komplexer betrieblicher Prozesse sowie der Bereitstellung und Aktualisierung Ihrer Softwareassets.
-
Erstellen Sie ein Projektverzeichnis.
mkdir ~/myproject
-
Erstellen Sie eine Anforderungsdatei.
cat << EOF | tee ~/myproject/requirements.yml > /dev/null --- collections: - name: oracle.oci EOF
-
Installieren Sie die OCI-Ansible-Sammlung.
ansible-galaxy collection install -r ~/myproject/requirements.yml
Wenn Sie eine vorherige Version installiert haben, rufen Sie das neueste Release ab, indem Sie den Befehl mit der Option
--force
ausführen.ansible-galaxy collection install --force oracle.oci
Mit OCI Dynamic Inventory arbeiten
Oracle schließt sein dynamisches Bestands-Plug-in in die OCI-Ansible-Sammlung ein.
-
Konfigurieren Sie das Bestands-Plug-in, indem Sie eine YAML-Konfigurationsquelle erstellen.
Der Quelldateiname muss
<filename>.oci.yml
oder<filename>.oci.yaml
lauten. Dabei ist<filename>
eine benutzerdefinierte hilfreiche ID.cat << EOF | tee ~/myproject/myproject.oci.yml > /dev/null --- plugin: oracle.oci.oci # Optional fields to specify oci connection config: config_file: ~/.oci/config config_profile: DEFAULT EOF
-
Testen Sie das Bestands-Plug-in, indem Sie ein Bestandsdiagramm erstellen.
ansible-inventory -i ~/myproject/myproject.oci.yml --graph
Die Ausgabe zeigt eine Reihe von Warnungen und Fehlern. Was ist also schief gelaufen?
Der Fehler tritt auf, weil das Plug-in die Compartment-OCID kennen muss. Wenn Sie die Mandanten-OCID anstelle der Compartment-OCID angeben und über die richtigen Berechtigungen verfügen, generiert das Plug-in einen Bestand für den gesamten Mandanten.
Da das Plug-in die Compartment-OCID-Informationen nicht direkt aus der SDK-Konfigurationsdatei lesen kann, fügen Sie sie der Plug-in-Konfigurationsquelldatei hinzu.
-
Greifen Sie auf die Compartment-OCID aus der SDK-Konfigurationsdatei zu, und weisen Sie sie der Variablen comp_ocid zu.
comp_ocid=$(grep -i compartment ~/.oci/config | sed -e 's/compartment-id=//g')
-
Hängen Sie einen Compartment-Parameter an die Plug-in-Quelldatei an.
cat << EOF | tee -a ~/myproject/myproject.oci.yml > /dev/null compartments: - compartment_ocid: "$comp_ocid" fetch_compute_hosts: true EOF
Wenn
fetch_compute_hosts
auftrue
gesetzt ist, werden im Bestand nur Informationen zu Compute-Hosts erfasst und andere Instanztypen ignoriert, die im Compartment bereitgestellt sind. -
Führen Sie den Test erneut aus.
ansible-inventory -i ~/myproject/myproject.oci.yml --graph
In unserem Beispiel werden die im Compartment verfügbaren Compute-Instanzen als Liste der Bestandsgruppen angezeigt, die mit dem Zeichen
@
gekennzeichnet sind, und die öffentliche IP-Adresse der Instanz wird angezeigt.Was wäre, wenn wir die private IP-Adresse wünschen?
Je nach physischem Speicherort des Controllerknotens oder der konfigurierten Netzwerktopologie innerhalb der Cloud-Infrastruktur ist ein Zugriff auf die private IP-Adresse erforderlich. Ein weiterer Grund für das Abrufen der privaten IP-Adresse ist, dass die angeforderten Compute-Instanzen nur über eine private IP-Adresse verfügen.
-
Ändern Sie den Parameter für das Format des Plug-in-Hostnamens, indem Sie die Quelldatei der Plug-in-Konfiguration aktualisieren.
cat << EOF | tee -a ~/myproject/myproject.oci.yml > /dev/null hostname_format_preferences: - "private_ip" - "public_ip" EOF
Das obige Beispielformat priorisiert die private IP-Adresse eines Systems gegenüber der öffentlichen IP-Adresse. Weitere Informationen zu dieser Konfiguration finden Sie in der Dokumentation unter Hostnamensformatvoreinstellungen.
-
Testen Sie das Plug-in erneut.
ansible-inventory -i ~/myproject/myproject.oci.yml --graph
In der Ausgabe wird jetzt die private IP-Adresse angezeigt.
Playbook ausführen
Mit dem dynamischen Inventar Setup und konfiguriert, können wir es verwenden, um ein einfaches Spielbuch auszuführen. Stellen Sie sicher, dass Sie den SSH-Zugriff zwischen den Kontrollknoten und allen Remotes aktivieren. Wir haben dies beim ersten Deployment der Instanzen mit passwortlosen SSH-Anmeldungen konfiguriert.
-
Erstellen Sie ein Spielbuch, das den Host anpingt.
cat << EOF | tee ~/myproject/ping.yml > /dev/null --- - hosts: all,!$(hostname -i) tasks: - name: Ansible ping test ansible.builtin.ping: EOF
Oracle Linux Automation Engine erwartet nach dem Eintrag
- hosts:
eine durch Komma getrennte Liste der Hosts oder Gruppen, und!
gibt an, dass diese Einträge ausgeschlossen werden sollen. Der Eintragall
pingt jeden im Bestand angezeigten Host als@all
innerhalb der Gruppe der obersten Ebene. Sie können diese Arbeitsmappe ändern, um eine andere Gruppe als die Diagrammausgabe zu verwenden, indem Sie das Zeichen@
aus dem Namen entfernen und diesen Namen in den Eintrag- hosts:
eingeben. -
Führen Sie das Spielbuch aus.
ansible-playbook -u opc -i ~/myproject/myproject.oci.yml ~/myproject/ping.yml
Akzeptieren Sie den ECDSA-Schlüssel-Fingerprint, wenn Sie dazu aufgefordert werden.
Mit der Option
-i
wird die verwendete dynamische Bestandsdatei festgelegt.Mit der Option
-u
wird der Remote-SSH-Benutzer beim Verbindungsversuch festgelegt.
Nächste Schritte
Wenn Sie die Wiedergabe mit dem Status OK abschließen, wird bestätigt, dass Oracle Linux Automation Engine das dynamische OCI-Bestandsverzeichnis erfolgreich verwendet, um mit der Remoteinstanz zu kommunizieren, die im Compartment erkannt wird. Lernen Sie weiter, und verwenden Sie dieses Feature, um Ihre Flotte von OCI-Instanzen zu verwalten und routinemäßige Administrationsaufgaben für Oracle Linux auszuführen.
Verwandte Links
- Oracle Linux Automation Manager-Dokumentation
- Oracle Linux Automation Manager-Schulung
- Oracle Linux-Schulungsstation
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Use an OCI Dynamic Inventory with Oracle Linux Automation Engine
F55853-02
Copyright ©2022, Oracle and/or its affiliates.