gpt4 book ai didi

chef-infra - 从 Ruby 脚本调用 Knife 命令,无需脱壳

转载 作者:行者123 更新时间:2023-12-02 03:58:07 25 4
gpt4 key购买 nike

我继承了一些 shell 脚本,这些脚本有助于使用 Chef 和 Knife 设置我们的应用程序环境。那很好。

但我真正想做的是拥有 Ruby 脚本的强大功能和灵 active 来做同样的事情。

如果我掏出knife我失去了命令的实时输出。

似乎我应该能够通过包含“Chef ”gem 和我使用的“cloudstack-fog”插件来从 Ruby 中调用 Knife 的所有功能。

但我还没有找到任何示例或 API 文档。试图挖掘 Chef gem 的来源是一种挫败感。

难道我不能做相当于 knife cloudstack server create -E ... 的操作吗?等来自Ruby脚本?

最佳答案

您可以使用 Kernel 来做到这一点。模块的system方法 [1],它将在子 shell 中执行您的命令并将其输出通过管道传输到您当前的 shell。当我希望能够查看以编程方式构建的参数 Knife 命令(如 knife ssh)的实时输出时,我会在我的许多自定义 Knife 插件中使用它。 .

这是一个示例,我在其中构造和执行可能是非常复杂的命令:

查询=“Chef 环境:#{环境名称}”
options = [ "-x #{::Chef::Config[:node_name]}"].join(' ')
command = %Q{knife ssh "#{query}"#{options} "#{chef_command}"}
系统(命令)

[1] http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-system

关于chef-infra - 从 Ruby 脚本调用 Knife 命令,无需脱壳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11692486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com