Chef 使用 Vagrant 进行配置

Chef provisioning with Vagrant

Chef provisioning 提供了一个用于在 Chef 中幂等地创建机器和基础设施的库。

还有一个driver for using Vagrant

通过一些更改,我设法获得了一个在本地笔记本电脑上运行的简单示例。我将代码放在下面的 Ruby 文件 vagrant_linux.rb 中,然后 运行 它与 chef-client -z vagrant_linux.rb.

require 'chef/provisioning/vagrant_driver'
with_driver 'vagrant'

with_machine_options :vagrant_options => {
  'vm.box' => 'ubuntu/trusty64'#,
},:vagrant_config => <<EOF
    config.vm.provider 'virtualbox' do |v|
      v.memory = 4096
      v.cpus = 2
    end
EOF
machine 'mario' do
  converge true
end

当我根据此示例创建 Chef 食谱时,将其上传到我的 Chef 服务器,然后应用于节点,这始终失败并显示消息

[2016-06-20T20:16:36+02:00] ERROR: machine[mario] (ok-test::default line 99) had an error: RuntimeError: vagrant up mario --provider virtualbox failed!
STDOUT:
STDERR:Vagrant failed to initialize at a very early stage:

Vagrant is attempting to interface with the UI in a way that requires
a TTY. Most actions in Vagrant that require a TTY have configuration
switches to disable this requirement. Please do that or run Vagrant
with TTY.

Google 搜索显示这是一个常见问题,似乎没有 good/working 修复或解决方法。

这让我想知道我是否正在尝试做一些我不应该做的事情,因为它不受支持并且有更好的方法来做。

Vagrant 当然是 运行 在本地笔记本电脑上的工具。它通常不在服务器上使用。

我应该使用什么在服务器上配置简单的 VirtualBox 机器?

Chef Provisioning 不再是您应该开始新工作的项目,有关详细信息,请参阅 https://coderanger.net/provisioning/。如评论中所述,Test Kitchen 是用于通过 Vagrant 在本地或使用各种云插件之一设置开发和测试 VM 的正确工具。