概述
本文是讲述如何打包CentOS7.9的vagrant镜像,基于CentOS官方的CentOS-7-x86_64-Minimal-2009.iso
,版本7.9.2009 (Core)
如何在VirtualBox 下安装 CentOS,请参考这篇文章 www.jianshu.com/p/d6091de28…
我在Ubuntu 20.04.2LTS测试过。下次再研究怎么把box压缩小。
准备
- 安装 virtualbox
- 安装vagrant
本文以virtualbox 6.1.16 和 vagrant 2.2.10 为示例环境。
备注:
请注意,本文提到的命令,未在执行命令前加sudo
或其他说明,均为 root
用户下操作。
VirtualBox安装centos7并设置
安装centos以及虚拟机设置
在virtualbox安装我们在centos官网下载的centos的iso,一步步安装在virtualbox安装centos,root用户账号设置为vagrant
,新增用户vagrant
,密码vagrant
。安装好后,virtualbox 设置里取消远程桌面、关闭声音、关闭USB设置。
更改网络配置,设置网络开机启动,点击network & hostname(网络和主机名)
设置开机启动网络。
设置sudoers
用root 账号登录系统
追加信息到/etc/sudoers
,添加vagrant
用户到/etc/sudoers
,让vagrant
免密码登陆。实际生产环境的用户设置比下面示例严格,下面示例仅供开发环境使用。
echo 'vagrant ALL=(ALL) NOPASSWD:ALL'>>/etc/sudoers
说明:
vagrant
,目标用户,表示用户- 第一个
ALL
,目标主机,表示从任何的主机上都可以执行。 - 第二个
ALL
,目标身份,本例中该值设为ALL
,这意味着用户vagrant
能够以任何用户的身份来运行后面列出的命令。 NOPASSWD:ALL
,让vagrant
用户不必输入密码就能执行所有命令。
更改网络配置,设置网络开机启动
如果在安装centos
的时候已设置网络,此步骤操作省略。
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
将ifcg-enp0s3的ONBOOT=no
,改为ONBOOT=yes
关闭防火墙
我们打包的box是用来做开发环境的,所以没必要启用firewalld防火墙。
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭SElinux
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
安装其他服务
我觉得开发环境box,没必要安装多余软件。一些服务在操作某些步骤的时候,已经指导一起安装。
yum install -y net-tools*
netstat
就使用到net-tools工具
添加vagrant的public key
su vagrant
mkdir -m 0700 -p /home/vagrant/.ssh
curl -o ~/vagrant.pub http://storage.qingwork.fun/file/vagrant.pub # 如果这个链接访问不了,请使用官方链接https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
cat ~/vagrant.pub >> /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
安装ssh-server
yum install -y openssh-server
systemctl enable sshd.service
systemctl start sshd.service
systemctl status sshd.service ## 检查是否启动成功
配置ssh
更改yum源
更换为阿里云的镜像。developer.aliyun.com/mirror/cent…
mv /etc/yum.repo.d/CentOS-Base.repo /etc/yum.repo.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
安装对应的kernel-devel
查询
rpm -qa kernel*
安装
yum install -y kernel-devel-$(uname -r)
安装VirtualBox guest addition
yum clean all
yum install -y gcc make bzip2
curl -o /tmp/VBoxGuestAdditions_6.1.16.iso http://download.virtualbox.org/virtualbox/6.1.16/VBoxGuestAdditions_6.1.16.iso
mkdir /media/VBoxGuestAdditions
mount -o loop,ro /tmp/VBoxGuestAdditions_6.1.16.iso /media/VBoxGuestAdditions
yum install -y elfutils-libelf-devel
sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
# 安装成功后卸载挂载的镜像
umount /media/VBoxGuestAdditions
rmdir /media/VBoxGuestAdditions
rm /tmp/VBoxGuestAdditions_6.1.16.iso
安装ntpd服务同步时间
yum install -y ntp
systemctl enable ntpd.service
systemctl stop ntpd.service
ntpdate cn.ntp.org.cn
systemctl start ntpd.service
ntpq -p
清理操作
清理一些操作,保持系统干净。记得vagrant 和root 用户下的痕迹要删除。
yum clean all
rm -rf /tmp/*
rm -f /var/log/wtmp /var/log/btmp
history -c
su vagrant
history -c
关机
shutdown -h now
打包
vagrant package --output centos7-base.box --base centos7
centos7-base.box
为输出的box文件名,centos7
是虚拟机名称,就是虚拟机左边栏的名称。