基于官方CentOS7.9,打造自己的vagrant box镜像

558 阅读3分钟

概述

本文是讲述如何打包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是虚拟机名称,就是虚拟机左边栏的名称。

上传到app.vagrantup.com