问题描述
可能是一个愚蠢的问题但是
我之前使用过trustd64盒子并且正在尝试使用xenial64盒子,但是它不接受通常的用户:vagrant密码:vagrant login?
最佳解决方案
正如用户@prometee在此启动板讨论#1569237中所提到的,您可以在以下位置找到密码:
~/.vagrant.d/ubuntu-VAGRANTSLASH-xenial64/20161221.0.0/virtualbox/Vagrantfile
要么:
~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/20161221.0.0/virtualbox/Vagrantfile
取决于您的Vagrant版本。 (注意路径的20161221.0.0
部分将根据下载框的时间而有所不同。此外,目录中可能有多个。)
这是我的(第8行):
# Front load the includes
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
load include_vagrantfile if File.exist?(include_vagrantfile)
Vagrant.configure("2") do |config|
config.vm.base_mac = "022999D56C03"
config.ssh.username = "ubuntu"
config.ssh.password = "fbcd1ed4fe8c83b157dc6e0f"
config.vm.provider "virtualbox" do |vb|
vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ]
vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "ubuntu-xenial-16.04-cloudimg-console.log") ]
end
end
仅供参考,用户@racb提及与this bug report having been filed
to ubuntu及迄今为止no [...] decision has been made yet
相同的讨论。
次佳解决方案
昨天我把头撞到墙上半天,直到我意识到我正在运行旧版Virtualbox(5.0.x)和Vagrant(1.8.0)
更新到VirtualBox 5.1.x和Vagrant 1.8.7并获得了更好的结果
基本上ubuntu/xenial32
和ubuntu/xenial64
图像存在缺陷,因为它们没有开箱即用的vagrant
用户。
这是针对Vagrant specifications的
我最终按照this bug report中的建议使用v0rtex/xenial64
。不知道为什么canonical
没有解决这个问题
我的流浪文件如下
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "v0rtex/xenial64"
config.vm.network :private_network, ip: "10.10.10.10"
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.vm.provider :virtualbox do |vb|
vb.name = "supercool"
vb.customize ["modifyvm", :id, "--memory", "768"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
end
如果您仍想使用canonical
提供的图像,可以使用以下方法
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network :private_network, ip: "10.10.10.10"
config.ssh.insert_key = true
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |vb|
vb.name = "supercool"
vb.customize ["modifyvm", :id, "--memory", "768"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
end
如果这样做,/vagrant
文件夹将归ubuntu:ubuntu
所有,而不是vagrant:vagrant
。如果您有依赖vagrant
用户的脚本,那么它们将会中断
第三种解决方案
它已被修复(2018/01/13):https://bugs.launchpad.net/cloud-images/+bug/1569237/comments/111
您可能想要运行vagrant box update
,然后运行vagrant destroy
。
第四种方案
一种方法是安装expect并启动密码更改。下面的示例将密码ubuntu设置为用户ubuntu。
Vagrant.configure("2") do |config|
apt-get install -y expect
echo '#!/usr/bin/expect
set timeout 20
spawn sudo passwd ubuntu
expect "Enter new UNIX password:" {send "ubuntu\\r"}
expect "Retype new UNIX password:" {send "ubuntu\\r"}
interact' > change_ubuntu_password
chmod +x change_ubuntu_password
./change_ubuntu_password
end