Chef infra 获取用户输入

Chef infra 获取用户输入,chef-infra,chef-solo,Chef Infra,Chef Solo,我不知道为什么我在互联网上找不到关于这件事的任何信息 我基本上想编写一个配方,提示用户输入他们的github用户名/密码,然后发布到github API以添加ssh密钥 我确信我可以用普通的ruby方法(ie GET)提示用户,但考虑到chef提供的所有实用程序,这似乎并不自然 有人能告诉我一种“厨师”方式来提示用户输入到VAR中以备将来使用吗 我想首先输出一些说明供用户阅读,然后获取用户名,然后获取密码,我想出于安全原因,密码不应该在控制台上显示,因为他们键入了,我想说chef不是为这样的用户

我不知道为什么我在互联网上找不到关于这件事的任何信息

我基本上想编写一个配方,提示用户输入他们的github用户名/密码,然后发布到github API以添加ssh密钥

我确信我可以用普通的ruby方法(ie GET)提示用户,但考虑到chef提供的所有实用程序,这似乎并不自然

有人能告诉我一种“厨师”方式来提示用户输入到VAR中以备将来使用吗


我想首先输出一些说明供用户阅读,然后获取用户名,然后获取密码,我想出于安全原因,密码不应该在控制台上显示,因为他们键入了

,我想说chef不是为这样的用户输入而做的

您可以使用在chef运行的编译阶段执行的ruby代码,但我建议如下:


从电视上读它怎么样?

它感觉非常脏,但这确实有效。也许可以对某些东西进行调整,使其感觉更干净:

文件“/tmp/ans”do 输入“输入有用的内容!” 内容::STDIN.readline 结束 您可以使用
chef apply
应用这样的配方,注意使用将不起作用


尽管如此,我还是建议你换一种方式。另一种方法是不直接调用chef,而是通过包装器脚本。这可以从用户那里读取数据并将其写入json文件,然后通过
-j PATH,--json attributes PATH
参数将该文件提供给chef(请参见)。

因此我猜这不是标准行为。。。我的问题是,我的chef脚本本身是从一个自动脚本运行的,所以在此之前设置ENV vars会有点烦人哦。。或者该脚本可以设置环境变量:D(但是使用
-j
参数感觉更干净。有趣的想法…我会尝试一下,然后再给你回复,thx!如果你必须问这个问题,你可能不应该使用这个答案。如果你知道用户输入和PTY,并且可以编写自己的
expect(1)
您应该可以这样做。如果您不能这样做,并且您在使用这种方法时遇到了问题,并且希望向chef client提交bug以寻求帮助,我们可能会告诉您,您需要使用一个ENV var和一个包装器脚本来调用更适合用户输入的内容,我们将无法教您如何修复所有的错误你的ruby脚本中有ugs。你将陷入泥潭,我们将无法把你拉出来。你在泥潭中呆了7年直到能够回答吗?:D只是开玩笑;)你找到解决这个问题的方法了吗?回答你自己的问题没关系。请不要忘记将答案标记为正确!:)这可能会回答您的问题: