Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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 =&gt; {
 "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
    Autor
    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
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder