Vagrant
官方站点
文档:https://developer.hashicorp.com/vagrant/docs
Box 镜像仓库:https://portal.cloud.hashicorp.com/vagrant/discover
快速开始
安装 Vagrant
设置环境变量
安装完成后,配置 .vagrant.d 的位置,通过 vagrant 下载的 box 都会存放在该目录下。设置VAGRANT_HOME
环境变量即可。
安装 Provider 插件
以 Vmware Workstation Pro 17 为例:
备注
VagrantVMware 插件修改
可能已过时,最新版本不需要修改。
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\VagrantVMware
###ImagePath
C:\\HashiCorp\\VagrantVMwareUtility\\bin\\vagrant-vmware-utility.exe service run -config-file="C:\\programdata\\hashicorp\\vagrant-vmware-desktop\\config\\service.hcl" -log-file="C:\\programdata\\hashicorp\\vagrant-vmware-desktop\\logs/utility.log" -license-override professional
导入 Box
先到官网下载好 Box,再导入,以 Rocky Linux 9 为例:
初始化和启动
Vagrant.configure("2") do |config|
config.vm.box = "rocky9"
config.vm.hostname = "rs9-dev"
config.vm.disk :disk, size: "50GB", primary: true
config.vm.network "private_network", type: "dhcp"
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true" #禁用默认ssh端口转发
config.vm.network "forwarded_port", guest: 22, host: 20090 #ssh
config.vm.network "forwarded_port", guest: 29494, host: 29494 #1panel
config.vm.provider "vmware_desktop" do |v|
v.vmx["memsize"] = "8192"
v.vmx["numvcpus"] = "2"
end
end
安装完成后打开 VMware,发现列表中没有 centos/7
,找到 VMware 底部托盘,选择 打开全部后台虚拟机
后即可看到。
更改默认的 SSH 端口
Vagrant 默认转发宿主的 2222 端口到虚拟机的 22 端口(默认设置,无须配置)。
如果想要修改端口号或者去掉,解决办法是先禁用默认的 ssh 转发,再添加自定义转发:
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
config.vm.network "forwarded_port", guest: 22, host: 3333
注意:第一条规则必须有 id: "ssh"
,否则会报如下错误:
重启后,即可看到转发端口已经更改为 3333。
启用 SSH 密码登录
以 Rocky Linux9 为例。
初始化虚拟机后,首次必须使用 ssh 私钥文件登录。
### 查看ssh私钥路径,将私钥文件导入到你的ssh连接工具后即可直接登录。
PS D:\opt\Vagrant\instance\rocky9> vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 20090
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile D:/opt/Vagrant/instance/rocky9/.vagrant/machines/default/vmware_desktop/private_key
IdentitiesOnly yes
LogLevel FATAL
PubkeyAcceptedKeyTypes +ssh-rsa
HostKeyAlgorithms +ssh-rsa
进入虚拟机内部后,开启 ssh 密码登录即可。官方 Rockylinux 的 Vagrant 镜像,用户和密码都是 vagrant。
sudo -i
vi /etc/ssh/sshd_config
###这两项配置改成yes
PermitRootLogin yes
PasswordAuthentication yes
###重启ssh服务
systemctl restart sshd
扩展磁盘未分配空间
安装后磁盘分区如下:
[vagrant@ldev-rs9 ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 100M 0 part /boot/efi
├─sda2 8:2 0 1000M 0 part /boot
├─sda3 8:3 0 4M 0 part
├─sda4 8:4 0 1M 0 part
└─sda5 8:5 0 7.8G 0 part /
[vagrant@ldev-rs9 ~]$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 18M 1.6G 2% /run
efivarfs 64K 5.1K 54K 9% /sys/firmware/efi/efivars
/dev/sda5 7.8G 3.2G 4.6G 42% /
/dev/sda2 936M 105M 832M 12% /boot
/dev/sda1 100M 7.0M 93M 8% /boot/efi
tmpfs 793M 0 793M 0% /run/user/1000
vmhgfs-fuse 954G 742G 213G 78% /mnt/vagrant-mounts/1000-1000
可以看到 sda 磁盘大小为 5GB,而所有分配的分区加起来也不足 50G。所以磁盘末尾存在未分配空间,尝试将其分配到根分区。
[vagrant@ldev-rs9 ~]$ sudo dnf install cloud-utils-growpart #安装包
[vagrant@ldev-rs9 ~]$ sudo growpart /dev/sda 5
CHANGED: partition=5 start=2265088 old: size=16384000 end=18649087 new: size=102592479 end=104857566
[vagrant@ldev-rs9 ~]$ sudo xfs_growfs /
meta-data=/dev/sda5 isize=512 agcount=4, agsize=512000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0 nrext64=0
data = bsize=4096 blocks=2048000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2048000 to 12824059
[vagrant@ldev-rs9 ~]$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 18M 1.6G 2% /run
efivarfs 64K 5.1K 54K 9% /sys/firmware/efi/efivars
/dev/sda5 49G 3.5G 46G 8% /
/dev/sda2 936M 105M 832M 12% /boot
/dev/sda1 100M 7.0M 93M 8% /boot/efi
tmpfs 793M 0 793M 0% /run/user/1000
后续需要扩容磁盘,则调整 Vagrantfile 里的 disk size,然后重复此操作即可。
SSH 报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
重新创建虚拟机后 SSH 失败,使用ssh-keygen -R [127.0.0.1]:20090
刷新主机 SSH 密钥指纹。
PS D:\opt\Vagrant\instance\ldev-rs9> tssh
🍺 dev-rs9
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ecdsa-sha2-nistp256 key sent by the remote host is
SHA256:hhIADxWLiIpUHGfv08X1ng9nRXtQS6wl0NtUCZCVPTY
Please contact your system administrator.
Add correct host key in C:\Users\dsf\.ssh\known_hosts to get rid of this message.
new conn [127.0.0.1:20090] failed: ssh: handshake failed: knownhosts: key mismatch
PS D:\opt\Vagrant\instance\ldev-rs9> ssh-keygen -R [127.0.0.1]:20090
# Host [127.0.0.1]:20090 found: line 17
# Host [127.0.0.1]:20090 found: line 18
# Host [127.0.0.1]:20090 found: line 19
C:\Users\dsf/.ssh/known_hosts updated.
Original contents retained as C:\Users\dsf/.ssh/known_hosts.old