📜  Ansible 使用 adhoc 命令收集事实 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:19.520000             🧑  作者: Mango

Ansible 使用 adhoc 命令收集事实

介绍

Ansible 是一种非常流行的自动化工具,它允许管理员使用简单易懂的语法自动化许多常见的系统管理任务,从部署应用程序到管理基础结构和云环境。

一个非常实用的功能是通过 Adhoc 命令收集远程节点的事实。这可以帮助管理员快速了解主机的基本信息,并在不登录到远程系统的情况下轻松执行诊断工作。

在本文中,我们将学习如何使用 Ansible Adhoc 命令来收集事实。

前置条件

在继续之前,请确保您的系统已经安装了 Ansible。

收集远程节点的事实

Adhoc 命令是一些简单的单行命令,可以让您在不使用 Playbook 的情况下针对您的主机组执行有用的操作。

例如,要查看您的所有主机的 CPU 核心数,您可以运行以下命令:

ansible all -i inventory.ini -m setup -a 'filter=ansible_processor_cores'

在这个命令中:

  • ansible 是 Ansible 命令的命令名称。
  • all 是要运行命令的主机组。
  • -i inventory.ini 是指定 Ansible inventory 文件的选项。
  • -m setup 是要使用的 Ansible 模块 (setup),它允许您收集有关远程节点的事实。
  • -a 'filter=ansible_processor_cores' 是指定模块参数,以此来过滤收集出来的结果。

运行命令后,您将看到输出类似下面这样的内容:

node-1 | SUCCESS => {
    "ansible_facts": {
        "ansible_processor_cores": 2
    },
    "changed": false
}
node-2 | SUCCESS => {
    "ansible_facts": {
        "ansible_processor_cores": 4
    },
    "changed": false
}

在输出中,您可以看到每个节点的返回结果和收集到的 CPU 核心数。Ansible 将这些信息放在一个名为 ansible_facts 的字典中,这些信息可以在编写 Playbook 时轻松调用。

过滤结果

您可以使用模块参数来过滤您收集到的信息。例如:

  • 获取所有主机的操作系统版本:-a 'filter=ansible_distribution_version'
  • 获取所有主机的 IP 地址:-a 'filter=ansible_all_ipv4_addresses'
  • 获取所有主机的 CPU 模型名称:-a 'filter=ansible_processor_vcpu'

更多的过滤器可以在官方网站查看到,将您需要的过滤器放在 -a 参数的值里即可。

结论

使用 Ansible Adhoc 命令可以快速收集远程节点的事实,这可以帮助管理员快速诊断问题并了解基础设施的状态。在此基础上,您可以编写 Ansible Playbook 并利用所收集到的信息来管理您的基础结构。

参考资料: