问题标签 [ohai-gem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
320 浏览

chef-infra - 使用来自 Chef Server 而不是 Chef Client 的 Ohai 数据

我知道 Ohai 从安装和运行 Chef 客户端的节点中提取数据。它将这些数据传达给 Chef 客户端。但是,有没有办法将这些数据传回厨师服务器?如果是这样 - 如何?

我的一位老同事提到可以使用 Ohai 将节点属性发送到 Chef 服务器,然后knife node show <FQDN> -l以 JSON 格式向 Chef 服务器(假设使用 )查询这些节点属性。然后可以通过 API 使用该 JSON 来填充数据库中的字段。

谢谢你的帮助。

0 投票
1 回答
1062 浏览

chef-infra - 自定义 ohai 插件运行但不更新属性

我编写了一个非常简单的自定义 ohai 插件。它应该只检查系统上是否有任何带有 .war 扩展名的文件。厨师客户端运行似乎执行得很好(re-run ohai and merge results into node attributes)。但是,如果我从刀工作站编辑所有节点属性,则我设置的 warFiles 混搭没有任何内容。在 Chef Manage GUI 中也看不到额外的属性。该食谱被命名为“库存”。为什么我的属性没有被存储???

我的“插件”实际上只包含一个 ruby​​ 文件:

我的 metadata.rb 除了其中的预配置内容外,还有这两行:

然后是这里的食谱:

这是 chef-client 运行的输出:

===== 更新 =====

我已经找到了插件目录(/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/ohai-8.20.0/lib/ohai/plugins)。直接在 chef 节点上工作,我已经将我的插件 ruby​​ 文件直接放在这个目录中。我知道这是正确的目录,因为我将 uptime.rb 文件移出目录,重新运行 chef-client,然后运行 ​​ohai | grep -i uptime ...正常运行时间消失了。将 ruby​​ 文件移回此目录,我能够将正常运行时间恢复到 ohai 的输出。我知道下面的插件在正确的目录中。

ohai 是否只执行此目录中的所有内容,还是有一些我需要添加文件名的 ohai 列表?否则,我的代码或语法一定是错误的

0 投票
1 回答
2712 浏览

ruby - 厨师 shell_out 只给出十六进制值

我正在创建下面的厨师食谱。但是,我的 shell_out 调用只是返回扩展变量的十六进制值。如何在变量中获取 find 命令的值,而不是垃圾十六进制值?

这是我的食谱中的相关代码片段::

这是 chef-client 运行输出的一部分:

0 投票
1 回答
230 浏览

azure - Azure 上的 Chef 引导不会填充 cloud_v2 属性

当我引导在 Google Cloud 和 Rackspace 上创建的虚拟机时,运行 Chef 的knife bootstrap命令成功地通过 Ohai 填充属性,但在 Azure 虚拟机上,通过刀引导使哈希非常空——它只填充了一个属性:. cloud_v2cloud_v2provder: azure

相比之下,Ohai 成功地使用如下所示的内容填充了 Google Cloud 和 Rackspace 节点:

cloud_v2: public_ipv4_addrs 0: xxx.xxx.xxx.85 local_ipv4_addrs 0: 10.240.0.2 provider: gce local_hostname: myhostname.projectname.internal public_ipv4: xxx.xxx.xxx.85 local_ipv4: 10.240.0.2

这是 Azure 的 Ohai 插件中的错误吗?如何让 Knife 引导命令包含更多默认 Ohai 属性?最具体地说,我需要 public_ipv4,所以我可以使用这个属性来运行knife ssh命令。

0 投票
1 回答
842 浏览

amazon-ec2 - How do I use the only_if for regions in EC2 instances

I'm trying to setup a only_if recipe, I only want file1 to be used in our East region and File2 to be using in the West region. The results right now is, the client bypasses the cookbook (file) because of the only_if. I looked at the logs, but they are not very informative. So I'm at a lost as to why its not working.

I have also tried this way with the same negative results.
node[ec2][placement_availability_zone]

Here is the ohai results on the same server.

0 投票
1 回答
295 浏览

chef-infra - 禁用 ohai 'passwd' 插件的副作用是什么

我有几个节点面临“413“请求实体太大”错误”。谷歌搜索后,我发现我们需要禁用'passwd'ohai插件以减少保存到Chef服务器的节点数据大小 - 参考: Opscode Chef Request entity too large registering a node 只是想知道,如果有如果我们禁用“passwd”ohai 插件,会有任何副作用。

0 投票
1 回答
2940 浏览

ruby - 厨师客户端失败。0 资源在 01 秒内更新 - 错误:参数数量错误(给定 1,预期 3)

我正在尝试按照 官方代码示例在 Amazon EC2 上运行一个简单的 Hazelcast 集群,每一步似乎都可以,但是在运行时vagrant up --provider=aws(在标题“让我们做这件事”下)它失败,如下所示:

/var/chef/cache/chef-stacktrace.out:

Ohai 版本:ohai -version Ohai:13.5.0

未安装Java jdk(应根据回执):

在 Stacktrace 之后,我认为它与以下功能有关:/opt/chef/embedded/lib/ruby/gems/2.4.0/gems/ohai-13.5.0/lib/ ohai/dsl/plugin/versionvi.rb:27:in `initialize':

...需要 3 个参数,并且仅使用一个参数调用:/opt/chef/embedded/lib/ruby/gems/2.4.0/gems/ohai-13.5.0/lib/ohai/loader.rb:223:in函数中的“新”:/opt/chef/embedded/lib/ruby/gems/2.4.0/gems/ohai-13.5.0/lib/ohai/loader.rb:223:in `load_v7_plugin'

我在 Ubuntu 14.04 和 Ubuntu 16.04 VM 上重复了这些步骤,但我仍然遇到相同的错误,知道我做错了什么吗?

PS 我只是按照示例中的步骤进行操作。

谢谢

0 投票
1 回答
91 浏览

key - 为 Windows 注册表构建自定义 Ohai 插件

我需要构建一个自定义 ohai 插件来读取 windows_registry 键并在运行 chef-client 时更新属性。我试图弄清楚如何实施,但让我对如何使用它们更加困惑?

0 投票
1 回答
892 浏览

chef-infra - Chef 如何检测 AWS ec2 实例类型?

如果在启用 ENA 的 ami(例如 c5.2xlarge)上运行实例,我需要运行任意脚本 一个 shell 命令很容易验证类型:

...但我猜在 ohai 中也有一些东西可以帮助进行这种检测。但是不确定在哪里/如何访问该属性。有任何想法吗?

0 投票
0 回答
204 浏览

chef-infra - 未检测到 Chef 节点虚拟化类型

我有一个成功检测 VM 是否为 VMware VM 的代码块:

但是,如果我用 AWS 尝试同样的事情,它似乎不起作用:

从 VM 命令行运行“ohai hostnamectl”,属性看起来类似:

虚拟机:

和 AWS 实例:

谁能告诉我为什么 xen 属性没有像 vmware 属性那样被拾取?