Ad-hoc-Befehle werden in Ansible verwendet, um Aufgaben sofort auszuführen, und Sie müssen sie nicht zur späteren Verwendung speichern. In diesem Artikel geht es um Ansible Ad-hoc-Befehle.
Es gibt mehrere Aufgaben in Ansible, für die Sie keine separaten Ansible-Playbook schreiben müssen; Sie können einfach einen Ansible Ad-hoc-Befehl für diese Aufgabe ausführen. Dabei handelt es sich um Einzeiler-Befehle zur Ausführung einer einzelnen Aufgabe auf dem Zielhost. Diese Befehle befinden sich in /usr/bin/ansible
.
Was ist ein Ad-hoc-Befehl von Ansible?
Ein Ansible Ad-hoc-Befehl ist ein nützliches Tool, mit dem Sie eine einzelne Aufgabe auf einer Gruppe von Servern ausführen können, ohne ein vollständiges Playbook erstellen zu müssen. Diese Befehle eignen sich hervorragend für einfache Aufgaben wie die Überprüfung des Status eines Dienstes oder die schnelle Ausführung eines Befehls. Für komplexere Aufgaben wie Softwareinstallationen ist es jedoch in der Regel besser, ein Playbook zu verwenden.
Um einen Ad-hoc-Befehl auszuführen, geben Sie eine einzige Codezeile mit den relevanten Informationen ein, z. B. den Namen des gewünschten Moduls und alle Parameter, die ihm übergeben werden müssen.
Die Syntax für einen Ansible-Ad-hoc-Befehl lautet wie folgt:
ansible <Hosts> -m <Modul> -a "<Argumente>"
Hier:
- ist eine durch Komma getrennte Liste von Zielhosts,
- ist der Name des zu verwendenden Ansible-Moduls, und
- sind die Argumente, die dem Modul übergeben werden sollen.
Wenn Sie zum Beispiel den Speicherplatz auf einer Gruppe von Servern überprüfen möchten, können Sie den Befehl df -h mit dem Shell-Modul wie folgt verwenden:
ansible web_servers -m shell -a "df -h"
Das Shell-Modul würde den Befehl df -h auf allen Servern der Gruppe web_servers ausführen. Anschließend können Sie die Ausgaben der einzelnen Server in Ihrer Konsole sehen. Das ist super einfach und effizient!
Warum Ansible Ad-hoc-Befehle verwenden?
Ad-hoc-Befehle sind nicht nur schnell und einfach zu verwenden, sondern eignen sich auch perfekt für einfache, einmalige Aufgaben, die keine große Komplexität erfordern. Außerdem sind sie eine gute Möglichkeit, neue Module oder Befehle auszuprobieren, bevor Sie sie zu einem Playbook hinzufügen. So können Sie Fehler vermeiden und langfristig Zeit sparen.
Wenn Sie ein Problem auf einem Server beheben, können Sie damit den Status eines Dienstes überprüfen, Protokolldateien einsehen oder andere Diagnoseaufgaben durchführen.
Darüber hinaus sind Ad-hoc-Befehle auch flexibel! Sie können sie für alle möglichen Aufgaben verwenden, z.B. für die Installation von Paketen, das Kopieren von Dateien oder die gleichzeitige Ausführung von Befehlen auf mehreren Servern.
Wenn Sie die Serververwaltung einfacher und effizienter gestalten wollen, sind die Ad-hoc-Befehle von Ansible genau das Richtige für Sie!
Hier sind einige der Möglichkeiten, wie Sie sie verwenden können:
- Neustart von Servern
- Verwalten von Dateien
- Verwaltung von Paketen
- Verwaltung von Benutzern und Gruppen
- Verwaltung von Diensten
- Sammeln von Fakten
- Muster und Ad-hoc-Befehle
Aufgaben wie das Anpingen aller Hosts, um zu prüfen, ob sie laufen, das Kopieren einer Datei, der Neustart von Servern und die Installation eines Pakets lassen sich ganz einfach mit Ansible Ad-hoc-Befehlen erledigen. Hier finden Sie eine Liste der grundlegenden Ansible Ad-hoc-Befehle, die Sie kennen müssen.
Grundlegende Befehle
Der folgende Ad-hoc-Befehl führt ein Ping-Modul auf allen Hosts in der Inventarisierungsdatei aus. Dabei ist -m
die Option für ein Modul.
<strong>root@geekflare:/home/geekflare# ansible all -m ping</strong>
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Der unten aufgeführte Befehl führt das Setup-Modul auf eine Gruppe von Hosts aus - dem Kunde, der in der Inventarisierungsdatei '/etc/ansible/hosts' enthalten ist.
root@geekflare:/home/geekflare# ansible Client -m setup -a "filter=ansible_distribution*"
node1 | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "Ubuntu",
"ansible_distribution_file_parsed": true,
"ansible_distribution_file_path": "/etc/os-release",
"ansible_distribution_file_variety": "Debian",
"ansible_distribution_major_version": "18",
"ansible_distribution_release": "cosmic",
"ansible_distribution_version": "18.10",
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
}
Der unten stehende Befehl dient zur Abfrage der SSH-Passwortauthentifizierung. Sie müssen die Option -ask-pass
am Ende des Befehls hinzufügen. Nachdem Sie den Befehl ausgeführt haben, werden Sie aufgefordert, das SSH-Passwort einzugeben.
root@geekflare:/home/geekflare# ansible Client -m ping --ask-pass
SSH-Passwort:
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Der folgende Befehl bietet Ihnen die Möglichkeit, Ad-hoc-Befehle als Nicht-Root-Benutzer mit Root-Rechten auszuführen. Mit der Option --become
erhalten Sie die Root-Rechte und mit der Option -K
wird das Passwort abgefragt.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'fdisk -l' -u geekflare --become -K
BECOME Passwort:
node1 | CHANGED | rc=0 >>
Festplatte /dev/loop0: 14.5 MiB, 15208448 bytes, 29704 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplatte /dev/loop2: 42.1 MiB, 44183552 Bytes, 86296 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplatte /dev/loop3: 149.9 MiB, 157184000 Bytes, 307000 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Platte /dev/loop5: 140.7 MiB, 147501056 Bytes, 288088 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Platte /dev/loop6: 151.2 MiB, 158584832 Bytes, 309736 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Platte /dev/loop7: 14.8 MiB, 15458304 Bytes, 30192 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplatte /dev/sda: 500 GiB, 536870912000 Bytes, 1048576000 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Disklabel-Typ: dos
Disk-Identifikator: 0xcef957f5
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 462639103 462637056 220.6G 83 Linux
/dev/sda2 * 462639104 464592895 1953792 954M 83 Linux
/dev/sda3 464592896 482168831 17575936 8.4G 82 Linux swap / Solaris
/dev/sda4 482168832 1048573951 566405120 270.1G 83 Linux
Platte /dev/loop8: 4 MiB, 4218880 Bytes, 8240 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Dieser Ad-hoc-Befehl wird verwendet, um das System mit der Option -f neu zu starten, um die Anzahl der Gabeln zu definieren.
root@geekflare:/home/geekflare# ansible Client -a "/sbin/reboot" -f 1
Dateiübertragung
Der folgende ansible Ad-hoc-Befehl wird verwendet, um eine Datei von einer Quelle zu einem Ziel für eine in der Inventardatei definierte Gruppe von Hosts (Client) zu kopieren. Nachdem Sie das Passwort eingegeben haben, lautet die Ausgabe mit dem Parameter "change" "true", was bedeutet, dass die Datei an den Zielort kopiert wurde.
root@geekflare:/home/geekflare# ansible Client -m copy -a 'src=/home/geekflare/nginx.yml dest=/home/geekflare/Desktop/ owner=root mode=0644' -u root --become -K
BECOME password:
node1 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "5631822866afd5f19b928edb3ba018385df22dd3",
"dest": "/home/geekflare/Desktop/nginx.yml",
"gid": 0,
"group": "root",
"md5sum": "0d6ffe1069fc25ad4f8ad700277c4634",
"mode": "0644",
"owner": "root",
"size": 280,
"src": "/root/.ansible/tmp/ansible-tmp-1562253463.3-214622150088155/source",
"state": "file",
"uid": 0
}
Führen Sie den unten stehenden Befehl aus, um zu überprüfen, ob das Kopiermodul korrekt funktioniert hat oder nicht. Die kopierte Datei sollte an dem im vorherigen Befehl genannten Zielort ankommen.
root@geekflare:/home/geekflare# ls Desktop/
nginx.yml
Ich erstelle ein neues Verzeichnis, um das Fetch-Modul mit dem nächsten Ad-hoc-Befehl auszuführen.
root@geekflare:/home/geekflare# mkdir example
root@geekflare:/home/geekflare# ls
Desktop Dokumente example examples.desktop nginx_new.yml nginx.yml
Der unten stehende ansible ad-hoc-Befehl wird verwendet, um eine Datei von einem im Befehl definierten Host herunterzuladen. In diesem Befehl laden wir eine Datei mithilfe des fetch-Moduls vom Server node1 auf ein lokales Ziel auf dem ansible-Knoten herunter.
root@geekflare:/home/geekflare# ansible node1 -m fetch -a 'src=/etc/sudoers.d/nginx.yml dest=/home/geekflare/example/ flat=yes'
node1 | SUCCESS => {
"changed": false,
"checksum": "5631822866afd5f19b928edb3ba018385df22dd3",
"dest": "/home/geekflare/example/nginx.yml",
"file": "/etc/sudoers.d/nginx.yml",
"md5sum": "0d6ffe1069fc25ad4f8ad700277c4634"
}
Überprüfen Sie, ob die Datei auf das im Befehl genannte Ziel heruntergeladen wurde.
root@geekflare:/home/geekflare# ls beispiel
nginx.yml
Pakete verwalten
Der unten aufgeführte Befehl installiert nginx auf einer Gruppe von Hosts (Client), die mit einem apt-Modul angegeben wird.
root@geekflare:/home/geekflare# ansible Client -m apt -a 'name=nginx state=latest' --become
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"cache_update_time": 1562411227,
"cache_updated": false,
"changed": false
}
Der unten aufgeführte Befehl entfernt nginx auf einer Gruppe von Hosts (Client) mit Hilfe des apt-Moduls und bereinigt alle zugehörigen Konfigurationen.
root@geekflare:/home/geekflare# ansible Client -m apt -a 'name=nginx state=absent purge=yes' --become
node1 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"stderr": "",
"stderr_lines": [],
"stdout": "Paketlisten lesen...\nAufbau des Abhängigkeitsbaums...\nLesen der Statusinformationen...\nDie folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:\n libnginx-mod-http-geoip libnginx-mod-http-image-filter\n libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream\n nginx-common nginx-core\nUm sie zu entfernen, verwenden Sie 'sudo apt autoremove'.\nDie folgenden Pakete werden ENTFERNT:\n nginx*\n0 aktualisiert, 0 neu installiert, 1 zu entfernen und 241 nicht aktualisiert.\nNach dieser Operation werden 44,0 kB Festplattenplatz freigegeben.\n(Datenbank lesen ... \r(Lesen der Datenbank ... 5%\r(Lesen der Datenbank ... 10%\r(Lesen der Datenbank ... 15%\r(Lesen einer Datenbank ... 20%\r(Lesen einer Datenbank ... 25%\r(Lesen einer Datenbank ... 30%\r(Datenbank lesen ... 35%\r(Lesen von Datenbanken ... 40%\r(Lesen Datenbank ... 45%\r(Lesen von Datenbanken ... 50%\r(Lesen Datenbank ... 55%\r(Lesen Datenbank ... 60%\r(Lesen Datenbank ... 65%\r(Lesen Datenbank ... 70%\r(Lesen Datenbank ... 75%\r(Lesen Datenbank ... 80%\r(Lesen Datenbank ... 85%\r(Lesen Datenbank ... 90%\r(Lesen Datenbank ... 95%\r(Lesen Datenbank ... 100%\r(Datenbank lesen ... 180191 Dateien und Verzeichnisse sind derzeit installiert.)\r\nEntfernen von nginx (1.15.5-0ubuntu2.1) ...\r\n",
"stdout_lines": [
"Paketlisten lesen...",
"Abhängigkeitsstruktur aufbauen...",
"Statusinformationen lesen...",
"Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:",
" libnginx-mod-http-geoip libnginx-mod-http-image-filter",
" libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream",
" nginx-common nginx-core",
"Verwenden Sie 'sudo apt autoremove' um sie zu entfernen.",
"Die folgenden Pakete werden ENTFERNT:",
" nginx*",
"0 aktualisiert, 0 neu installiert, 1 zu entfernen und 241 nicht aktualisiert.",
"Nach dieser Operation werden 44,0 kB Festplattenplatz freigegeben.",
"(Datenbank lesen ... ",
"(Lesen der Datenbank ... 5%",
"(Datenbank lesen ... 10%",
"(Datenbank lesen ... 15%",
"(Lesen der Datenbank ... 20%",
"(Lesen der Datenbank ... 25%",
"(Lesen der Datenbank ... 30%",
"(Lesen der Datenbank ... 35%",
"(Lesen der Datenbank ... 40%",
"(Lesen der Datenbank ... 45%",
"(Lesen der Datenbank ... 50%",
"(Lesen der Datenbank ... 55%",
"(Lesen der Datenbank ... 60%",
"(Lesen der Datenbank ... 65%",
"(Lesen der Datenbank ... 70%",
"(Lesen der Datenbank ... 75%",
"(Lesen der Datenbank ... 80%",
"(Lesen der Datenbank ... 85%",
"(Lesen der Datenbank ... 90%",
"(Lesen der Datenbank ... 95%",
"(Lesen der Datenbank ... 100%",
"(Lesen der Datenbank ... 180191 Dateien und Verzeichnisse sind derzeit installiert.)",
"Entfernen von nginx (1.15.5-0ubuntu2.1) ..."
]
}
Dienste verwalten
Der folgende Ad-hoc-Befehl von Ansible führt das Service-Modul aus, um nginx auf dem Host zu starten. Der Statuswert sollte gestartet sein.
root@geekflare:/home/geekflare# ansible Client -m service -a 'name=nginx state=started enabled=yes' --become
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"enabled": true,
"name": "nginx",
"state": "gestartet",
"status": {
"ActiveEnterTimestamp": "Sat 2019-07-06 08:28:02 EDT",
"ActiveEnterTimestampMonotonic": "31411371",
"ActiveExitTimestampMonotonic": "0",
"ActiveState": "active",
"After": "sysinit.target system.slice systemd-journald.socket basic.target network.target",
"AllowIsolate": "no",
"AmbientCapabilities": "",
"AssertResult": "yes",
"AssertTimestamp": "Sat 2019-07-06 08:27:59 EDT",
"AssertTimestampMonotonic": "27694868",
"Before": "multi-user.target shutdown.target",
"BlockIOAccounting": "nein",
"BlockIOWeight": "[nicht festgelegt]",
"CapabilityBoundingSet": "cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend",
"CollectMode": "inactive",
"ConditionResult": "yes",
"ConditionTimestamp": "Sat 2019-07-06 08:27:59 EDT",
"ConditionTimestampMonotonic": "27694867",
"ConfigurationDirectoryMode": "0755",
"Conflicts": "shutdown.target",
"ControlGroup": "/system.slice/nginx.service",
"ControlPID": "0",
"ExecMainStartTimestamp": "Sat 2019-07-06 08:28:02 EDT",
"ExecMainStartTimestampMonotonic": "31411353",
"ExecMainStatus": "0",
"ExecReload": "{ path=/usr/sbin/nginx ; argv[]=/usr/sbin/nginx -g daemon on; master_process on; -s reload ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
"ExecStart": "{ path=/usr/sbin/nginx ; argv[]=/usr/sbin/nginx -g daemon on; master_process on; ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
"ExecStartPre": "{ path=/usr/sbin/nginx ; argv[]=/usr/sbin/nginx -t -q -g daemon on; master_process on; ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
"ExecStop": "{ path=/sbin/start-stop-daemon ; argv[]=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid ; ignore_errors=yes ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
"FailureAction": "keine",
"FileDescriptorStoreMax": "0",
"FragmentPath": "/lib/systemd/system/nginx.service",
"GID": "[nicht festgelegt]",
"GuessMainPID": "ja",
"IOAccounting": "nein",
"IOSchedulingClass": "0",
"IOSchedulingPriority": "0",
"IOWeight": "[nicht festgelegt]",
}
}
Das unten aufgeführte Servicemodul stoppt nginx auf dem Host. Der Statuswert ändert sich zu stopped.
root@geekflare:/home/geekflare# ansible Client -m service -a 'name=nginx state=stopped' --become
node1 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"name": "nginx",
"state": "stopped",
"status": {
"ActiveEnterTimestamp": "Sat 2019-07-06 08:28:02 EDT",
"ActiveEnterTimestampMonotonic": "31411371",
"ActiveExitTimestampMonotonic": "0",
"ActiveState": "active",
"After": "sysinit.target system.slice systemd-journald.socket basic.target network.target",
"AllowIsolate": "no",
"AmbientCapabilities": "",
"AssertResult": "yes",
"AssertTimestamp": "Sat 2019-07-06 08:27:59 EDT",
"AssertTimestampMonotonic": "27694868",
"Before": "multi-user.target shutdown.target",
"BlockIOAccounting": "nein",
"BlockIOWeight": "[nicht festgelegt]",
"CPUAccounting": "nein",
"CPUQuotaPerSecUSec": "unendlich",
"CanReload": "ja",
"CanStart": "ja",
"CanStop": "ja",
"CapabilityBoundingSet": "cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend",
"CollectMode": "inactive",
"ConditionResult": "yes",
"ConditionTimestamp": "Sat 2019-07-06 08:27:59 EDT",
"ConditionTimestampMonotonic": "27694867",
"ConfigurationDirectoryMode": "0755",
"Conflicts": "shutdown.target",
"ControlGroup": "/system.slice/nginx.service",
"ControlPID": "0",
"DefaultDependencies": "yes",
"Delegate": "nein",
"Beschreibung": "Ein hochleistungsfähiger Webserver und ein Reverse-Proxy-Server",
"DevicePolicy": "auto",
"Dokumentation": "man:nginx(8)",
"DynamicUser": "nein",
}
}
Überprüfen des Systems
Der unten aufgeführte Ad-hoc-Befehl von Ansible führt ein Shell-Modul aus, um die verfügbare Festplatte auf den Root-Partitionen zu überprüfen.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'df -h /dev/sda2' --become
node1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 923M 113M 748M 14% /boot
Der folgende Befehl führt ein Shell-Modul aus, um den freien Speicher (RAM) auf dem Host zu überprüfen.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'free -m' --become
node1 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 5101 854 2760 27 1487 3947
Swap: 8581 0 8581
Dieser Befehl prüft die Betriebszeit der einzelnen laufenden Server.
root@geekflare:/home/geekflare# ansible Client -a "uptime"
node1 | CHANGED | rc=0 >>
11:31:17 up 1 day, 2:40, 2 users, load average: 0.23, 0.05, 0.02
Sammeln von Fakten
Mit dem folgenden ansible-Befehl ad-hoc erhalten Sie alle ad-hoc-Informationen zu Ihrem System, einschließlich aller im System vorhandenen Variablen.
root@geekflare:/home/geekflare# ansible all -m setup
node1 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"172.17.0.1",
"10.0.2.15"
],
"ansible_all_ipv6_addresses": [
"fe80::763e:c0b4:14df:b273"
],
"ansible_apparmor": {
"status": "aktiviert"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "12/01/2006",
"ansible_bios_version": "VirtualBox",
"ansible_cmdline": {
"BOOT_IMAGE": "/vmlinuz-4.18.0-25-generic",
"quiet": true,
"ro": true,
"root": "UUID=5f85d8b7-0ab2-48c9-9e6e-4ecfbcbdaa83",
"splash": true
},
"ansible_date_time": {
"date": "2019-07-07",
"day": "07",
"epoch": "1562525628",
"hour": "14",
"iso8601": "2019-07-07T18:53:48Z",
"iso8601_basic": "20190707T145348850596",
"iso8601_basic_short": "20190707T145348",
"iso8601_micro": "2019-07-07T18:53:48.850697Z",
"minute": "53",
"month": "07",
"second": "48",
"time": "14:53:48",
"tz": "EDT",
"tz_offset": "-0400",
"weekday": "Sonntag",
"weekday_number": "0",
"weeknumber": "26",
"Jahr": "2019"
},
"ansible_default_ipv4": {
"Adresse": "10.0.2.15",
"alias": "enp0s3",
"broadcast": "10.0.2.255",
"gateway": "10.0.2.2",
"interface": "enp0s3",
"macaddress": "08:00:27:68:64:9a",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "10.0.2.0",
"type": "ether"
},
"ansible_default_ipv6": {},
"ansible_device_links": {
"ids": {
"sda": [
"ata-VBOX_HARDDISK_VB3a0a2351-0b6c0ed5"
],
"sda1": [
"ata-VBOX_HARDDISK_VB3a0a2351-0b6c0ed5-part1"
],
"sda2": [
"ata-VBOX_HARDDISK_VB3a0a2351-0b6c0ed5-part2"
],
"sda3": [
"ata-VBOX_HARDDISK_VB3a0a2351-0b6c0ed5-part3"
],
"sda4": [
"ata-VBOX_HARDDISK_VB3a0a2351-0b6c0ed5-part4"
],
"sr0": [
"ata-VBOX_CD-ROM_VB2-01700376"
]
},
"labels": {
"sr0": [
"VBox_GAs_6.0.2"
]
},
"masters": {},
"uuids": {
"sda1": [
"5f85d8b7-0ab2-48c9-9e6e-4ecfbcbdaa83"
],
"sda2": [
"b8b7f87b-c3bf-48ed-a44c-f9b3ce0afbe5"
],
"sda3": [
"a6c77fa6-e292-4a0d-b21f-8804f1949bbd"
],
"sda4": [
"8207f970-4d9a-47db-a5d5-f620e5b17b7b"
],
"sr0": [
"2019-01-14-14-57-19-65"
]
}
},
"ansible_devices": {
"loop0": {
"holders": [],
"host": "",
"links": {
"ids": [],
"labels": [],
"masters": [],
"uuids": []
},
"model": null,
"partitions": {},
"removable": "0",
"rotational": "1",
"sas_address": null,
"sas_device_handle": null,
"scheduler_mode": "none",
"sectors": "29704",
"sectorsize": "512",
"size": "14.50 MB",
"support_discard": "4096",
"vendor": null,
"virtual": 1
},
"loop1": {
"holders": [],
"host": "",
"links": {
"ids": [],
"labels": [],
"masters": [],
"uuids": []
},
"model": null,
"partitions": {},
"removable": "0",
"rotational": "1",
"sas_address": null,
"sas_device_handle": null,
"scheduler_mode": "none",
"sectors": "0",
"sectorsize": "512",
"size": "0.00 Bytes",
"support_discard": "4096",
"vendor": null,
"virtual": 1
},
}
So, das war alles über Ansible Ad-hoc-Befehle. Probieren Sie diese Befehle in Ihrem Ansible-Setup aus. Verwenden Sie diese Befehle, um Ansible-Module auszuführen, ohne ein Ansible-Playbook zur Durchführung dieser Aufgaben zu schreiben. Hinterlassen Sie einen Kommentar, wenn Sie bei der Ausführung dieser Befehle auf ein Problem stoßen.
-
Avi ist ein Technik-Enthusiast mit Fachkenntnissen in Trendtechnologien wie DevOps, Cloud Computing, Big Data und vielen mehr. Seine Leidenschaft ist es, Spitzentechnologien zu lernen und sein Wissen mit anderen zu teilen, indem er... mehr lesen