• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • 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

    Aufgaben wie das Pingen 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 ausgeführt werden. Hier ist eine Liste grundlegender Ansible Ad-hoc-Befehle, die Sie kennen müssen.

    Grundlegende Befehle

    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>[email protected]:/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'.

    [email protected]:/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.

    [email protected]:/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.

    [email protected]:/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.

    [email protected]:/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.

    [email protected]:/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.

    [email protected]:/home/geekflare# ls Desktop/
    
    nginx.yml

    Ich erstelle ein neues Verzeichnis, um das Abrufmodul n nächsten Ad-hoc-Befehl auszuführen.

    [email protected]:/home/geekflare# mkdir example
    
    [email protected]:/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.

    [email protected]:/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.

    [email protected]:/home/geekflare# ls example
    
    nginx.yml

    Pakete verwalten

    Der unten erwähnte Befehl installiert nginx auf einer Gruppe von Hosts (Client), die mit einem apt-Modul erwähnt werden.

    [email protected]:/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.

    [email protected]:/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) ..."
    
        ]
    
    }

    Dienste verwalten

    Der folgende adible Ad-hoc-Befehl führt das Servicemodul aus, um nginx auf dem Host zu starten. Der Statuswert sollte gestartet werden.

    [email protected]:/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.

    [email protected]:/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",
    
      }
    
    }

    Überprüfen des Systems

    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.

    [email protected]:/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.

    [email protected]:/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.

    [email protected]:/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

    Fakten sammeln

    Mit dem folgenden ansiblen Ad-hoc-Befehl erhalten Sie alle Ad-hoc-Informationen Ihres Systems, einschließlich aller im System vorhandenen Variablen.

    [email protected]:/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.