📜  如何将多个主机传递给 ansible adhoc 命令? - Shell-Bash (1)

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

如何将多个主机传递给 Ansible Adhoc 命令

在使用 Ansible Adhoc 命令时,可以通过指定多个主机名或主机组来同时操作多个主机。下面介绍了几种将多个主机传递给 Ansible Adhoc 命令的方法。

方法一:指定多个主机名

通过在命令行中使用空格分隔的方式指定多个主机名,可以同时操作这些主机。

ansible all -i inventory_file -m module_name -a "arguments" -e "extra_vars"

示例:

ansible host1 host2 host3 -i inventory.ini -m shell -a "uptime" -e "ansible_user=ansible ansible_password=123456"
方法二:使用主机组

在 Ansible 的 inventory 文件中定义主机组,并在命令行中指定该主机组,可以同时操作该主机组内的所有主机。

ansible group_name -i inventory_file -m module_name -a "arguments" -e "extra_vars"

示例:

ansible mygroup -i inventory.ini -m shell -a "uptime" -e "ansible_user=ansible ansible_password=123456"
方法三:使用模式匹配

使用模式匹配可根据主机名的一部分或其他属性匹配多个主机,实现同时操作多个主机的目的。

ansible pattern -i inventory_file -m module_name -a "arguments" -e "extra_vars"

示例:

ansible web* -i inventory.ini -m shell -a "uptime" -e "ansible_user=ansible ansible_password=123456"

以上的命令将匹配所有以 "web" 开头的主机名,并执行 uptime 命令。

无论使用哪种方式,都可以将多个主机传递给 Ansible Adhoc 命令,实现批量操作和管理主机的需求。

注意:示例中的 inventory_file 是 Ansible 的 inventory 文件,module_name 是要执行的模块名称,arguments 是模块的参数,extra_vars 是额外的变量。

以上内容希望能帮助到你,如果有任何疑问,请随时提问。