起因
某天打开VirtualBox后,发现之前创建的虚拟机都没了,后将虚拟机从本地磁盘又重新导入,但是发现使用 vagrant up 会创建新的虚拟机,而我要用vagrant管理已存在的虚拟机,就是 vagrant up的时候,我需要启动的是我已经存在的某台虚拟机,该怎么办?
解决方案
1、将原有的虚拟机打包成 box
1、查看目前virtualBox中有哪些虚拟机:
① 打开cmd窗口,切换到 virtualBox安装路径下,执行VBoxManage.exe list vms
,看到类似"work_vagrant01" {9e3c1f7f-2f1d-4596-9399-4146d5924552}
的信息
② 新开一个cmd窗口,切换到要保存 box 文件的路径下,执行vagrant package --base work_vagrant01 --output vagrant01.box
2、将打包好的 box 文件添加到 vagrant 环境中
cmd窗口中 切换到 box 文件存放路径,执行
vagrant box add vagrant01 vagrant01.box
如果要查看当前vagrant环境中已存在的box文件,执行vagrant box list
3、初始化 运行环境
建议新建个目录,用来单独初始化运行环境
在新建目录下打开cmd窗口,执行vagrant init vagrant01
(这个 vagrant01 是vagrant环境中已存在的 box 文件)
执行完后,目录下生成两个文件,一个.vagrant 一个 Vagrantfile,说明初始化成功。
4、光初始化完虚拟机后,还不行,还需要进行虚拟机网络和登录用户名密码的配置
在 Vagrantfile中添加
config.vm.network "private_network", ip: "169.254.22.10"
config.ssh.username="vagrant"
config.ssh.password="vagrant"
这里的ip,是virtualBox这里的网段中任意一个地址(virtualBox: “管理(E) -> 主机网络管理器”)
除此之外,还需要检查虚拟机是否允许SSH使用密码登录
① 先在 .vagrant 所在路径下打开cmd窗口,执行vagrant up
无论是否成功,在 virtualBox中都会创建一个虚拟机。
② 不使用ssh登录虚拟主机中,执行vi /etc/ssh/sshd_config
③ 在 sshd_config 中找到PasswordAuthentication
,后面如果是 no,就改成 yes
最后就可以正常使用vagrant ssh登录了,至于登录的更多问题,参考另一篇博客:
https://blog.csdn.net/xiangbin1997/article/details/111633987