Les commandes ad hoc sont utilisées dans Ansible pour exécuter des tâches instantanément, et vous n’avez pas besoin de les sauvegarder pour un usage ultérieur. Cet article est consacré aux commandes ad hoc d’Ansible.
Il existe de nombreuses tâches dans Ansible pour lesquelles vous n’avez pas besoin d’écrire un playbook Ansible séparé ; vous pouvez simplement exécuter une commande ad-hoc pour cette tâche. Il s’agit d’une commande en une ligne qui permet d’effectuer une seule tâche sur l’hôte cible. Ces commandes sont présentes dans /usr/bin/ansible
.
Qu’est-ce qu’une commande ad hoc Ansible ?
Une commande ad-hoc Ansible est un outil utile qui vous permet d’exécuter une tâche unique sur un groupe de serveurs sans avoir besoin de créer un playbook complet. Ces commandes sont idéales pour effectuer des tâches simples comme vérifier l’état d’un service ou exécuter rapidement une commande. Cependant, pour des tâches plus complexes telles que l’installation de logiciels, il est généralement préférable d’utiliser un playbook.
Une seule ligne de code contenant les informations pertinentes, telles que le nom du module souhaité et tous les paramètres qui doivent lui être fournis, est saisie pour exécuter une commande ad hoc.
La syntaxe d’une commande ad hoc Ansible est la suivante :
ansible <hosts> -m <module> -a "<arguments>"
Ici :
est une liste d’hôtes cibles séparés par des virgules, est le nom du module Ansible à utiliser, et sont les arguments à transmettre au module.
Par exemple, si vous souhaitez vérifier l’espace disque d’un groupe de serveurs, vous pouvez utiliser la commande df -h avec le module shell, comme suit :
ansible web_servers -m shell -a "df -h"
Le module shell exécute la commande df -h sur tous les serveurs du groupe web_servers. Vous pourrez alors voir la sortie de chaque serveur dans votre console. C’est très simple et efficace !
Pourquoi utiliser les commandes ad hoc d’Ansible ?
En plus d’être rapides et faciles à utiliser, les commandes ad hoc sont parfaites pour les tâches simples et ponctuelles qui ne nécessitent pas beaucoup de complexité. Elles constituent également un excellent moyen de tester de nouveaux modules ou commandes avant de les ajouter à un playbook. Cela peut vous aider à éviter les erreurs et à gagner du temps sur le long terme.
Si vous dépannez un problème sur un serveur, vous pouvez les utiliser pour vérifier l’état d’un service, consulter les fichiers journaux ou effectuer d’autres tâches de diagnostic.
En outre, les commandes ad hoc sont également flexibles ! Vous pouvez les utiliser pour toutes sortes de tâches, comme l’installation de paquets, la copie de fichiers ou l’exécution de commandes sur plusieurs serveurs à la fois.
Si vous souhaitez rendre la gestion de votre serveur plus facile et plus efficace, les commandes ad-hoc d’Ansible sont la solution !
Voici quelques-unes des façons dont vous pouvez les utiliser :
- Redémarrer les serveurs
- Gestion des fichiers
- Gestion des paquets
- Gestion des utilisateurs et des groupes
- Gestion des services
- Collecte d’informations
- Modèles et commandes ad hoc
Des tâches comme envoyer un ping à tous les hôtes pour vérifier s’ils fonctionnent, copier un fichier, redémarrer les serveurs et installer un paquetage peuvent être facilement réalisées à l’aide des commandes ad hoc d’Ansible. Voici une liste des commandes fondamentales d’Ansible Ad-hoc que vous devez connaître.
Commandes de base
La commande ad-hoc ci-dessous exécute un module ping sur tous les hôtes du fichier d’inventaire. Ici -m
est l’option pour un module.
<strong>root@geekflare:/home/geekflare# ansible all -m ping</strong>
node1 | SUCCESS => {
"ansible_facts" : {
"discovered_interpreter_python" : "/usr/bin/python"
},
"changed" : faux,
"ping" : "pong"
}
La commande mentionnée ci-dessous exécute le module setup sur un groupe d’hôtes – Client présent dans le fichier d’inventaire ‘/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" : faux
}
La commande ci-dessous est utilisée pour demander l’authentification du mot de passe SSH. Vous devez ajouter l’option -ask-pass
à la fin de la commande. Après l’exécution de la commande, il vous sera demandé d’entrer le mot de passe SSH.
root@geekflare:/home/geekflare# ansible Client -m ping --ask-pass
Mot de passe SSH :
node1 | SUCCESS => {
"ansible_facts" : {
"discovered_interpreter_python" : "/usr/bin/python"
},
"changed" : faux,
"ping" : "pong"
}
La commande ci-dessous vous permet d’exécuter des commandes ad hoc en tant qu’utilisateur non root avec des privilèges root. L’option --become
donne les privilèges de l’utilisateur root et l’option -K
demande le mot de passe.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'fdisk -l' -u geekflare --become -K
Mot de passe BECOME :
node1 | CHANGED | rc=0 >>
Disque /dev/loop0 : 14.5 MiB, 15208448 bytes, 29704 sectors
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Disque /dev/loop2 : 42.1 MiB, 44183552 bytes, 86296 secteurs
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Disque /dev/loop3 : 149.9 MiB, 157184000 bytes, 307000 sectors
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Disque /dev/loop5 : 140.7 MiB, 147501056 bytes, 288088 sectors
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Disque /dev/loop6 : 151.2 MiB, 158584832 bytes, 309736 sectors
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Disque /dev/loop7 : 14.8 MiB, 15458304 bytes, 30192 sectors
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Disque /dev/sda : 500 GiB, 536870912000 bytes, 1048576000 sectors
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant du disque : 0xcef957f5
Périphérique 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
Disque /dev/loop8 : 4 MiB, 4218880 bytes, 8240 secteurs
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille des E/S (minimum/optimale) : 512 octets / 512 octets
Cette commande ad-hoc est utilisée pour redémarrer le système avec l’option -f pour définir le nombre de forks.
root@geekflare:/home/geekflare# ansible Client -a "/sbin/reboot" -f 1
Transfert de fichiers
La commande ansible ad-hoc ci-dessous est utilisée pour copier un fichier d’une source vers une destination pour un groupe d’hôtes (Client) défini dans le fichier d’inventaire. Après avoir saisi le mot de passe, la sortie avec le paramètre “change” sera “true”, ce qui signifie que le fichier a été copié vers la destination.
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
Mot de passe BECOME :
node1 | CHANGED => {
"ansible_facts" : {
"discovered_interpreter_python" : "/usr/bin/python"
},
"changed" : vrai,
"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
}
Exécutez la commande ci-dessous pour vérifier si le module de copie a fonctionné correctement ou non. Le fichier copié doit arriver à la destination mentionnée dans la commande précédente.
root@geekflare:/home/geekflare# ls Desktop/
nginx.yml
Je crée un nouveau répertoire pour exécuter le module fetch dans la prochaine commande ad-hoc.
root@geekflare:/home/geekflare# mkdir example
root@geekflare:/home/geekflare# ls
Documents de bureau exemple examples.desktop nginx_new.yml nginx.yml
La commande ansible ad-hoc ci-dessous est utilisée pour télécharger un fichier à partir d’un hôte défini dans la commande. Dans cette commande, nous téléchargeons un fichier en utilisant le module fetch depuis le serveur node1 vers une destination locale sur le nœud ansible.
root@geekflare:/home/geekflare# ansible node1 -m fetch -a 'src=/etc/sudoers.d/nginx.yml dest=/home/geekflare/example/ flat=yes'
node1 | SUCCESS => {
"changed" : faux,
"checksum" : "5631822866afd5f19b928edb3ba018385df22dd3",
"dest" : "/home/geekflare/example/nginx.yml",
"file" : "/etc/sudoers.d/nginx.yml",
"md5sum" : "0d6ffe1069fc25ad4f8ad700277c4634"
}
Vérifiez si le fichier a été téléchargé ou non à la destination mentionnée dans la commande.
root@geekflare:/home/geekflare# ls example
nginx.yml
Gérer les paquets
La commande mentionnée ci-dessous installe nginx sur un groupe d’hôtes (Client) mentionné en utilisant un module apt.
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" : faux
}
La commande mentionnée ci-dessous supprime nginx sur un groupe d’hôtes (Client) en utilisant le module apt et purge toutes les configurations associées.
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" : vrai,
"stderr" : "",
"stderr_lines" : [],
"stdout" : "Reading package lists...\NBuilding dependency tree...\NReading state information...\Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : libnginx-mod-http-geoip libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx-common nginx-core Utilisez 'sudo apt autoremove' pour les supprimer.\Les paquets suivants seront SUPPRIMÉS : nginx* 0 mis à jour, 0 nouvellement installé, 1 à supprimer et 241 non mis à jour. Après cette opération, 44.0 kB d'espace disque seront libérés. \r(Lecture de la base de données ... 5% (Lecture de la base de données ... 10% (Lecture de la base de données ... 15% (Base de données de lecture ...) 20% (Base de données de lecture ...) 25% (Base de données de lecture ...) 30% (Base de données de lecture ...) 35% (Base de données de lecture ...) 40% (Base de données de lecture ... 45% (Base de données de lecture ...) 50 % (Base de données de lecture ... 55%% (Base de données de lecture ...) 60 % (Base de données de lecture ... 65%% (Base de données de lecture ...) 70 % (Base de données de lecture ...) 75 % (Base de données de lecture) ... 80 % (Base de données de lecture) ... 85%\r(Base de données de lecture ... 90 % (Base de données de lecture) ... 95 % (Base de données de lecture ...) 100% (Lecture de la base de données ... 180191 fichiers et répertoires actuellement installés.)\NSuppression de nginx (1.15.5-0ubuntu2.1) ...\N",
"stdout_lines" : [
"Reading package lists...",
"Construction de l'arbre des dépendances...",
"Lire les informations sur l'état...",
"Les paquets suivants ont été automatiquement installés et ne sont plus nécessaires :",
"libnginx-mod-http-geoip libnginx-mod-http-image-filter",
"libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream",
"nginx-common nginx-core",
"Utilisez 'sudo apt autoremove' pour les supprimer",
"Les paquets suivants seront SUPPRIMÉS :",
" nginx*",
"0 mis à niveau, 0 nouvellement installé, 1 à supprimer et 241 non mis à niveau",
"Après cette opération, 44.0 kB d'espace disque seront libérés",
"(Lecture de la base de données ... ",
"(Lecture de la base de données ... 5%",
"(Lecture de la base de données ... 10%",
"(Lecture de la base de données ... 15%",
"(Lecture de la base de données ... 20%",
"(Lecture de la base de données ... 25%",
"(Lecture de la base de données ... 30%",
"(Lecture de la base de données ... 35%",
"(Lecture de la base de données ... 40%",
"(Lecture de la base de données ... 45%",
"(Lecture de la base de données ... 50%",
"(Lecture de la base de données ... 55%",
"(Lecture de la base de données ... 60%",
"(Lecture de la base de données ... 65%",
"(Lecture de la base de données ... 70%",
"(Lecture de la base de données ... 75%",
"(Lecture de la base de données ... 80%",
"(Lecture de la base de données ... 85%",
"(Lecture de la base de données ... 90%",
"(Lecture de la base de données ... 95%",
"(Lecture de la base de données ... 100%",
"(Lecture de la base de données ... 180191 fichiers et répertoires actuellement installés.)",
"Suppression de nginx (1.15.5-0ubuntu2.1) ..."
]
}
Gérer les services
La commande ansible ad-hoc ci-dessous exécute le module de service pour démarrer nginx sur l’hôte. La valeur d’état doit être démarrée.
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" : faux,
"enabled" : vrai,
"name" : "nginx",
"state" : "started",
"status" : {
"ActiveEnterTimestamp" : "Sat 2019-07-06 08:28:02 EDT",
"ActiveEnterTimestampMonotonic" : "31411371",
"ActiveExitTimestampMonotonic" : "0",
"ActiveState" : "actif",
"After" : "sysinit.target system.slice systemd-journald.socket basic.target network.target",
"AllowIsolate" : "no",
"AmbientCapabilities" : "",
"AssertResult" : "oui",
"AssertTimestamp" : "Sat 2019-07-06 08:27:59 EDT",
"AssertTimestampMonotonic" : "27694868",
"Before" : "multi-user.target shutdown.target",
"BlockIOAccounting" : "no",
"BlockIOWeight" : "[non défini]",
"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" : "[non défini]",
}
}
Le module de service ci-dessous est exécuté pour arrêter nginx sur l’hôte. La valeur de l’état devient arrêtée.
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" : vrai,
"name" : "nginx",
"state" : "stopped",
"status" : {
"ActiveEnterTimestamp" : "Sat 2019-07-06 08:28:02 EDT",
"ActiveEnterTimestampMonotonic" : "31411371",
"ActiveExitTimestampMonotonic" : "0",
"ActiveState" : "actif",
"After" : "sysinit.target system.slice systemd-journald.socket basic.target network.target",
"AllowIsolate" : "no",
"AmbientCapabilities" : "",
"AssertResult" : "oui",
"AssertTimestamp" : "Sat 2019-07-06 08:27:59 EDT",
"AssertTimestampMonotonic" : "27694868",
"Before" : "multi-user.target shutdown.target",
"BlockIOAccounting" : "no",
"BlockIOWeight" : "[non défini]",
"CPUAccounting" : "no",
"CPUQuotaPerSecUSec" : "infini",
"CanReload" : "yes",
"CanStart" : "yes",
"CanStop" : "oui",
"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" : "Un serveur web haute performance et un serveur proxy inverse",
"DevicePolicy" : "auto",
"Documentation" : "man:nginx(8)",
"DynamicUser" : "no",
}
}
Vérification du système
La commande ansible ad-hoc mentionnée ci-dessous exécute un module shell pour vérifier le disque disponible dans les partitions de la racine.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'df -h /dev/sda2' --become
node1 | CHANGED | rc=0 >>
Taille du système de fichiers Utilisé Utilisation disponible% Monté sur
/dev/sda2 923M 113M 748M 14% /boot
La commande mentionnée ci-dessous exécute un module shell pour vérifier la mémoire libre (RAM) sur l’hôte.
root@geekflare:/home/geekflare# ansible Client -m shell -a 'free -m' --become
node1 | CHANGED | rc=0 >>
total utilisé libre partagé buff/cache disponible
Mem : 5101 854 2760 27 1487 3947
Espace de stockage : 8581 0 8581
Cette commande vérifie le temps de fonctionnement de chaque serveur en cours d’exécution.
root@geekflare:/home/geekflare# ansible Client -a "uptime"
node1 | CHANGED | rc=0 >>
11:31:17 up 1 jour, 2:40, 2 utilisateurs, charge moyenne : 0.23, 0.05, 0.02
Rassembler les faits
La commande ansible ad-hoc ci-dessous vous donnera toutes les informations ad-hoc de votre système, y compris toutes les variables présentes dans le système.
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" : "dimanche",
"numéro_du_jour_de_la_semaine" : "0",
"numéro de semaine" : "26",
"année" : "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" : {},
"amovible" : "0",
"rotatif" : "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" : {},
"amovible" : "0",
"rotatif" : "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
},
}
Voilà, c’était tout sur les commandes Ad-hoc d’Ansible. Allez-y et essayez ces commandes sur votre installation Ansible. Utilisez ces commandes pour exécuter des modules Ansible sans écrire de playbook Ansible pour effectuer ces tâches. Laissez un commentaire si vous rencontrez un problème lors de l’exécution de ces commandes.