📜  在 ansible adhoc 命令中排除主机 - Shell-Bash (1)

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

在 ansible adhoc 命令中排除主机 - Shell-Bash

在 ansible 中,adhoc 命令是一种快速执行任务的方法,可以强制要求一些任务立即执行,而不必考虑 playbook 或剧本的构建。

有时候,当我们执行 ansible adhoc 命令时,我们需要在一些主机上执行任务,但不希望在另一些主机上执行。那么怎么做呢?我们可以使用 --limit 选项来限制作用的主机,也可以使用 --exclude 选项将特定主机排除在外。

排除主机

--exclude 选项允许我们排除特定主机,以便在其余主机上执行任务。例如,假设我们有一个名为 "app" 的主机组和一个名为 "db" 的主机组,我们希望在 "app" 主机组上安装某些软件包,但不希望在 "db" 主机组上安装。那么我们可以使用以下命令:

ansible app --exclude db -m apt -a "name=nginx state=present"

这将在 "app" 主机组上安装 nginx,但不会在 "db" 主机组上安装。

排除主机组中的个别主机

当有一个主机组,但我们只需要在其中的特定主机上执行任务时,我们可以使用 exclamation mark (!) 将要排除的主机列表和主机组放在一起。例如,假设我们有一个名为 "web" 的主机组,其中包含 10 台主机,并且我们希望在其中 8 台主机上执行任务,但不希望在另外两台主机上执行任务。那么我们可以使用以下命令:

ansible web:!192.168.1.1,192.168.1.2 -m ping

这将在除 192.168.1.1 和 192.168.1.2 以外的所有主机上执行 ping 命令。

结论

通过使用 --exclude 选项,我们可以轻松地在 ansible adhoc 命令中排除某些主机或主机组,以便我们只需在需要执行任务的主机上执行任务。