Chapter 4 - 批量创建虚拟机示例
创建虚拟机集群
编写Vagrantfile配置文件
Vagrant.configure("2") do |config|
config.vm.define "master" do |master|
end
config.vm.define "node-1" do |node_1|
end
config.vm.define "node-2" do |node_2|
end
config.vm.define "docker-register" do |docker-register|
end
end
最终结果
Vagrant.configure("2") do |config|
#####################################################################
# 全局配置
#####################################################################
config.vm.box = "centos/8"
config.vm.network "public_network", bridge: "eth0"
#===================================================================#
# 互信认证
#===================================================================#
# 激活hostmanager插件
config.hostmanager.enabled = true
# 在宿主机上的hosts文件中添加虚拟机的主机名解析信息
config.hostmanager.manage_host = true
# 在各自虚拟机中添加各虚拟机的主机名解析信息
config.hostmanager.manage_guest = true
# 不忽略私有网络的地址
config.hostmanager.ignore_private_ip = false
#===================================================================#
# libvirt相关配置
config.vm.provider "libvirt" do |v|
# 设置虚拟机的内存大小
v.memory = 2048
# 设置虚拟机的CPU个数
v.cpus = 1
end
# 使用shell脚本进行软件安装和配置
config.vm.provision "shell", inline: <<-SHELL
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd
SHELL
#####################################################################
#####################################################################
# 局部配置
#####################################################################
config.vm.define "master" do |master|
# 设置虚拟机的主机名
master.vm.hostname="k8s-master"
# 设置虚拟机的IP 192.168.121.*/24
master.vm.network "private_network", ip: "192.168.121.11"
# 使用shell脚本进行软件安装和配置
master.vm.provision "shell", inline: <<-SHELL
yum -y install docker
SHELL
end
#####################################################################
config.vm.define "node-1" do |node_1|
node_1.vm.hostname="k8s-node-01"
node_1.vm.network "private_network", ip: "192.168.121.12"
end
config.vm.define "node-2" do |node_2|
node_2.vm.hostname="k8s-node-02"
node_2.vm.network "private_network", ip: "192.168.121.13"
end
config.vm.define "docker-register" do |register|
register.vm.hostname="k8s-docker-register"
register.vm.network "private_network", ip: "192.168.121.14"
end
end