5 lxc_erstes_beispiel_ansible
kraeml edited this page 2023-09-28 07:43:31 +00:00

Verwendete Kommandos

Erstellen der LXC-Maschine foo

sudo lxc-create --name foo --template ubuntu
sudo lxc-start --name foo
sudo lxc-ls
sudo lxc-ls --help
sudo lxc-ls --fancy
NAME STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED 
foo  RUNNING 0         -      10.0.3.110 -    false
  1. sudo lxc-create --name foo --template ubuntu: Dieses Kommando erstellt einen Linux Container (LXC) mit dem Namen foo und verwendet das Ubuntu-Template, um das Basis-Dateisystem des Containers zu erstellen.

  2. sudo lxc-start --name foo: Mit diesem Befehl wird der zuvor erstellte Container mit dem Namen foo gestartet.

  3. sudo lxc-ls: Dieses Kommando listet alle LXC-Container auf, die auf dem System vorhanden sind. Es zeigt grundlegende Informationen, wie den Namen der Container an.

  4. sudo lxc-ls --help: Dieser Befehl zeigt die Hilfe oder die Dokumentation für das "lxc-ls"-Kommando an, was Informationen über die verfügbaren Optionen und deren Verwendung bietet.

  5. sudo lxc-ls --fancy: Mit diesem Befehl wird eine erweiterte Ansicht der LXC-Container angezeigt, die mehr Informationen über die Container und deren Status enthält, wie z.B. IP-Adressen und Ressourcenverbrauch. Dies ist hilfreich, um detailliertere Informationen über die auf dem System ausgeführten Container zu erhalten.

Mit der IP kann man sich via ssh einlogen:

ssh ubuntu@10.0.3.110  # Mit exit wieder zurück auf rdf-dev

Das SSH-Kommando verbindet dich mit einem Remote-Server mit der IP-Adresse 10.0.3.110, wobei du dich als Benutzer ubuntu anmeldest. Um die SSH-Sitzung zu beenden und zum Host rdf-dev zurückzukehren, kannst du einfach exit eingeben.

sudo lxc-create --name baa --template ubuntu
sudo lxc-start --name baa
sudo lxc-ls --fancy
NAME STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED 
baa  RUNNING 0         -      10.0.3.55  -    false        
foo  RUNNING 0         -      10.0.3.110 -    false
nmap 10.0.3.0/24
whatis nmap
nmap (1)             - Netzwerk-Analysewerkzeug und Sicherheits-/Portscanner
  1. Das Kommando nmap 10.0.3.0/24 führt eine Netzwerkscanning-Operation mit dem Tool "nmap" auf dem IP-Adressbereich 10.0.3.0 bis 10.0.3.255 durch. Das "/24" am Ende der IP-Adresse gibt an, dass die ersten 24 Bits der IP-Adresse den Netzwerkanteil definieren, während die verbleibenden 8 Bits für die Hostadressen verwendet werden. Dies bedeutet, dass alle IP-Adressen in diesem Bereich gescannt werden, um Informationen über die erreichbaren Hosts und offenen Ports zu sammeln.

  2. Das Kommando whatis nmap gibt eine kurze Beschreibung des Befehls "nmap" aus. Es liefert normalerweise Informationen aus der Manual-Page (Handbuchseite) des Befehls, um eine grobe Vorstellung davon zu vermitteln, was der Befehl tut. In diesem Fall würde es eine Beschreibung des "nmap"-Befehls anzeigen, der zur Netzwerkerkennung und -analyse verwendet wird.

dig @10.0.3.1 foo
ping -c 4 10.0.3.110
  1. dig @10.0.3.1 foo: Dieses Kommando verwendet das DNS-Tool dig, um eine DNS-Anfrage an den DNS-Server mit der IP-Adresse 10.0.3.1 für den Hostnamen foo zu senden. Es versucht, die IP-Adresse für foo aufzulösen und gibt die entsprechenden DNS-Antworten zurück, wenn sie verfügbar sind.

  2. ping -c 4 10.0.3.110: Dieses Kommando sendet vier ICMP-Echo-Anforderungen an die IP-Adresse 10.0.3.110. Es wird verwendet, um die Erreichbarkeit des Ziels zu überprüfen und die Latenzzeiten zwischen Ihrem Computer und dem Zielsystem zu messen.

Ansible mit Inventory-Datei

ansible --version
cd ~/ansible_lxc_bsa2/
vi inventory
cat inventory
[lokal]
localhost ansible_connection=local
  1. ansible --version: Dieses Kommando gibt die installierte Version von Ansible, einem Automatisierungstool für die Konfigurationsverwaltung und das Orchestrieren von IT-Systemen, auf deinem System aus. Es zeigt Informationen über die installierte Ansible-Version und andere relevante Details an.

  2. cd ~/ansible_lxc_bsa2/: Mit diesem Befehl wechselst du in das Verzeichnis ansible_lxc_bsa2 im Benutzerverzeichnis (~/ steht normalerweise für das Benutzerverzeichnis des aktuellen Benutzers). Du änderst dein aktuelles Arbeitsverzeichnis, um in diesem Verzeichnis zu arbeiten.

  3. vi inventory: Dieser Befehl öffnet die Datei inventory im Vi-Texteditor. Die Datei inventory wird oft in Ansible verwendet, um die Zielsysteme und deren Konfiguration zu definieren .

  4. cat inventory: Mit diesem Befehl zeigst du den Inhalt der Datei inventory an. In diesem Fall scheint die Datei eine Abschnittsüberschrift [lokal] zu enthalten, gefolgt von der Konfiguration für den localhost, wobei ansible_connection=local angibt, dass die Verbindung zur Ausführung von Aufgaben lokal auf dem aktuellen Host erfolgt. Dies bedeutet, dass Ansible Aufgaben auf demselben Rechner ausführt, auf dem Ansible selbst ausgeführt wird, anstatt über das Netzwerk auf entfernte Systeme zuzugreifen.

ansible --inventory inventory -m ping
ansible -i inventory -m ping lokal

Die beiden Kommandos verwenden Ansible, ein Automatisierungstool, um eine "Ping"-Aktion auf Hosts auszuführen, die in der angegebenen Inventardatei inventory definiert sind:

  1. ansible --inventory inventory -m ping: Mit diesem Befehl führt Ansible den Modulbefehl ping auf den in der inventory-Datei definierten Hosts aus. Der Befehl ping wird häufig verwendet, um die Erreichbarkeit von Hosts zu überprüfen. Dieser Befehl verwendet die Option --inventory, um das Inventar explizit anzugeben, von dem die Hostinformationen gelesen werden sollen.

  2. ansible -i inventory -m ping lokal: Dieses Kommando ist ähnlich wie das vorherige. Es führt auch den ping-Modulbefehl auf den Hosts aus, die im Inventar unter der Gruppe [lo kal] definiert sind. Die Option -i oder --inventory wird verwendet, um das Inventar anzugeben. Der Befehl führt den Ping auf den in der [lokal]-Gruppe definierten Hosts aus, wobei die Bezeichnung lokal aus der [lokal]-Gruppe in der Inventardatei stammt.

sudo lxc-ls --fancy
vi inventory
cat inventory
[lokal]
localhost ansible_connection=local

[notme]
10.0.3.110
10.0.3.55

Die angegebenen Kommandos und Konfigurationsdateien beziehen sich auf die Verwendung von Ansible in Verbindung mit LXC-Containern (Linux Container). Hier ist eine Erklärung der Schritte:

  1. sudo lxc-ls --fancy: Dieser Befehl listet alle LXC-Container auf, die auf dem System ausgeführt werden, und gibt detaillierte Informationen zu jedem Container aus. Das sudo ist erforderlich, da das Auflisten von Containern in der Regel erhöhte Berechtigungen erfordert.

  2. vi inventory: Dieser Befehl öffnet die Datei inventory im Vi-Texteditor. In dieser Datei wird normalerweise das Ansible-Inventar definiert, in dem die Hosts und deren Konfiguration für Ansible-Aufgaben aufgeführt sind.

  3. cat inventory: Mit diesem Befehl zeigst du den Inhalt der Datei inventory an. In dieser Datei wurden zwei Gruppen definiert:

    • [lokal]: Dies ist eine Gruppe, die den "localhost" enthält, und die Verbindung zur Ausführung von Ansible-Aufgaben wird als lokal ("ansible_connection=local") konfiguriert. Das bedeut et, dass Ansible Aufgaben auf demselben Rechner ausführt, auf dem Ansible selbst ausgeführt wird, anstatt über das Netzwerk auf entfernte Systeme zuzugreifen.

    • [notme]: Dies ist eine weitere Gruppe, die zwei IP-Adressen (10.0.3.110 und 10.0.3.55) enthält. Diese Gruppe könnte für andere entfernte Hosts verwendet werden, auf die Ansible über SSH oder ein ähnliches Protokoll zugreifen soll.

Die Inventardatei "inventory" dient dazu, Ansible mitzuteilen, welche Hosts es verwalten und konfigurieren soll und wie es auf diese Hosts zugreifen soll.

ansible -i inventory -m ping notme
vi inventory 
cat inventory
[lokal]
localhost ansible_connection=local

[notme]
10.0.3.110	ansible_user=ubuntu
10.0.3.55	ansible_user=ubuntu

Der Eintrag in der Ansible-Inventardatei "10.0.3.110 ansible_user=ubuntu" enthält zusätzliche Konfigurationsinformationen für einen Host. Hier ist eine Erklärung:

  • 10.0.3.110: Dies ist die IP-Adresse des Hosts, für den dieser Eintrag gilt. Ansible wird Aufgaben auf diesem Host ausführen.

  • ansible_user=ubuntu: Dies ist eine Konfigurationsanweisung in Form von "Schlüssel=Wert". Sie gibt an, welchen Benutzernamen Ansible verwenden soll, wenn es sich auf diesem Host anmeldet. In diesem Fall ist der Benutzername "ubuntu". Das bedeutet, dass Ansible den SSH-Zugriff auf den Host unter Verwendung des Benutzernamens "ubuntu" herstellen wird, wenn es Aufgaben ausführt, die eine Remote-Verbindung erfordern.

Zusammengefasst bedeutet dieser Eintrag in der Inventardatei, dass Ansible für den Host mit der IP-Adresse "192.0.3.110" den Benutzernamen "ubuntu" verwenden soll, wenn es Aufgaben auf diesem Host ausführt, die eine SSH-Verbindung erfordern. Dies ist hilfreich, um die Anmeldeinformationen für verschiedene Hosts anzugeben, wenn sie sich von den Standardwerten unterscheiden.

ansible -i inventory -m ping notme
vi inventory 
cat inventory
[lokal]
localhost ansible_connection=local

[notme]
10.0.3.110	ansible_user=ubuntu ansible_password=ubuntu
10.0.3.55	ansible_user=ubuntu ansible_password=ubuntu

Der gegebene Ansible Inventory-Eintrag definiert eine Gruppe namens "notme", die zwei Hosts enthält. Jeder Host ist durch seine IP-Adresse identifiziert und hat die gleichen Ansible-Benutzer anmeldeinformationen (ansible_user und ansible_password), nämlich "ubuntu" für beide.

Um dies mit Gruppenvariablen zu vereinfachen, könnten Sie die Gruppenvariablen in einer separaten Datei speichern. Hier ist, wie Sie das tun können:

Aktualisieren Sie Ihre Ansible Inventory-Datei, um die Hosts der Gruppe "notme" zu referenzieren und die Gruppenvariablen einzubeziehen. Ihre Inventory-Datei könnte dann so aussehen:

[notme]
10.0.3.110
10.0.3.55

[notme:vars]
ansible_password=ubuntu
ansible_user=ubuntu

Jetzt sind die Gruppenvariablen "ansible_user" und "ansible_password" in der Gruppenvariablen-Datei definiert und werden automatisch auf alle Hosts in der Gruppe "notme" angewendet. Dies erleichtert die Verwaltung und Aktualisierung der gemeinsamen Variablen für Ihre Gruppe.

ansible -i inventory -m ping notme
ansible -i inventory -m ping all

Die beiden Ansible-Kommandos führen beide das Modul "ping" auf den in Ihrer Inventory-Datei definierten Hosts aus, aber es gibt einen wichtigen Unterschied in den Zielgruppen:

  1. ansible -i inventory -m ping notme

    Dieses Kommando führt das "ping"-Modul nur auf den Hosts aus, die der Gruppe "notme" in Ihrer Inventory-Datei zugeordnet sind. Es beschränkt sich also auf die Hosts in dieser spezifischen Gruppe.

  2. ansible -i inventory -m ping all

    Dieses Kommando führt das "ping"-Modul auf allen Hosts aus, die in Ihrer Inventory-Datei aufgeführt sind. Es ignoriert die Gruppenzuordnungen und führt den Ping-Befehl auf jedem Host in der Datei aus, unabhängig von der Gruppenzugehörigkeit.

In Zusammenfassung:

  • Das erste Kommando (ansible -i inventory -m ping notme) zielt nur auf die Hosts in der Gruppe "notme" ab.
  • Das zweite Kommando (ansible -i inventory -m ping all) zielt auf alle in Ihrer Inventory-Datei aufgeführten Hosts ab, unabhängig von ihrer Gruppenzugehörigkeit.
vi ansible.cfg
cat ansible.cfg
[defaults]
inventory = ./inventory

Dieses Kommando verwendet den Texteditor "vi" (oder "vim") zum Erstellen oder Bearbeiten der Datei ansible.cfg. In diesem Fall wird versucht, die Datei ansible.cfg im aktuellen Ver zeichnis zu öffnen. Diese Datei wird verwendet, um die Konfigurationseinstellungen für Ansible zu definieren. Sie können sie verwenden, um benutzerspezifische Einstellungen für Ansible festzulegen.

  1. cat ansible.cfg

    Dieses Kommando verwendet den Befehl "cat", um den Inhalt der Datei ansible.cfg auf der Konsole anzuzeigen. Es dient dazu, den aktuellen Inhalt der Konfigurationsdatei anzuzeigen.

In diesem Fall enthält die ansible.cfg-Datei die folgende Konfiguration:

[defaults]
inventory = ./inventory

Diese Konfiguration gibt an, dass die Standard-Inventory-Datei für Ansible im aktuellen Verzeichnis als inventory gefunden werden soll. Das bedeutet, dass Ansible diese Datei automatisch verwenden wird, um Informationen über die verfügbaren Hosts und Gruppen zu finden, es sei denn, Sie geben eine andere Inventory-Datei explizit in Ihren Ansible-Befehlen an.

Zusammengefasst werden mit diesen beiden Befehlen die Ansible-Konfigurationsdatei erstellt oder bearbeitet und die darin definierte Konfiguration wird über den cat-Befehl angezeigt.

ansible -m ping all
ansible --version
 ...
ansible [core 2.12.4]
  config file = /home/vagrant/ansible_lxc_bsa2/ansible.cfg
  ...

Das Kommando ansible --version wird verwendet, um Informationen über die installierte Ansible-Version anzuzeigen. Hier ist eine Erklärung für den gezeigten Auszug der Ausgabe:

  • ansible [core 2.12.4]: Dieser Teil der Ausgabe zeigt die installierte Ansible-Version an. In diesem Fall handelt es sich um Ansible Core Version 2.12.4. Dies gibt an, welche Hauptversion (2) und Nebenversion (12) von Ansible installiert ist, zusammen mit dem Patch-Level (4).

  • config file = /home/vagrant/ansible_lxc_bsa2/ansible.cfg: Dieser Teil der Ausgabe gibt den Pfad zur Ansible-Konfigurationsdatei an. In diesem Fall befindet sich die Konfigurationsdatei unter /home/vagrant/ansible_lxc_bsa2/ansible.cfg. Diese Datei enthält benutzerdefinierte Konfigurationseinstellungen für Ansible und kann verwendet werden, um das Verhalten von Ansible zu beeinflussen.

Die Ausgabe des ansible --version-Befehls ist nützlich, um schnell Informationen über die installierte Ansible-Version und die Konfigurationsdatei anzuzeigen, die Ansible verwendet. Dies kann hilfreich sein, um sicherzustellen, dass Sie die richtige Version von Ansible verwenden und um auf die Konfigurationseinstellungen zugreifen zu können, die in der Konfigurationsdatei definiert sind.