无法确定'vagrant'的用户ID,用户是否存在于此系统中?

时间:2015-01-21 09:55:24

标签: vagrant digital-ocean

我尝试在数字海洋上设置流浪盒,但是厨师独奏失败了

==> 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文件中没有相应的行

1 个答案:

答案 0 :(得分:2)

好像你已经有了答案,但请允许我尝试进一步澄清事情。

vagrant用户历来是Vagrant用于SSH进入其框的默认用户。它是作为访问VM的标准方法创建的。 VirtualBox(以及可能是Vagrant支持的所有其他本地虚拟机管理程序)基本框使用insecure_private_key预授权的用户进行烘焙。所有Vagrant安装中的密钥都是相同的,它有两个基本的推论:

  • 顾名思义,它是不安全的(Vagrant被视为开发唯一技术的原因之一)
  • 它允许我们共享基本框而无需担心身份验证

请记住,当Vagrant创建时,它与VirtualBox耦合。其他虚拟机管理程序和云提供商在很晚之后添加了。

云以与本地虚拟机管理程序截然不同的方式工作。通常不会在VM映像中烘焙身份验证,因此不能使用不安全密钥。你可能不会想要这样,因为它会让你的云Vagrant实例向全世界开放,因为任何人都可以拿到钥匙。

如果您阅读了README for the DigitalOcean provider,您会看到其中一项功能

"设置用于身份验证的SSH公钥"

该密钥将设置在您正在使用的VM映像的默认管理员的任何用户上(可能是root,可能是ubuntu等)。

您不应该假设用户vagrant存在于那里。它有可能没有。