InSpec:“无法加载<profile>,因为它定义为依赖项时未列为依赖项”

时间:2017-01-20 14:05:40

标签: inspec

在InSpec 1.9.0中,我使用依赖关系定义了以下配置文件,包括依赖配置文件中的所有控件。

然而,执行时我收到错误,指出配置文件“未列为依赖

我错过了什么?

  • inspec.yml

    name: my-profile
    version: 0.0.1
    supports:
      - os-family: unix
    depends:
      - name: ssh-baseline
        url: https://github.com/dev-sec/ssh-baseline/archive/master.zip
    
  • controls/include_ssh_baseline.rb

    include_controls 'ssh-baseline'
    
  • 命令:

    inspec exec my-profile -t ssh://user@host.domain
    
  • 执行配置文件的结果:

      

    无法加载ssh-baseline,因为它未列为依赖项   我的个人资料。

         

    此背景下可用的依赖关系是:
      
      

    (两个空行)

我没有看到语法错误。它几乎是来自InSpec Profiles页面的复制粘贴示例。

以下依赖项定义(git而不是url)也导致了与上述相同的错误消息:

depends:
  - name: ssh-baseline
    git: https://github.com/dev-sec/ssh-baseline.git

2 个答案:

答案 0 :(得分:1)

我刚刚根据您的帖子创建了一个配置文件,它没有任何问题。我使用了inspec 1.9.0。只是为了确定,你能试试inspec exec ./my-profile -t ssh://user@host.domain吗?

答案 1 :(得分:1)

inspec.lock文件在第一个配置文件执行时创建,并包含对依赖项的引用。如果您逐步构建配置文件,最终可能会得到一个不包含依赖项的inspec.yml文件(从第一次运行开始):

---
lockfile_version: 1
depends: []

如果您希望反映inspec.yml的更改或在配置文件目录中运行以下内容,则需要删除该文件:

inspec vendor --overwrite

请参阅Vendoring dependencies(它没有提到--overwrite,但如果它不存在则会立即抛出错误:

  

执行本地配置文件时,将读取inspec.yml文件以获取任何配置文件依赖项。然后它将在本地缓存依赖项并生成inspec.lock文件。如果您在inspec.yml中添加或更新依赖项,请通过以下任一方式刷新锁定文件:

     
      
  • 在个人资料目录中运行inspec vendor;或
  •   
  • 在运行inspec exec之前删除inspec.lock
  •