我知道我们可以使用--json-attributes(-j)标志在chef- {client / solo}中传递节点属性。 此标志始终期望将JSON文件作为输入。他们的任何方法都可以直接将属性作为JSON对象传递。
我试过这样做。例如:
chef-client -j {"attr":"value"}
但最终会出现一条失败消息:
FATAL: I cannot find {"attr":"value"}
因为它需要一个JSON文件。 我需要传递JSON对象,就像我们的env一样,我无法创建一个json文件。我也不想使用属性/角色/环境文件。有没有其他方法来传递属性?
答案 0 :(得分:30)
您是否尝试过将JSON传输到STDIN?
echo '{"attr":"value"}' | chef-client -j /dev/stdin
答案 1 :(得分:0)
这应该有效:
knife ssh $VM -- chef-client -j '<(echo \{\"attr\":\"value\"\})' --no-fork
YMMV