Подготовка Chef предлагает библиотеку для идемпотентного создания компьютеров и инфраструктур в Chef.
Существует также драйвер для использования 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 показывает, что это распространенная проблема, для которой, похоже, нет хорошего/работающего решения или обходного пути.
Это заставляет меня задаться вопросом, не пытаюсь ли я сделать что-то, чего не должен, потому что это не поддерживается, и есть лучший способ сделать это.
Vagrant — это, конечно же, инструмент, который работает на локальном ноутбуке. Обычно он не используется на сервере.
Что мне следует использовать для подготовки простых машин VirtualBox на сервере?
test-kitchen
на самом деле хорошо подходит для этого, и я использую его, чтобы получить подготовленную чистую виртуальную машину, даже если я не тестирую кулинарную книгу. - person Karen B   schedule 20.06.2016