ruby - 检查未识别的资源
问题描述
我正在使用带有 ruby 的 inspec 测试框架进行基础设施测试。我在控件中写了一个测试
这是我的测试:
require 'aws-sdk'
credentials = Aws::AssumeRoleCredentials.new(
role_arn: 'some_value',
role_session_name: 'pipeline')
client_params = {
region: 'ap-southeast-2',
credentials: credentials
}
ec2_client = Aws::EC2::Resource.new(client_params)
instance = ec2_client.instances(filters: [{name:'tag:component', values: ['api', 'fxsnet', 'admin']}])
puts "ec2 Client is : #{ec2_client}"
puts "list of instances based on tag is: #{instance}"
instance.each do |i|
puts 'ID: ' + i.id
puts 'State: ' + i.state.name
#for each of the instance check if tmp file exist
describe file('/tmp') do # The actual test
it { should exist }
end
end
但在执行时,我得到以下错误
An error occurred while loading ./inspec-infra-tests/controls/apiInstances.rb.
Failure/Error:
describe file('/tmp') do # The actual test
it { should exist }
end
NoMethodError:
undefined method `file' for main:Object
Did you mean? fail
# ./inspec-infra-tests/controls/apiInstances.rb:46:in `block in <top (required)>'
# ./inspec-infra-tests/controls/apiInstances.rb:35:in `<top (required)>'
No examples found.
0 examples, 0 failures, 0 passed
file InSpec 审计资源,用于测试所有系统文件类型,包括文件、目录、符号链接、命名管道、套接字等。
#InspecWithRuby #inspec #inspecResourcesNotIdentified #InspecResourcesNotFound
解决方案
我不熟悉 AWS 开发工具包,但如果您想使用 InSpec 测试一组文件,您可以这样做:
myfiles = %w(temp.err temp.out)
control 'tmp-files-1' do
title 'Test for a set of temp files.'
myfiles.each do |myfile|
describe file('/tmp/' + myfile) do
it { should exist }
end
end
end
如果您执行此控件,它将返回以下内容(假设这些文件实际存在于您的/tmp
文件夹中:
✔ tmp-files-1: Test for a set of temp files.
✔ File /tmp/temp.err should exist
✔ File /tmp/temp.out should exist
我希望您可以采用此示例并使其适应您的 AWS 需求。
推荐阅读
- docker - 将 plex 作为 docker 容器运行,无法访问 Web UI
- apache-kafka - 时间戳与 avro 架构
- linux - 有人可以向我解释一下“read var1 _ < <(ls -1l | wc -l); echo $var1”
- c# - 如何在http post请求的每一行中添加一个标头
- typescript - 打字稿:从具有索引签名的对象中获取密钥
- c# - 尝试使用 mongodb 的 filter.near
- java - Jhipster UAA 外部客户端
- python - Pandas Python - 比较不同的日期范围并检查它们是否在同一时间段内
- jqgrid - jqgrid - 使用“自定义”表单更新多行,如高级搜索
- android - 颤振,连接丢失,谷歌api