Ansible如何使用Ad-Hoc执行临时命令

Ad-Hoc 是 Ansible 提供的一种快速执行临时命令的方式。它允许用户直接在命令行中执行 Ansible 模块,而无需使用一个 playbook。Ad-Hoc 可以用于快速测试 Ansible 的某些功能、临时更改或者查询某些属性信息等等。

example:(演示如何使用adhoc临时命令查看所有主机的hosts文件)

ansible all -m shell -a "cat /etc/hosts"

这个 Ad-Hoc 命令使用 Ansible 执行 ‘date’ 命令,查看所有远程服务器的系统时间,并使用指定的用户名 ‘username’ 连接远程主机。

Ad-Hoc 的语法非常简单,基本格式如下:
这个命令的基本格式为:

ansible <hosts> -m <module> -a "<arguments>"

其中:

  • <hosts>:需要执行命令的目标主机或主机组。
  • -m <module>:需要使用的 Ansible 模块,例如这里使用的是 shell 模块,用于在远程主机上执行 shell 命令。
  • -a "<arguments>":传递给模块的参数,这里使用的是 “cat /etc/hosts” 命令,用于在远程主机上查看 hosts 文件的内容。

所以,这个命令的意思是在所有的目标主机上执行 cat /etc/hosts 命令,用于查看 hosts 文件的内容。在这个例子中,使用的是 shell 模块,这意味着 Ansible 将会在远程主机上执行这个命令,并将结果返回给控制机。

需要注意的是,使用 shell 模块需要谨慎,因为它在远程主机上执行的命令是在 shell 中执行的,这可能会带来一些安全风险。当需要在远程主机上执行命令时,推荐使用更安全的 command 模块。

上面的 Ad-Hoc 命令实际上执行了 Ansible 模块,这些模块由 Ansible core 库提供。在执行 Ad-Hoc 命令时, Ansible 将会动态创建一个 playbook 并将它发送给远程主机。这个 playbook 包含了要执行的模块以及相关参数。

Ansible 会先检查本地的 Ansible.cfg 配置文件和 inventory 文件,并根据这些文件中的内容来确定使用哪些主机、用户名、密码等信息,然后根据 Ad-Hoc 命令的参数来动态生成一个 playbook。 最后,Ansible 通过 SSH 连接到目标主机,执行 playbook 中定义的命令或操作,然后将结果返回给本地系统。

这就是 Ansible Ad-Hoc 的基本原理。它的优点在于能够在短时间内快速执行命令、检查、调试等操作,而无需编写 playbook。但是,与使用 playbook 相比,它的扩展性和灵活性较差。

猜你喜欢

转载自blog.csdn.net/qq_34185638/article/details/131117354