首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Inspec测试以OS版本为条件

Inspec测试以OS版本为条件
EN

DevOps用户
提问于 2018-09-23 14:58:31
回答 1查看 2.4K关注 0票数 3

告诉Inspec在OS版本A上运行测试X,在OS版本B上运行测试Y的惯用方法是什么?我知道技术将主厨node对象转储到/tmp中的JSON文件中,但这并不是为我所做的,因为它运行在Test中,而Inspec在真正的主机上执行.却看不到它。

EN

回答 1

DevOps用户

回答已采纳

发布于 2018-11-20 22:49:51

我所建议的,就像你下面的评论,是把这个带到#inspec频道的厨师社区斯拉克问那里。话虽如此,我可以这样攻击它:

代码语言:javascript
复制
control 'some-control-slug' do
  title 'My control'
  impact 1.0
  desc 'Example code for Stack Exchange'

  if os.windows? && ::Gem::Version.new(os.release) < ::Gem::Version.new('6.1')
    # Only executed on Windows machines older than 2008r2
    describe directory('C:/Users') do
      it { should exist }
    end

  elsif os.windows? && ::Gem::Version.new(os.release) >= ::Gem::Version.new('10')
    # Only executed on Windows Server 2016 or newer
    describe directory('D:/MyFolder') do
      it { should_not exist }
    end

  end

  # Executed on all host types
  describe sys_info do
    its('hostname') { should match(/SomeAwesomeHost/i) }
  end
end

此外,您还可以使用类似厨师的钩子(如only_if )来限制整个inspec控件。上面编写的示例代码可以在Linux目标上执行。我们可以通过在desctitle附近放置以下内容来限制它们:

代码语言:javascript
复制
only_if { os.windows? }
票数 3
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/5037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档