Dies ist eine alte Version des Dokuments!


Ansible - erweiterte Konfigurationsbeispiele: LOREM IPSUM DOLOR SIT AMET

Bild: Ansible Logo

In verteilten und getrennten Netz(werk)umgebungen ist es sehr oft nicht ohne Aufwand möglich zu Administrations- und Orchestrierungsaufgaben alle Hosts zu erreichen.

Schauen wir uns hierzu einfach mal nachstehende Skizze an.

InternetDMZDMZ_HOSTsIntranetfremdgehostetes_SystemHost beim Housing-ProviderHostname <was-das-auch-immer-für-ein geiler-FQDN-sein-mag>IP-Adresse: aa-bb-cc-ddbredmzEDMZ-Netzwerkswitch (bredmz)Netz:10.0.0.0/24bridmzEDMZ-Netzwerkswitch (bridmz)Netz:10.10.0.0/24edmz_switchEDMZ-SwitchNetgear Typ: xFWBFQDN: vml000010.dmz.nausch.org--------Services: iptablesFWCFQDN: vml000020.dmz.nausch.org--------Services: iptablesIDMZ_Repository_HostFQDN: vml000050.dmz.nausch.orgCNAME : syslog, tftp, installIP (IDMZ) : eth0 - 52:54:00:19:08:67 - 10.0.0.50Services : syslog, httpd, rpm-repository, tftp/pxeEDMZ_Repository_HostFQDN: vml100080.dmz.nausch.orgCNAME : mailIP (EDMZ) : eth0 - 52:54:00:14:12:71 - 10.0.0.50Services : syslog, httpd, rpm-repository, tftp/pxeSwitchPhysikalischer Netzwerk-SwitchNetz 10.10.10.0/26WorkstationGerät: Djangos Admin-WorkstationHostname: pml010040CNAME: office-workMAC:IP:10.10.10.40Firewall_A---A-Firewall---

Von der Admin-Workstation bzw. dem Ansible-Controll-Node aus, wollen wir nun nicht nur zum nächstgelegenen Host erreichen, sondern auch zum übernächsten oder gar zu einem Host im Internet, den wir aber aus Sicherheitsgründen nicht direkt erreichen dürfen und auch können.

Die Komfortabelste Variante ist nun die Nutzung der Option ProxyCommand. Bei „nur“ einem Jump-Host kann man dies im Inventory noch recht bequem und einfach abbilden. Weitaus schwieriger wird die Sache, bei Umgebungen, bei denen mehrere Jumphost beteiligt sind. Hier bietet es sich an, die SSH-Client Konfiguration des Ansible Control- bzw Admin-Users zu verwenden!

Weitaus einfacher gestaltet sich o.g. Szenario in dem man auf die SSH-Clientkonfigurationsdatei ~/.ssh/config zurückgreift. Nachfolgendes Beispiel zeigt exemplarisch solch eine Clientspezifische Konfigurationsdatei:

 $ vim ~/.ssh/config
~/.ssh/config
# Default Werte
Host * 
    Port 22
    Protocol 2
    user admin
 
# Django : 2012-06-13
# ssh-jumps über mehrere Sprunghosts
 
# Erster Sprunghost (fwc) - direkt erreichbar
# Host -->  fwc
Host fwc
    Hostname firewall-c.idmz.nausch.org
    IdentityFile ~/.ssh/id_ed25519_idmz 
 
# Zweiter Sprunghost (fwb) - nur über fwc erreichbar
# Host -->  fwc --> fwb
Host fwb
    Hostname firewall-b.edmz.nausch.org
    IdentityFile ~/.ssh/id_ed25519_edmz
    ProxyCommand  ssh -A -q -W %h:%p fwc
 
# Dritter Sprunghost (fwa) - nur über fwb erreichbar
# Host --> fwc --> fwb --> fwa 
Host fwa
    Hostname firewall-a.nausch.org
    Port 22222
    user sysadmin
    IdentityFile ~/.ssh/id_ed25519_edmz
    ProxyCommand  ssh -A -q -W %h:%p fwc
 
# externer Server im Internet nur über externe Firewall "A" erreichbar
# also: Host --> fwc --> fwb --> fwa --> daxie
Host s1u7
    Hostname <was-das-auch-immer-für-ein geiler-FQDN-sein-mag>
    Port 42422
    user n3rd
    IdentityFile ~/.ssh/id_ed25519_n3rd
    ProxyCommand  ssh -A -q -W %h:%p fwa

Nun können wir ganz einfach direkt einen Tunnel zu unserem Zielhost aufspannen, genauso also würden wir den Zielhost direkt „sehen“.

 $ ssh fwa

Auch können wir nun ohne großem Heckmeck Dateien von einem Ende zum anderen Ende kopieren.

 $ scp ~/Downloads/enigmail-1.4-sm+tb.xpi 51u7:/tmp/
 $ scp 51u7:/home/babe/51lv14/04x.png .

Somit ist natürlich auch Ansible in der Lage die definierten Zielhost aus dem Inventory ohne Probleme zu erreichen, da hier die SSH-Client-Konfiguration unseres Admin-Accounts auf unserem Ansible-Controll-Node verwendet wird.

:KRIT: FIXME :KRIT:

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • linux/ansible/playbook_example_10.1663938075.txt.gz
  • Zuletzt geändert: 23.09.2022 13:01.
  • von django