0
我正在尝试使用net/ssh gem来查找已安装的软件包到我的Test-Kitchen实例中。我做一个简单的配方,重用构建必要的食谱。如何使用net/ssh gem来知道包是否已安装?
这是我的食谱:
node['my-cookbook']['packages'].each do |pkg|
package pkg
end
而这些是我的属性:
default['my-cookbook']['packages'] = %w[build-essential git bison]
这些都是一些步骤转化为我的黄瓜功能定义。
When(/^I ask for (.*)$/) do |package|
Net::SSH.start(@infrastructure['my-app'].ip,'vagrant', password: 'vagrant') do |ssh|
@out = ssh.exec!("dpkg --get-selections | grep #{package}")
end
end
Then(/^I should see (.*)$/) do |package_respond|
puts @out
@out.should match package_respond
end
当实例收敛时,build-essential被安装并且黄瓜测试成功了。
输出
puts @out
当时
grep: build-essential: No such file or directory
试验是成功的,因为expresion匹配。我期待
build-essential install
这里发生了什么? 未安装软件包时,控制台响应一个空字符串。
如何检查是否使用net/ssh gem将特定软件包安装到我的厨房实例中?
我的kithen实例是Ubuntu 12.04。
谢谢。
你为什么要使用Net :: SSH?为什么不使用像serverspec或bats这样的busser。请格式化您的代码。 – sethvargo
我怎样才能在黄瓜内使用serverspec? – Robert
你不知道。不要使用黄瓜... – sethvargo