Во-первых, вот ошибка, которую я получаю:
There are errors in the configuration of this machine. Please fix
the following errors and try again:
chef client provisioner:
* Chef server URL must be populated.
* Validation key path must be valid path to your chef server validation key.
URL-адрес сервера шеф-повара заполнен, и путь к ключу проверки действителен.
У меня есть 3 действующих файла Vagrantfile, и я использую документацию для постарайтесь получить правильный порядок.
Это отлично работает, когда я вставляю все в один файл Vagrantfile в каталоге проекта, но я хочу установить значения по умолчанию и не копировать все.
1) Vagrantfile в комплекте с коробкой:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.provider :vsphere do |vsphere|
vsphere.host = 'vsphereserver.example.com'
vsphere.compute_resource_name = 'TestDev'
vsphere.user = 'vagrantadmin'
vsphere.password = 'password'
vsphere.insecure = true
end
config.ssh.username = 'auto'
config.ssh.private_key_path = '~/.vagrant.d/id_rsa'
end
2) Vagrantfile в моем домашнем каталоге (~/.vagrant.d):
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = 'vsphere'
config.vm.provider :vsphere do |vsphere|
vsphere.template_name = 'vagrantchefnode'
end
config.vm.provision "chef_client" do |chef|
chef.add_role "base"
chef.provisioning_path = "/etc/chef"
chef.chef_server_url = "https://chefserver.example.com"
chef.validation_key_path = "/home/user/.vagrant.d/chef/validation.pem"
chef.client_key_path = "/etc/chef/client.pem"
chef.validation_client_name = "chef-validator"
chef.custom_config_path = "/home/user/.vagrant.d/Vagrantfile.chef"
chef.delete_node = true
chef.delete_client = true
end
end
3) Vagrantfile из каталога проекта (~/.vagrant.d/boxes/chefnode1):
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.provider :vsphere do |vsphere|
# vsphere.template_name = 'chefnode'
vsphere.customization_spec_name = 'chefnode1'
vsphere.name = 'chefnode1'
end
config.vm.provision "chef_client" do |chef|
chef.node_name = "chefnode1"
chef.add_role "test"
end
end
Это каким-то образом перезаписывает всю конфигурацию chef_client? Если да, то как мне заставить его придерживаться и сливаться так, как это должно быть?
Обновление:
У меня есть кое-что, что работает с ответом Теджая и этим документом, но это требует перевода на другой синтаксис, и я не могу понять, как перевести такие методы, как add_role
. Вот что у меня есть:
2)
config.vm.provision "chef_client",
id: "chef",
provisioning_path: "/etc/chef",
chef_server_url: "https://chefserver.example.com",
validation_key_path: "/home/user/.vagrant.d/chef/validation.pem",
client_key_path: "/etc/chef/client.pem",
validation_client_name: "chef-validator",
custom_config_path: "/home/user/.vagrant.d/Vagrantfile.chef",
delete_node: true,
delete_client: true
3)
config.vm.provision "chef_client",
id: "chef",
node_name: "chefnode1"
Итак, это запускает машину, но я не могу указать run_list.