如何让 Ohai 插件生成 ['etc']['passwd']?

2024-03-13

我已将 Chef 客户端从14.0 to 15.3.14但每当我在我的节点(macOS Mojave)上执行 Chef-client 时,就会出现问题。
客户端输出是:

-------------
undefined method `[]' for nil:NilClass

Cookbook Trace:
---------------
  /var/chef/cache/cookbooks/macos/recipes/mac_init.rb:62:in `from_file'

Relevant File Content:
----------------------
/var/chef/cache/cookbooks/macos/recipes/mac_init.rb:

 55:    action :create
 56:    owner 'administrator'
 57:    group 'localaccounts'
 58:    mode  '0775'
 59:  end
 60:
 61:  # Template for bash history
 62>>   node['etc']['passwd'].each do |user, data|
 63:
 64:    template "/Users/#{user}/.bash_profile" do
 65:      source '/default/bash_profile.erb'
 66:      owner 'administrator'
 67:      group 'staff'
 68:      ignore_failure true
 69:    end
 70:  end

看起来node['etc']['passwd']不再可读哪个结果的值为nil.
我检查了另一台新引导的机器,并在 Chef Server UI 上验证它,但结果是,属性选项卡中没有“etc”。


阅读Ohai 发行说明 https://github.com/chef/ohai/blob/master/RELEASE_NOTES.md#optional-ohai-plugins它说:

可选的 Ohai 插件

Ohai 现在包含将插件标记为可选的功能,默认情况下会跳过这些插件。这使我们能够提供额外的插件,一些用户可能会发现这些插件很有用,但并非所有用户都希望被写入他们的 Chef 服务器。此更改引入了两个新的配置选项;run_all_plugins它运行所有内容,包括可选插件,以及optional_plugins它允许您运行标记为可选的插件。

默认情况下,我们现在将标记lspci, sessions and passwd插件作为可选。 Passwd 对于连接 LDAP 或 AD 的节点尤其有问题,因为它试图将整个目录写入节点。如果您之前通过 Ohai 配置禁用了此插件,则不再需要。欢呼!

但你总是可以启用可选插件 https://docs.chef.io/ohai.html#enabling-optional-plugins:

启用可选插件

可以在以下位置启用可选插件client.rb配置文件:ohai.optional_plugins = [ :Sessions, :Lspci ]

在您的具体情况下:

ohai.optional_plugins = [
  :Passwd
]

假设您使用bundler安装了ohai,那么您可以检查passwd是否存在通过执行

$ bundle exec ohai etc

配置

不断地有这样的行为,那么:

  • if 零号厨师 https://docs.chef.io/ctl_chef_client.html#about-chef-zero调用时使用chef-client, client.rb https://docs.chef.io/config_rb.html可以使用,可以存储在存储库中。
  • use ohai资源 https://docs.chef.io/resource_ohai.html。就像是:
    ohai 'reload_passwd' do
      action :reload
      plugin 'etc'
    end
    
  • 有助于厨师-客户食谱 https://github.com/chef-cookbooks/chef-client,获得免费支持node['ohai']['disabled_plugins']

UPDATE:厨师-客户食谱中已引入对此的支持:

  • node['ohai']['disabled_plugins']- 要禁用的 ohai 插件数组,默认为空,如果指定则必须是数组。 Ohai 6 插件应指定为字符串(即“dmi”)。 Ohai 7+ 插件应指定为引号内的符号(即“:Passwd”)。
  • node['ohai']['optional_plugins']- 要启用的可选 ohai 插件数组,默认为空,如果指定则必须是数组。 Ohai 6 插件应指定为字符串(即“dmi”)。 Ohai 7+ 插件应指定为引号内的符号(即“:Passwd”)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Ohai 插件生成 ['etc']['passwd']? 的相关文章

随机推荐

  • YepNope 和 LabJS 的替代品 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想通过资源加载器加载 javascript 和 css 文件 我最初使用 LabJs 但我发现 Ye
  • 获取文本视图和图像视图相对于屏幕顶部的结束位置

    我有一个位图 它下面是一条时间线 作为一个例子 考虑右侧的布局FIGURE https stackoverflow com questions 17103026 canvas containing bitmap size proper ad
  • LLVM 的 amd64 输出中向量的对齐

    我正在尝试通过 LLVM 在结构内部使用向量 我的结构有以下 C 定义 struct Foo uint32 t len uint32 t data 32 attribute aligned 16 下面是一些 LLVM 代码 用于将 42 添
  • 如何检查三元运算符中未定义的变量?

    我对三元运算有疑问 let a undefined Defined Definitely Undefined b abc Defined Definitely Undefined ReferenceError c abc undefined
  • 编码 UI:通过 CSS 选择器查找元素

    我正在尝试为页面构建一个工具 以便我们可以针对它编写测试 我希望能够做的是使用 CSS 选择器来查找给定的一个或多个元素 而不是手动修改 SearchProperties 或 FilterProperties 对于 Web 测试 CSS 选
  • 使用 C# 进行声音合成

    C 是否有可能生成声音 我的意思不仅仅是发出蜂鸣声或打开并播放波形文件 我的意思是使用不同类型的波 正弦波 锯齿波等 及其选项 频率 幅度等 构建信号 查看NAudio https github com naudio NAudio在 Git
  • SQL 列中的 XML:无法调用 nvarchar(max) 上的方法

    我有一个 sql 查询 该查询在我的列名上出现错误 提示 无法调用 nvarchar max 上的方法 SELECT LEARNER COURSE XML TEST XML EX Query declare namespace x http
  • 按 Javascript 数组中出现的次数(计数)排序

    我是 Jquery 和 Javascript 的新手 有人可以帮我根据数组中出现的次数 计数 进行 Jquery 排序吗 我尝试了各种排序方法 但没有一个有效 我有一个 Javascript 数组 它是 allTypesArray 4 4
  • 自定义SeekBar的矩形边缘[重复]

    这个问题在这里已经有答案了 我已经定制了SeekBar用一个分层绘制 drawable工作正常 但是用作背景的drawable在角处变成圆角 两个角 这里只显示右端 当拇指移动到最左边时 左角也变圆 注意 原始图像是矩形的 我怎样才能把它变
  • 在 iOS 中测量/计算距离

    我需要计算 iOS 中两点之间的距离 我可以保证至少有一部iPhone 4 所以相机的图像质量应该很好 这个想法是使用图片计算到某个点的距离 有一个名为 easyMeasure 的应用程序 它完全可以满足我的需要 我对毕达哥拉斯很满意 但这
  • 将简单的服务器代码部署到 Heroku

    我最近访问了 heroku com 网站并尝试在那里部署我的第一个 Java 程序 实际上我使用他们的 Java 部署教程有了一个良好的开端 并且运行正常 现在我有一个需要在那里部署的服务器代码 我尝试遵循该示例 但我有一些问题 例如 1
  • 邮递员 - 为每个请求覆盖用户代理

    我有一个网站 只有在基本身份验证登录后才能访问 您可以使用特定的用户代理绕过它 有没有办法始终将新请求的用户代理设置为某个值 目前它被硬编码为PostmanRuntime 7 29 0 目前 我总是为每个请求手动设置它 但这会减慢工作流程
  • Hedera 上几乎相同的交易中“gasUsed”值存在巨大差异 - 为什么?

    我注意到所使用的气体量之间存在差异 通过交易几乎是相同的 我正在调用智能合约 连续两次使用相同的参数 两者之间的唯一区别 是我正在设置gasLimit到精确值 由返回eth estimateGas在第一个中 我正在设置gasLimit to
  • 如何不需要用户输入 install.packages(type = "both")

    通常情况下 install packages type both 如果有需要从源代码构建的包 则需要用户输入 例如 目前 R 3 5 1 install packages c feather tidyr type both 将从二进制安装
  • 如何更新 bitbucket 上的拉取请求?

    如何在本地计算机上的 IDE 中的 bitbucket 上更新您自己的拉取请求之一 此工作流程没有按我的预期工作 克隆你的叉子 检查您用于拉取请求的分支 做出改变 git 添加 git 提交 推送提交 到您的分叉存储库 到目前为止一切顺利
  • MenuStrip 无法获得负载焦点

    我会尽可能准确 我有一个主表单 我们将在 Form1 中将其称为 Form1 用户可以通过菜单条启动另一个表单 在 Form2 中将其称为 Form2 我有另一个菜单条和一个数据网格视图 我的问题是 当用户启动 Form2 时 我必须在菜单
  • R函数将对象转换为代码

    我正在 R 中寻找一个函数 它将对象转换为可用于创建该对象的副本的代码 像这样的事情 gt myObject c 1 2 3 gt magicFunction myObject 1 c 1 2 3 我认为这个功能是存在的 但我找不到它 非常
  • 使用 Nginx 服务器设置 Symfony

    我的项目需要使用 Nginx 服务器设置 symfony 我之前曾将 Symfony 与 Apache 一起使用 目前我已按照此处提到的步骤进行操作 但不知何故它运行不正常 Update nginx wiki 现在包含symfony 1 4
  • Javascript eval() 和附加脚本标签之间的区别

    我想知道是否有人可以解释使用 Javascript 的 eval 和另一种方法之间的区别 例如使用 JQuery 创建脚本标签 然后将该元素附加到页面 eval somecode vs appendTo head 不确定这是否相关 但上下文
  • 如何让 Ohai 插件生成 ['etc']['passwd']?

    我已将 Chef 客户端从14 0 to 15 3 14但每当我在我的节点 macOS Mojave 上执行 Chef client 时 就会出现问题 客户端输出是 undefined method for nil NilClass Coo