我尝试在数字海洋上设置流浪盒,但是厨师独奏失败了
==> ds_cabinet_do: Chef::Exceptions::UserIDNotFound
==> ds_cabinet_do: --------------------------------
==> ds_cabinet_do: cannot determine user id for 'vagrant', does the user exist on this system?
这是我的Vagrantfile:
1 Vagrant.configure('2') do |config|
2 config.vm.define :ds_cabinet_do do |config|
3 config.vm.hostname = 'cabinet'
4 config.vm.network 'forwarded_port', guest: 3000, host: 3000
5
6 #according to https://github.com/smdahlen/vagrant-digitalocean
7 config.vm.provider :digital_ocean do |provider, override|
8 override.ssh.private_key_path = '~/.ssh/id_do_vbox'
9 override.vm.box = 'digital_ocean'
10 override.vm.box_url = 'https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box'
11
12 provider.token = 'b6c724f53dca64df5e5310e042852e89ea6b6ca1492c45f17a584041aaf71200'
13 provider.image = '14.10 x64'
14 provider.region = 'nyc2' #['nyc1', 'ams1', 'sfo1', 'nyc2', 'ams2', 'sgp1', 'lon1', 'nyc3', 'ams3']]
15 provider.size = '512mb'
16 end
17
18 #config.vm.synced_folder '../..', '/home/vagrant/my_src'
19 config.ssh.forward_agent = true # to use host keys added to agent
20
21 # provisioning
22 config.vm.provision :shell, :inline => 'sudo apt-get update'
23 config.vm.provision :shell, :inline => 'sudo apt-get install ruby2.1-dev build-essential'
24 config.vm.provision :shell, :inline => 'sudo gem install chef --version=11.8.2 --no-ri --no-rdoc'
25
26 config.vm.provision 'chef_solo' do |chef|
27 chef.log_level = 'info'
28 chef.environment = 'development'
29 chef.environments_path = 'environments'
30 chef.cookbooks_path = ['cookbooks', 'site-cookbooks']
31 chef.roles_path = 'roles'
32 chef.data_bags_path = 'data_bags'
33 chef.json.merge!(JSON.parse(IO.read('nodes/10.2.2.15.json')))
34 end
35 end
36 end
系统中似乎没有用户vagrant
因为/etc/passwd
文件中没有相应的行
答案 0 :(得分:2)
好像你已经有了答案,但请允许我尝试进一步澄清事情。
vagrant
用户历来是Vagrant用于SSH进入其框的默认用户。它是作为访问VM的标准方法创建的。 VirtualBox(以及可能是Vagrant支持的所有其他本地虚拟机管理程序)基本框使用insecure_private_key
预授权的用户进行烘焙。所有Vagrant安装中的密钥都是相同的,它有两个基本的推论:
请记住,当Vagrant创建时,它与VirtualBox耦合。其他虚拟机管理程序和云提供商在很晚之后添加了。
云以与本地虚拟机管理程序截然不同的方式工作。通常不会在VM映像中烘焙身份验证,因此不能使用不安全密钥。你可能不会想要这样,因为它会让你的云Vagrant实例向全世界开放,因为任何人都可以拿到钥匙。
如果您阅读了README for the DigitalOcean provider,您会看到其中一项功能
"设置用于身份验证的SSH公钥"
该密钥将设置在您正在使用的VM映像的默认管理员的任何用户上(可能是root
,可能是ubuntu
等)。
您不应该假设用户vagrant
存在于那里。它有可能没有。