【问题标题】:Device not found error in Vagrant with Chef-Solo while testing cookbook在测试食谱时,使用 Chef-Solo 在 Vagrant 中找不到设备错误
【发布时间】:2017-03-20 03:10:05
【问题描述】:

我在一个存储库中创建了一些食谱,它们在 AWS 的实例中执行。我在 AWS 中的 dev/xvdb 位置手动创建了一个 EBS 卷,然后使用以下主厨代码安装它:

mount "mount encrypted EBS volume at opt directory for app deployment" do
  action [:mount, :enable]
  device "/dev/xvdb"
  fstype "ext3"
  mount_point "/opt"
end

现在,为了在本地测试食谱,我配置了一个 vagrant box 并尝试运行其中包含上述代码的食谱。我有以下 Vagrant 配置:

Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
  config.vm.provision "chef_solo" do |chef|
      chef.cookbooks_path = "cookbooks"
      chef.data_bags_path = "databags"
      chef.environments_path = "environments"
      chef.environment = "dev"
      chef.roles_path = "roles"
      chef.add_role("webapp")
  end
end

但由于 Vagrant 框没有 /dev/xvdb 文件夹路径,因此失败:

==> 默认值:Chef::Exceptions::Mount ==> 默认: ==> 默认值:------------ ==> 默认: ==> 默认:设备 /dev/xvdb 不存在

如何在我的 vagrant box 上进行本地测试?

【问题讨论】:

    标签: amazon-web-services testing vagrant chef-infra chef-solo


    【解决方案1】:

    添加类似only_if { node['ec2'] } 的内容,这样它只会将该资源聚合到实际的 EC2 机器上。你也可以使用node['cloud'] 或类似的东西来检查,或者如果你想以某种方式使其完全通用,only_if { ::File.exist?('/dev/xvdb') }

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2016-03-26
      • 2015-02-25
      相关资源
      最近更新 更多