我可以强制节点将其节点对象发送到 Chef 服务器中程配方执行吗?
Can I force a node to send its node object to chef server mid-recipe execution?
我在食谱中这样做:
tag('mytag')
nodeobjs = search(:node, 'tags:mytag')
在第一个 运行 节点上 search() 找不到它(直到它再次 运行s)。
我知道节点会在将其节点对象发送到服务器之前构建其节点对象的本地副本。是否可以强制节点在执行过程中传播其节点对象?
我显然可以在 运行 列表中此配方之前 运行 的不同配方中标记节点,但我只是好奇是否可以调用 tag('mytag') 并立即传播该更改。
技术上是的,但实际上不是。您需要为查看本地数据的本地节点添加检查,否则即使 node.save
您也需要处理索引器延迟。
我在食谱中这样做:
tag('mytag')
nodeobjs = search(:node, 'tags:mytag')
在第一个 运行 节点上 search() 找不到它(直到它再次 运行s)。
我知道节点会在将其节点对象发送到服务器之前构建其节点对象的本地副本。是否可以强制节点在执行过程中传播其节点对象?
我显然可以在 运行 列表中此配方之前 运行 的不同配方中标记节点,但我只是好奇是否可以调用 tag('mytag') 并立即传播该更改。
技术上是的,但实际上不是。您需要为查看本地数据的本地节点添加检查,否则即使 node.save
您也需要处理索引器延迟。