knife 仅当角色存在时才向节点添加角色

knife add role to node only if role exists

我不喜欢这个命令的默认行为:

knife node run_list add myserver '"role[THISISATEST]"'

即使角色不存在,它也会添加 THIISATEST。是否有一个开关或参数可以防止 knife 在不存在的情况下向节点添加 role/recipe?

我不这么认为。我想你总是可以用脚本来完成。

#!/usr/bin/env ruby

role = 'THISISATEST' # or ARGV.first
if %x(knife role list).include? role
  %x(knife node run_list add myserver 'role[#{role}]')
else
  puts 'No such role'
end

您可能会使用某种形式的 knife exec 脚本来执行此操作,但如果没有更多信息,很难确切知道要使用什么代码。