⭐️ 这年头谁还用虚拟机装系统?墨迹!❤️ Vagrant 一键搞定 ❤️

Posted Lucifer三思而后行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⭐️ 这年头谁还用虚拟机装系统?墨迹!❤️ Vagrant 一键搞定 ❤️相关的知识,希望对你有一定的参考价值。

🌲 前言

写在最前面,如果是新手不会安装Oracle数据库,可以直接下载我打包好的 box 直接安装,打开即可使用Oracle数据库!!!

⭐️ Box 下载方式:luciferliu/oracle11g ⭐️

哈哈 😄,我又来偷懒了,之前写了一版 ❤️ Oracle一键安装脚本 ❤️,大大减少了平时用于安装数据库花费的时间。但是,安装Linux系统还是需要耗费时间,而且是重复的点击动作,太不自动化了。

于是,我就开始在网上冲浪 🏄🏻,发现了ansible,cobbler,vagrant等等可用于脚本自动安装Linux主机的方法。毅然决然,我选择了入门最快,最简单的 Vagrant

就这样,我开始折腾了。先是成功使用Vagrant在电脑上安装了Linux系统,然后融合之前的Oracle一键安装脚本,最终成功 🎉 实现了 Vagrantg 一键安装Oracle数据库,彻底释放双手 🙌🏻!

🪐 Vagrant使用方式可参考:

🌏 Oracle一键安装脚本使用可参考:

好勒,哔哔半天了,正文开始~ ヾ(◍°∇°◍)ノ゙

💻 本文需要用到的软件:

  • Vagrant
  • VirtualBox

注意:📢 请提前安装好~

一、⭐️ Vagrant安装Linux系统 ⭐️

第一步,当然是安装Linux系统啊,没有安装Vagrant的朋友,去 下载页面 下载安装一下吧,很简单的。不会玩的,往上翻一点看教程,我就默认大家已经安装完啦👍🏻~

1、安装目录

首先需要创建一个目录,用来放置 Vagrantfile 和安装介质:

mkdir /Volumes/DBA/vagrant/centos79 -p

Windows系统的朋友👬🏻,我就不说怎么创建目录啦~

2、下载 Vagrant box

建议直接去 Vagrant box官方下载页面 搜索下载,本文使用 Centos7.9版本。

当然是选下载量最高,更新比较靠近的哇 🤩~

点击进去,我们选择 virtualbox 版本进行下载:

注意:这里有很多版本支持,如果使用VMware或者Parallels也可以的哈~

3、Vagrant添加Box

下载完之后,我这边为了便于分辨,将文件改名为 centos7.9

使用 vagrant box add 命令添加下载好的box:

vagrant box add /Users/lpc/Downloads/centos7.9 --name centos79
vagrant box list

注意:/Users/lpc/Downloads/centos7.9 为 box 存放位置,–name centos79 是指创建一个逻辑名称。

已成功添加 box,接下来需要配置 Vagrantfile 文件和上传安装介质。

4、配置Vagrantfile文件

这里我就不讲解Vagrantfile如何配置,具体可以看官方文档,配置如下:

cd /Volumes/DBA/vagrant/centos79
cat <<EOF>Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos79"
  config.vm.provision :shell, path: "/Volumes/DBA/vagrant/centos79/scripts/ora_preinstall.sh"
  config.vm.synced_folder "/Volumes/DBA/vagrant/centos79", "/vagrant"
  config.vm.network :forwarded_port, guest: 1521, host: 1521
  config.vm.network :forwarded_port, guest: 22, host: 22
  config.vm.network "public_network", ip: "192.168.1.120"
  config.vm.provider "virtualbox" do |vb|
  vb.name = "orcl1"
  vb.memory = 4196
  vb.cpus = 2
  end
end
EOF


这里简单解释一下配置文件中的几个参数:

  • config.vm.box = “centos79”
    指定上文添加的box逻辑名称,用于安装Linux系统
  • config.vm.provision :shell, path: “/Volumes/DBA/vagrant/centos79/scripts/ora_preinstall.sh”
    配置用于安装完Linux系统后自动执行shell脚本
  • config.vm.synced_folder “/Volumes/DBA/vagrant/centos79”, “/vagrant”
    映射本地目录到Linux主机目录
  • config.vm.network :forwarded_port, guest: 1521, host: 1521
    映射Linux主机1521端口到本机端口1521
  • config.vm.network :forwarded_port, guest: 22, host: 22
    映射Linux主机22端口到本机端口22
  • config.vm.network “public_network”, ip: “192.168.1.120”
    配置主机网络为192.168.1.120,建议与本机做桥接,可用于上网
  • config.vm.provider “virtualbox” do |vb|
    配置虚拟机程序为virtualbox,如果是paralles则修改为parallels即可
  • vb.name = “orcl”
    配置主机名
  • vb.memory = 4196
    配置主机内存
  • vb.cpus = 2
    配置主机CPU

5、准备安装介质

在开始创建的目录下,创建 soft 文件夹,并上传需要的安装介质:

这里说一下以下文件的作用:

  • CentOS-7.9-x86_64-Everything-2009.iso
    Centos iso镜像文件,用于安装本地YUM源,如果能联网可以不需要
  • OracleShellInstall.sh
    Oracle一键安装脚本,可在Github下载,持续更新🔥,欢迎👏🏻 Star
  • p13390677_112040_Linux-x86-64_1of7.zip
  • p13390677_112040_Linux-x86-64_2of7.zip
    Oracle 11GR2 Database 安装包
  • p31537677_112040_Linux-x86-64.zip
    Oracle 11GR2 Database PSU补丁包
  • p6880880_112000_Linux-x86-64.zip
    Oracle OPatch补丁包
  • rlwrap-0.42.tar.gz
    上下文切换软件,可选安装,非必须

这里安装介质就准备好啦,放在这里就行了 😄 ~

6、编写Vagrantfile中定义的Shell脚本

为了实现Linux安装成功后继续自动安装Oracle数据库,因此需要提前准备shell脚本用于Linux系统安装后调用执行。

mkdir -p /Volumes/DBA/vagrant/centos79/scripts
cd /Volumes/DBA/vagrant/centos79/scripts
cat <<EOF>ora_preinstall.sh
#change root password
echo oracle | passwd --stdin root
#change sshd_config
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd.service
#mkdir software dir
mkdir /soft
#cp software to softdir
cp /vagrant/soft/* /soft
#mount iso to mnt dir
mount -o loop /soft/*iso /mnt
#chmod shell script
chmod +x /soft/OracleShellInstall.sh
#install oracle database
cd /soft
./OracleShellInstall.sh -i 192.168.1.120 -opa 31537677 -installmode single -dbv 11g
EOF

这里稍微解释一下哈,脚本中的步骤:

  • a.修改root用户密码
  • b.配置ssh服务允许输入密码连接
  • c.Linux主机中创建soft目录用于存放安装介质
  • d.复制映射目录/vagrant/soft下的安装介质到/soft目录下
  • e.挂载centos7.9的iso镜像文件
  • f.授权Oracle一键安装脚本可执行权限
  • g.进入/soft目录,根据提前配置好的一键安装参数,执行安装Oracle数据库


至此,所有的前置配置都已完成,下面就是见证奇迹的时刻啦 ᕕ( ᐛ )ᕗ ~

二、❤️ Vagrant启动一键安装Oracle ❤️

1、😏 很简单,一行短短的命令

vagrant up

为了直观一点,来个动图看一下吧:

开始拷贝文件有些慢,不是Gif结束了,等一会儿就继续了;

由于Gif大小限制,只展示到安装PSU补丁就停止,后续没有什么好看的了,就是 顺利建库成功 啦!

这里就已经安装成功了。现在我们连进去查看数据库试试:

可以看到数据库创建成功 🎉,PSU补丁也已经安装成功 ✌🏻:

就这,你以为本文就结束了❓ 当然不是,还有干货分享 🔥 !!!

三、❄️ Vagrant box打包分享 ❄️

Vagrant支持将box打包并且上传到官方站点进行分享,也可以用于备份,方便以后直接打开使用。

接下来,就看看如何打包Vagrant box吧 😄!

1、打包前准备

删除多余的安装介质以减少box大小,取消/mnt镜像挂载

rm -rf /soft
umount /mnt

关闭Oracle数据库和监听

lsnrctl stop
sas
shudown immediate

关闭Linux主机

vagrant halt
vagrant status

2、打包box

通过vagrant package命令打包box:

sudo vagrant package


注意:如果直接打包box,打包完后的box高达 18G,明显太大了。

使用脚本清理,缩小box大下:

##创建脚本文件
vi /mnt/purge.sh
chmod +x /mnt/purge.sh
##将以下内容写入脚本文件
#!/bin/sh
# Zero free space to aid VM compression
printf "STEP: Zero free space to aid VM compression\\n"
dd if=/dev/zero of=/EMPTY bs=1M
rm -f /EMPTY

# Remove Linux headers
printf "STEP: Remove Linux headers\\n"
rm -rf /usr/src/linux-headers*
 
# Remove Unused locales (edit for your needs, this keeps only en* and pt_BR)
printf "STEP: Remove Unused locales (edit for your needs, this keeps only en* and pt_BR)
find\\n" 
find /usr/share/locale/{af,am,ar,as,ast,az,bal,be,bg,bn,bn_IN,br,bs,byn,ca,cr,cs,csb,cy,da,de,de_AT,dz,el,en_AU,en_CA,eo,es,et,et_EE,eu,fa,fi,fo,fr,fur,ga,gez,gl,gu,haw,he,hi,hr,hu,hy,id,is,it,ja,ka,kk,km,kn,ko,kok,ku,ky,lg,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,nb,ne,nl,nn,no,nso,oc,or,pa,pl,ps,qu,ro,ru,rw,si,sk,sl,so,sq,sr,sr*latin,sv,sw,ta,te,th,ti,tig,tk,tl,tr,tt,ur,urd,ve,vi,wa,wal,wo,xh,zh,zh_HK,zh_CN,zh_TW,zu} -type d -delete
 
# Remove bash history
printf "STEP: Remove bash history\\n"
unset HISTFILE
rm -f /root/.bash_history

# Cleanup log files
printf "STEP: Cleanup log files\\n"
find /var/log -type f | while read f; do echo -ne '' > $f; done;
 
# Whiteout root
printf "STEP: Whiteout root\\n"
count=`df --sync -kP / | tail -n1  | awk -F ' ' '{print $4}'`;
count=$((count -= 1))
dd if=/dev/zero of=/tmp/whitespace bs=1024 count=$count;
rm /tmp/whitespace;
 
# Whiteout /boot
printf "STEP: Whiteout /boot\\n"
count=`df --sync -kP /boot | tail -n1 | awk -F ' ' '{print $4}'`;
count=$((count -= 1))
dd if=/dev/zero of=/boot/whitespace bs=1024 count=$count;
rm /boot/whitespace;
 
# Whiteout swap 
printf "STEP: Whiteout swap\\n"
swappart=`cat /proc/swaps | tail -n1 | awk -F ' ' '{print $1}'`
swapoff $swappart;
dd if=/dev/zero of=$swappart;
mkswap $swappart;
swapon $swappart;

清理完成后,重新打包 box。查看大小:

sudo vagrant package --output=centos79-oracle11g


刺不刺激,从 18G 变成 3.9G 了,爽呀,美滋滋 😄~

为了确保可以使用,我们重新添加测试一下:

mkdir -p /Volumes/DBA/vagrant/oracle11g
vagrant box add /Volumes/DBA/vagrant/centos79/centos79-oracle11g --name oracle11g
cd /Volumes/DBA/vagrant/oracle11g
vagrant init oracle11g
vagrant up --provider=virtualbox
vagrant ssh
su - oracle




经过测试,数据库可以使用,没毛病!!!

3、上传分享box

需要注册Vagrant账号,我这里已经注册好勒,开始上传!具体上传流程很简单,就不演示了哈 O(∩_∩)O~~

害,上传也太慢了,先去玩一会儿,等传完我再来 👋🏻 ~

。。。。。。好长时间过去了。。。。。。。

终于上传成功了!!!大家可以去下载使用了~☀️

下载方式:luciferliu/oracle11g

之后应该会出更多版本的数据库 box,包括rac数据库,dataguard,dns服务器,openfiler服务器以及mysql等等。

⭐️ 慢慢玩,不着急~ ⭐️

写在最后

虽然这种方式不适用于生产环境的安装使用 😒,但是,对于个人测试练习使用,可以说是极其方便了 😄。如果不会使用的朋友,可以直接下载我分享的box,直接 vagrant up 就可以使用啦 🎉~

❤️ 最后,祝大家玩得开心,有问题或者技术交流可以关注我,私聊我~ ❤️


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

以上是关于⭐️ 这年头谁还用虚拟机装系统?墨迹!❤️ Vagrant 一键搞定 ❤️的主要内容,如果未能解决你的问题,请参考以下文章

❤️手把手教你学会安装虚拟机与linux系统和完美配置❤️

人家网站都免费了,你还用Python去爬?

❤️ Vagrant 安装苹果  macOS  系统,就是玩儿 ❤️

❤️ Vagrant 安装苹果  macOS  系统,就是玩儿 ❤️

☀️苏州程序大白解析Linux 中的虚拟网络接口☀️《❤️记得收藏❤️》

如何管理你下载的一大堆Python包❤️win环境及linux环境下创建虚拟环境详解❤️