【问题标题】:undefined method `nssm' for cookbook食谱的未定义方法“nssm”
【发布时间】:2021-11-30 06:05:27
【问题描述】:

我正在尝试通过说明书使用 nssm 安装 jmeter 服务。

但是在运行 chef blend 时我遇到了错误

FATAL: NoMethodError: undefined method `nssm' for cookbook: (chef-apply cookbook), recipe: (chef-apply recipe) :Chef::Recipe

这里是代码

首先我在 chef 中使用以下命令将 nssm 安装到我的本地 VM

  chocolatey_package 'nssm' do
    action    :install
    version  '2.24.101.20180116'
  end

然后想在 chef 中使用 nssm 安装 jmeter 服务

nssm 'jmeter_service' do
    program 'C:\ProgramData\chocolatey\lib\jmeter\tools\apache-jmeter-5.2.1\bin\jmeter-server.bat'
    parameters(
      AppDirectory: 'C:\ProgramData\chocolatey\lib\jmeter\tools\apache-jmeter-5.2.1\bin',
      AppStdout: 'C:\ProgramData\chocolatey\lib\jmeter\tools\apache-jmeter-5.2.1\bin\output.log',
      AppStderr: 'C:\ProgramData\chocolatey\lib\jmeter\tools\apache-jmeter-5.2.1\bin\error.log',
      #AppRotateFiles: 1
    )
    action %i[install start]
  end

提前致谢

【问题讨论】:

标签: jmeter chef-infra nssm


【解决方案1】:

您似乎正在使用nssm supermarket cookbook,而失败似乎表明您正在运行chef-apply,它只能运行一个配方。

但由于您尝试使用另一本食谱中的自定义资源,您需要:

  1. 拥有自己的食谱
  2. 在本地或 Chef 服务器上拥有 nssm(及其依赖的 windows 食谱)
  3. 在您的说明书metadata.rb 中定义nssm 说明书的依赖关系
  4. chocolatey_package 将安装 nssm 二进制文件,这与 nssm 'something' do 不同

本地设置示例:

  1. 从超市下载 nssmwindows 食谱到食谱路径

  2. 用你的食谱和metadata.rb创建另一个简单的食谱(例如mycookbook

  3. metadata.rb中定义依赖:

    depends 'nssm', '~> 4.0.1'
    
  4. 可选择删除chocolatey_package 资源

  5. 使用chef-clientchef-zero 运行您的食谱

    chef-client -z -r recipe[mycookbook]
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多