有没有办法在文件中提供的主机上 运行 knife ssh?

Is there a way to run knife ssh on hosts provided in a file?

在向现有角色添加一堆新主机时,我想 运行 仅在新主机上使用 chef-client。

有没有办法执行 knife ssh 并在本地文件中提供主机列表? 因为如果我引用该角色,它将在所有(新+现有)主机上 运行。

正如@Tejay 提到的,您的食谱应该是幂等的,因此您无需担心某些节点上的 "unneeded" 厨师 运行。

运行 ssh knife ssh on exact list of server 的解决方案是使 search query 与您的所有节点相匹配,例如:

knife ssh 'name:server01 OR name:server02 OR ..'

或使用 manual-list 标志(检查 knife ssh doc

-m, --manual-list
Use to define a search query as a space-separated list of servers.
If there is more than one item in the list, put quotes around the
entire list. For example: --manual-list "server01 server 02 server 03 .."

你可以有一个文件,例如。 server.txt 其中包含服务器列表

你的命令应该是这样的

knife ssh -m "$(cat servers.txt)" "chef-client" -P

应该循环文件并在每个节点中执行 chef-client。