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 Command.
In Ansible gibt es mehrere Aufgaben, bei denen Sie keine separate Aufgabe schreiben müssen Ansible Spielbuch dafür; Sie können für diese Aufgabe einfach einen ansiblen Ad-hoc-Befehl ausführen. Dies sind einzeilige Befehle zum Ausführen einer einzelnen Aufgabe auf dem Zielhost. Diese Befehle sind in vorhanden /usr/bin/ansible
.
What is Ansible Ad-hoc Command?
An Ansible Der 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 zum Ausführen einfacher Aufgaben wie dem Überprüfen des Status eines Dienstes oder dem schnellen Ausführen eines Befehls. Für komplexere Aufgaben wie Softwareinstallationen ist es jedoch normalerweise besser, ein Playbook zu verwenden.
Zur Ausführung eines Ad-hoc-Befehls wird eine einzelne Codezeile mit den relevanten Informationen eingegeben, z. B. dem gewünschten Modulnamen und allen erforderlichen Parametern.
Die Syntax für einen Ansible-Ad-hoc-Befehl lautet wie folgt:
ansible <hosts> -m <module> -a "<arguments>"
Hier:
- ist eine durch Kommas getrennte Liste von Zielhosts,
- ist der Name des zu verwendenden Ansible-Moduls und
- sind irgendwelche Argumente, die an das Modul übergeben werden sollen.
Wenn Sie beispielsweise 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 in der Gruppe web_servers ausführen. Dann können Sie die Ausgabe von jedem Server in Ihrer Konsole sehen. Es ist super einfach und effizient!
Warum Ad-hoc-Befehle von Ansible verwenden?
Abgesehen davon, dass sie schnell und einfach zu verwenden sind, eignen sich Ad-hoc-Befehle perfekt für einfache, einmalige Aufgaben, die nicht viel Komplexität erfordern. Außerdem sind sie eine großartige Möglichkeit, neue Module oder Befehle auszuprobieren, bevor Sie sie einem Playbook hinzufügen. Dies kann Ihnen helfen, Fehler zu vermeiden und langfristig Zeit zu sparen.
Wenn Sie ein Problem auf einem Server beheben, können Sie sie verwenden, um den Status eines Dienstes zu überprüfen, Protokolldateien anzuzeigen oder andere Diagnoseaufgaben durchzuführen.
Darüber hinaus sind auch Ad-hoc-Befehle flexibel! Sie können sie für alle Arten von Aufgaben verwenden, z. B. Pakete installieren, Dateien kopieren oder Befehle auf mehreren Servern gleichzeitig ausführen.
Wenn Sie die Serververwaltung einfacher und effizienter gestalten möchten, sind Ad-hoc-Befehle von Ansible genau das Richtige für Sie!
Hier sind einige Möglichkeiten, wie Sie sie verwenden können:
- Neustart von Servern
- Verwalten von Dateien
- Pakete verwalten
- Verwalten von Benutzern und Gruppen
- Verwaltung von Diensten
- Fakten sammeln
- Muster und Ad-hoc-Befehle
Aufgaben wie das Anpingen aller Hosts, um zu überprüfen, ob sie ausgeführt werden, das Kopieren einer Datei, das Neustarten von Servern und das Installieren eines Pakets können einfach über Ansible Ad-hoc-Befehle erledigt werden. Hier ist eine Liste grundlegender Ansible Ad-hoc-Befehle, die Sie kennen müssen.
Basic Commands
Mit dem folgenden Ad-hoc-Befehl wird ein Ping-Modul auf allen Hosts in der Inventardatei ausgeführt. Hier -m
ist 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 erwähnte Befehl führt das Setup-Modul auf einer Gruppe von Hosts aus - Kunden vorhanden in der Inventardatei '/ etc / ansible / hosts'.
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 folgende Befehl wird verwendet, um die SSH-Kennwortauthentifizierung aufzufordern. Sie müssen hinzufügen –ask-pass
Option am Ende des Befehls. Nach dem Ausführen des Befehls werden Sie aufgefordert, das SSH-Kennwort einzugeben.
root@geekflare:/home/geekflare# ansible Client -m ping --ask-pass
SSH password:
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Mit dem folgenden Befehl können Sie Ad-hoc-Befehle als Nicht-Root-Benutzer mit Root-Rechten ausführen. Die Option --become
gibt die Root-Rechte und -K
Option fragt nach dem Passwort.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'fdisk -l' -u geekflare --become -K
BECOME password:
node1 | CHANGED | rc=0 >>
Disk /dev/loop0: 14.5 MiB, 15208448 bytes, 29704 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop2: 42.1 MiB, 44183552 bytes, 86296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop3: 149.9 MiB, 157184000 bytes, 307000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop5: 140.7 MiB, 147501056 bytes, 288088 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop6: 151.2 MiB, 158584832 bytes, 309736 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop7: 14.8 MiB, 15458304 bytes, 30192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 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
Disk /dev/loop8: 4 MiB, 4218880 bytes, 8240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Dieser Ad-hoc-Befehl wird verwendet, um das System mit der Option -f zum Definieren der Anzahl der Gabeln neu zu starten.
root@geekflare:/home/geekflare# ansible Client -a "/sbin/reboot" -f 1
File Transfer
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, ist die Ausgabe mit dem Parameter "change" "true", was bedeutet, dass die Datei an das Ziel 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 folgenden Befehl aus, um zu überprüfen, ob das Kopiermodul ordnungsgemäß funktioniert hat oder nicht. Die kopierte Datei sollte an dem im vorherigen Befehl angegebenen Ziel ankommen.
root@geekflare:/home/geekflare# ls Desktop/
nginx.yml
Ich erstelle ein neues Verzeichnis, um das Abrufmodul n nächsten Ad-hoc-Befehl auszuführen.
root@geekflare:/home/geekflare# mkdir example
root@geekflare:/home/geekflare# ls
Desktop Documents example examples.desktop nginx_new.yml nginx.yml
Der folgende ansible Ad-hoc-Befehl wird verwendet, um eine Datei von einem im Befehl definierten Host herunterzuladen. In diesem Befehl laden wir eine Datei mit dem Abrufmodul vom Server knoten1 zu einem lokalen Ziel auf einem ansiblen 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 an dem im Befehl angegebenen Ziel heruntergeladen wurde oder nicht.
root@geekflare:/home/geekflare# ls example
nginx.yml
Manage Packages
Der unten erwähnte Befehl installiert nginx auf einer Gruppe von Hosts (Client), die mit einem apt-Modul erwähnt werden.
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 erwähnte Befehl entfernt nginx auf einer Gruppe von Hosts (Client) mithilfe des apt-Moduls und löscht 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": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nThe following packages were automatically installed and are no longer required:\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\nUse 'sudo apt autoremove' to remove them.\nThe following packages will be REMOVED:\n nginx*\n0 upgraded, 0 newly installed, 1 to remove and 241 not upgraded.\nAfter this operation, 44.0 kB disk space will be freed.\n(Reading database ... \r(Reading database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Reading database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\r(Reading database ... 95%\r(Reading database ... 100%\r(Reading database ... 180191 files and directories currently installed.)\r\nRemoving nginx (1.15.5-0ubuntu2.1) ...\r\n",
"stdout_lines": [
"Reading package lists...",
"Building dependency tree...",
"Reading state information...",
"The following packages were automatically installed and are no longer required:",
" libnginx-mod-http-geoip libnginx-mod-http-image-filter",
" libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream",
" nginx-common nginx-core",
"Use 'sudo apt autoremove' to remove them.",
"The following packages will be REMOVED:",
" nginx*",
"0 upgraded, 0 newly installed, 1 to remove and 241 not upgraded.",
"After this operation, 44.0 kB disk space will be freed.",
"(Reading database ... ",
"(Reading database ... 5%",
"(Reading database ... 10%",
"(Reading database ... 15%",
"(Reading database ... 20%",
"(Reading database ... 25%",
"(Reading database ... 30%",
"(Reading database ... 35%",
"(Reading database ... 40%",
"(Reading database ... 45%",
"(Reading database ... 50%",
"(Reading database ... 55%",
"(Reading database ... 60%",
"(Reading database ... 65%",
"(Reading database ... 70%",
"(Reading database ... 75%",
"(Reading database ... 80%",
"(Reading database ... 85%",
"(Reading database ... 90%",
"(Reading database ... 95%",
"(Reading database ... 100%",
"(Reading database ... 180191 files and directories currently installed.)",
"Removing nginx (1.15.5-0ubuntu2.1) ..."
]
}
Manage Services
Der folgende adible Ad-hoc-Befehl führt das Servicemodul aus, um nginx auf dem Host zu starten. Der Statuswert sollte gestartet werden.
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": "started",
"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": "no",
"BlockIOWeight": "[not set]",
"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": "none",
"FileDescriptorStoreMax": "0",
"FragmentPath": "/lib/systemd/system/nginx.service",
"GID": "[not set]",
"GuessMainPID": "yes",
"IOAccounting": "no",
"IOSchedulingClass": "0",
"IOSchedulingPriority": "0",
"IOWeight": "[not set]",
}
}
Im Folgenden wird das Servicemodul ausgeführt, um nginx auf dem Host zu stoppen. Der Statuswert ändert sich in gestoppt.
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": "no",
"BlockIOWeight": "[not set]",
"CPUAccounting": "no",
"CPUQuotaPerSecUSec": "infinity",
"CanReload": "yes",
"CanStart": "yes",
"CanStop": "yes",
"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": "no",
"Description": "A high performance web server and a reverse proxy server",
"DevicePolicy": "auto",
"Documentation": "man:nginx(8)",
"DynamicUser": "no",
}
}
Checking the System
Der unten erwähnte ansible Ad-hoc-Befehl führt ein Shell-Modul aus, um die auf Root-Partitionen verfügbare Festplatte 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
Dieser unten erwähnte 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 überprüft die Verfügbarkeit jedes laufenden Servers.
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
Gathering Facts
Mit dem folgenden ansiblen Ad-hoc-Befehl erhalten Sie alle Ad-hoc-Informationen Ihres Systems, 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": "enabled"
},
"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": "Sunday",
"weekday_number": "0",
"weeknumber": "26",
"year": "2019"
},
"ansible_default_ipv4": {
"address": "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
},
}
Das war also alles über Ansible Ad-hoc-Befehle. Probieren Sie diese Befehle auf Ihrem Computer aus Ansible Setup. Verwenden Sie diese Befehle, um Ansible-Module auszuführen, ohne ein Ansible-Playbook zu schreiben, um diese Aufgaben auszuführen. Hinterlassen Sie einen Kommentar, wenn beim Ausführen dieser Befehle Probleme auftreten.