如何获取具有特定角色的节点列表?
可以通过类似这样的方式获得:
for node in `knife node list`; do
[[ -n "`knife node show $node | grep $ROLE_NAME`" ]] && echo $node
done
有没有办法通过刀来完成它而不需要 bash 开销?
答案1
有一个解决方案:
knife search node "roles:$ROLE_NAME"
答案2
“knife search” 的标头输出到 stderr,因此您可以使用
knife search "role:$ROLE_NAME" -i 2>/dev/null
仅返回节点列表。如果你想将其包装到 for 语句中,则很有用:
for n in $(knife search "role:$ROLE_NAME" -i 2>/dev/null); do
// do something here
done