在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
答案 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