Οδηγός εντολών Ansible Ad-hoc με παραδείγματα
Οι Ad-hoc εντολές χρησιμοποιούνται στο Ansible για την άμεση εκτέλεση εργασιών και δεν χρειάζεται να τις αποθηκεύσετε για μελλοντική χρήση. Αυτό το άρθρο αφορά την εντολή Ansible Ad-hoc.
Υπάρχουν πολλές εργασίες στο Ansible όπου δεν χρειάζεται να γράψετε ξεχωριστό βιβλίο παιχνιδιού Ansible για αυτό. μπορείτε απλώς να εκτελέσετε μια εντολή ad-hoc ansible για αυτήν την εργασία. Αυτές είναι εντολές μιας γραμμής για την εκτέλεση μιας μεμονωμένης εργασίας στον κεντρικό υπολογιστή προορισμού. Αυτές οι εντολές υπάρχουν στο /usr/bin/ansible
Εργασίες όπως το ping σε όλους τους κεντρικούς υπολογιστές για να ελέγξετε αν εκτελούνται, η αντιγραφή ενός αρχείου, η επανεκκίνηση διακομιστών, η εγκατάσταση ενός πακέτου μπορούν εύκολα να γίνουν μέσω των εντολών Ad-hoc Ansible. Ακολουθεί μια λίστα βασικών εντολών Ad-hoc Ansible που πρέπει να γνωρίζετε.
Βασικές εντολές
Η παρακάτω εντολή ad-hoc εκτελεί μια ενότητα ping σε όλους τους κεντρικούς υπολογιστές στο αρχείο αποθέματος. Εδώ -m είναι η επιλογή για μια ενότητα.
<strong>[email protected]:/home/grtechpc.org# ansible all -m ping</strong> node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Η εντολή που αναφέρεται παρακάτω εκτελεί τη μονάδα εγκατάστασης σε μια ομάδα κεντρικών υπολογιστών – Πελάτης που υπάρχει στο αρχείο αποθέματος «/etc/ansible/hosts».
[email protected]:/home/grtechpc.org# 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 }
Η παρακάτω εντολή χρησιμοποιείται για να ζητήσει έλεγχο ταυτότητας κωδικού πρόσβασης SSH. Πρέπει να προσθέσετε την επιλογή –ask-pass στο τέλος της εντολής. Αφού εκτελέσετε την εντολή, θα σας ζητήσει να εισαγάγετε τον κωδικό πρόσβασης SSH.
[email protected]:/home/grtechpc.org# ansible Client -m ping --ask-pass SSH password: node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Η παρακάτω εντολή σάς δίνει τη δυνατότητα εκτέλεσης εντολών ad-hoc ως χρήστης που δεν είναι root με δικαιώματα root. Η επιλογή –become δίνει τα δικαιώματα root και η επιλογή -K ζητά τον κωδικό πρόσβασης.
[email protected]:/home/grtechpc.org# ansible Client -m shell -a 'fdisk -l' -u grtechpc.org --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
Αυτή η ad-hoc εντολή χρησιμοποιείται για την επανεκκίνηση του συστήματος με την επιλογή -f για τον καθορισμό του αριθμού των πιρουνιών.
[email protected]:/home/grtechpc.org# ansible Client -a "/sbin/reboot" -f 1
Μεταφορά αρχείων
Η παρακάτω εντολή ad-hoc ansible χρησιμοποιείται για την αντιγραφή ενός αρχείου από μια πηγή σε έναν προορισμό για μια ομάδα κεντρικών υπολογιστών (Πελάτης) που ορίζεται στο αρχείο αποθέματος. Αφού εισαγάγετε τον κωδικό πρόσβασης, η έξοδος με την παράμετρο “αλλαγή” θα είναι “true”, που σημαίνει ότι το αρχείο έχει αντιγραφεί στον προορισμό.
[email protected]:/home/grtechpc.org# ansible Client -m copy -a 'src=/home/grtechpc.org/nginx.yml dest=/home/grtechpc.org/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/grtechpc.org/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 }
Εκτελέστε την παρακάτω εντολή για να επαληθεύσετε εάν η λειτουργική μονάδα αντιγραφής λειτούργησε σωστά ή όχι. Το αντιγραμμένο αρχείο θα πρέπει να έρθει στον προορισμό που αναφέρεται στην προηγούμενη εντολή.
[email protected]:/home/grtechpc.org# ls Desktop/ nginx.yml
Δημιουργώ έναν νέο κατάλογο για την εκτέλεση της ενότητας fetch n επόμενη ad-hoc εντολή.
[email protected]:/home/grtechpc.org# mkdir example [email protected]:/home/grtechpc.org# ls Desktop Documents example examples.desktop nginx_new.yml nginx.yml
Η παρακάτω εντολή ad-hoc ansible χρησιμοποιείται για τη λήψη ενός αρχείου από έναν κεντρικό υπολογιστή που ορίζεται στην εντολή. Σε αυτήν την εντολή, κατεβάζουμε ένα αρχείο χρησιμοποιώντας τη μονάδα ανάκτησης από τον διακομιστή node1 σε έναν τοπικό προορισμό στον κόμβο ansible.
[email protected]:/home/grtechpc.org# ansible node1 -m fetch -a 'src=/etc/sudoers.d/nginx.yml dest=/home/grtechpc.org/example/ flat=yes' node1 | SUCCESS => { "changed": false, "checksum": "5631822866afd5f19b928edb3ba018385df22dd3", "dest": "/home/grtechpc.org/example/nginx.yml", "file": "/etc/sudoers.d/nginx.yml", "md5sum": "0d6ffe1069fc25ad4f8ad700277c4634" }
Ελέγξτε εάν το αρχείο λήφθηκε ή όχι στον προορισμό που αναφέρεται στην εντολή.
[email protected]:/home/grtechpc.org# ls example nginx.yml
Διαχείριση πακέτων
Η εντολή που αναφέρεται παρακάτω εγκαθιστά το nginx σε μια ομάδα κεντρικών υπολογιστών (Πελάτης) που αναφέρονται χρησιμοποιώντας μια λειτουργική μονάδα apt.
[email protected]:/home/grtechpc.org# 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 }
Η εντολή που αναφέρεται παρακάτω αφαιρεί το nginx σε μια ομάδα κεντρικών υπολογιστών (Πελάτης) χρησιμοποιώντας τη μονάδα apt και εκκαθαρίζει όλες τις σχετικές διαμορφώσεις.
[email protected]:/home/grtechpc.org# 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-filtern libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-streamn nginx-common nginx-corenUse '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.)rnRemoving nginx (1.15.5-0ubuntu2.1) ...rn", "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) ..." ] }
Διαχείριση Υπηρεσιών
Η εντολή ansible ad-hoc παρακάτω εκτελεί την ενότητα υπηρεσίας για να ξεκινήσει το nginx στον κεντρικό υπολογιστή. Η τιμή κατάστασης πρέπει να ξεκινήσει.
[email protected]:/home/grtechpc.org# 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]", } }
Η παρακάτω ενότητα εκτελεί την ενότητα υπηρεσίας για να σταματήσει το nginx στον κεντρικό υπολογιστή. Η τιμή κατάστασης αλλάζει σε διακοπή.
[email protected]:/home/grtechpc.org# 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", } }
Έλεγχος του συστήματος
Η εντολή ansible ad-hoc που αναφέρεται παρακάτω εκτελεί μια λειτουργική μονάδα κελύφους για να ελέγξει το δίσκο που είναι διαθέσιμος σε κατατμήσεις ρίζας.
[email protected]:/home/grtechpc.org# 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
Αυτή η εντολή που αναφέρεται παρακάτω εκτελεί μια λειτουργική μονάδα κελύφους για να ελέγξει την ελεύθερη μνήμη (RAM) στον κεντρικό υπολογιστή.
[email protected]:/home/grtechpc.org# 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
Αυτή η εντολή ελέγχει το χρόνο λειτουργίας κάθε διακομιστή που εκτελείται.
[email protected]:/home/grtechpc.org# 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
Συλλογή γεγονότων
Η παρακάτω εντολή ansible ad-hoc θα σας δώσει όλες τις ad-hoc πληροφορίες του συστήματός σας, συμπεριλαμβανομένων όλων των μεταβλητών που υπάρχουν στο σύστημα.
[email protected]:/home/grtechpc.org# 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 }, }
Λοιπόν, όλα αυτά αφορούσαν τις εντολές Ad-hoc Ansible. Συνεχίστε και δοκιμάστε αυτές τις εντολές στη ρύθμιση του ansible σας. Χρησιμοποιήστε αυτές τις εντολές για να εκτελέσετε ansible λειτουργικές μονάδες χωρίς να γράψετε κανένα βιβλίο παιχνιδιού Ansible για να εκτελέσετε αυτές τις εργασίες. Αφήστε ένα σχόλιο εάν αντιμετωπίζετε οποιοδήποτε πρόβλημα κατά την εκτέλεση αυτών των εντολών.