vagrant 自己制作 box
# 前言
自己打包镜像感觉还是很常用的,毕竟每个人的需求不一样。
vagrant 自己打包镜像的流程就是,在自己机器上执行 vagrant package --base 虚拟机的名称
注意虚拟机的名称指的是 virtualbox 里面的名称,可以通过下面的命令查看。
VBoxManage.exe list vms
1
# 制作的 centos7 的 box
# 基础包
# 自己下载
去 centos官网 (opens new window) 下载一个 centos7 的最小安装的包,文件名带 Mimimal 的,比如 CentOS-7-x86_64-Minimal-2009.iso
。然后用 virtualbox 装上就行。
然后连上 ssh
# 用vagrant的基础包
vagrant init centos/7
vagrant up
vagrant ssh
1
2
3
2
3
# 设置 root 密码
比较喜欢用 root 用户登录,所以还是设置上 root 登录
sudo passwd root
su - root
1
2
3
2
3
# 配置 ssh
vi /etc/ssh/sshd_config
# 删除 vagrant 自己定义的私钥路径
HostKey /etc/ssh/ssh_host_xxxx
# 开启密码登录
PasswordAuthentication yes
# 重启 ssh
systemctl restart sshd
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 安装VirtualBox Guest Additions
必须安装VirtualBox Guest Additions (opens new window)才能使共享文件夹等内容正常运行。安装还可以提高性能,因为操作系统可以通过知道它在 VirtualBox 中运行来进行一些优化。
# 安装内核,然后重启虚拟机
dnf update -y
dnf install kernel-devel make gcc -y
reboot
# 安装
wget http://download.virtualbox.org/virtualbox/6.1.34/VBoxGuestAdditions_6.1.34.iso
mkdir /media/VBoxGuestAdditions
mount -o loop,ro VBoxGuestAdditions_6.1.34.iso /media/VBoxGuestAdditions
sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
rm VBoxGuestAdditions_6.1.34.iso
umount /media/VBoxGuestAdditions
rmdir /media/VBoxGuestAdditions
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 安装常用软件
#!/usr/bin/env bash
ip_address=$1
install_basic_app() {
echo -e "┌\e[33m开始安装软件\e[0m"
yum update -y
install_app ifconfig net-tools
install_app vim
install_app zsh
install_app git
install_app wget
echo -e "└\e[32m安装软件完成\e[0m"
}
# 安装软件
# @arg1: 用于 check 指令是否存在
# @arg2: 需要安装得软件包
install_app() {
cmd=$1
package=${2:-"$cmd"}
if ! command -v "$cmd" >/dev/null 2>&1; then
yum install -y "$package"
fi
}
install_basic_app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 开始打包
# 查看虚拟机列表
VBoxManage.exe list vms
# 选择我刚才操作的那台 centos7-node-2
vagrant package --base centos7-node-2 --output my-package.box
1
2
3
4
5
2
3
4
5
# 使用 box
# 添加到 box
# 查看
vagrant box list
# 添加 box
vagrant box add my-package.box --name my-centos7
1
2
3
4
5
2
3
4
5
# 使用 box 创建
vagrant init my-centos7
1
# 修改配置
注意修改自己的 ssh 账号密码
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "base-centos7"
config.vm.box_check_update = false
(1..3).each do |i|
config.vm.define "node-#{i}" do |node|
node.vm.provider "virtualbox" do |vb|
vb.name = "node-#{i}"
vb.memory = "1024"
vb.cpus = 2
end
node.ssh.username="root"
node.ssh.password="9999"
node.hostmanager.enabled = true
node.hostmanager.manage_host = true
node.hostmanager.manage_guest = true
node.hostmanager.ignore_private_ip = false
node.hostmanager.include_offline = true
node.hostmanager.ip_resolver = proc do |vm, resolving_vm|
"192.168.31.#{30+i}"
end
# 定义网络配置
node.vm.hostname = "node-#{i}"
node.vm.network "public_network",
ip: "192.168.31.#{30+i}",
bridge: [
"Intel(R) I211 Gigabit Network Connection",
"Intel(R) Wi-Fi 6 AX200 160MHz"
],
adapter: 2
end
end
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 启动
vagrant up
vagrant ssh
1
2
2
这样就自己定制了一个包了。
# 参考文档
在 GitHub 编辑此页 (opens new window)
上次更新: 2024/02/25, 12:11:11