如何在没有JSON文件的情况下传递chef-client中的属性?

时间:2014-02-24 11:30:11

标签: chef

我知道我们可以使用--json-attributes(-j)标志在chef- {client / solo}中传递节点属性。 此标志始终期望将JSON文件作为输入。他们的任何方法都可以直接将属性作为JSON对象传递。

我试过这样做。例如:

chef-client -j {"attr":"value"} 

但最终会出现一条失败消息:

FATAL: I cannot find {"attr":"value"}

因为它需要一个JSON文件。 我需要传递JSON对象,就像我们的env一样,我无法创建一个json文件。我也不想使用属性/角色/环境文件。有没有其他方法来传递属性?

2 个答案:

答案 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