Vagrant一鍵安裝任意系統
- 🌲 前言
- 一、?? Vagrant安裝Linux系統 ??
- 1、安裝目錄
- 2、下載 Vagrant box
- 3、Vagrant添加Box
- 4、配置Vagrantfile檔案
- 5、準備安裝介質
- 6、撰寫Vagrantfile中定義的Shell腳本
- 二、?? Vagrant啟動一鍵安裝Oracle ??
- 1、😏 很簡單,一行短短的命令
- 三、?? Vagrant box打包分享 ??
- 1、打包前準備
- 2、打包box
- 3、上傳分享box
- 寫在最后
🌲 前言
寫在最前面,如果是新手不會安裝Oracle資料庫,可以直接下載我打包好的 box 直接安裝,打開即可使用Oracle資料庫!!!
?? Box 下載方式:luciferliu/oracle11g ??
哈哈 😄,我又來偷懶了,之前寫了一版 ?? Oracle一鍵安裝腳本 ??,大大減少了平時用于安裝資料庫花費的時間,但是,安裝Linux系統還是需要耗費時間,而且是重復的點擊動作,太不自動化了,
于是,我就開始在網上沖浪 🏄🏻,發現了ansible,cobbler,vagrant等等可用于腳本自動安裝Linux主機的方法,毅然決然,我選擇了入門最快,最簡單的 Vagrant,
就這樣,我開始折騰了,先是成功使用Vagrant在電腦上安裝了Linux系統,然后融合之前的Oracle一鍵安裝腳本,最終成功 🎉 實作了 Vagrantg 一鍵安裝Oracle資料庫,徹底釋放雙手 🙌🏻!
🪐 Vagrant使用方式可參考:
- Vagrant中文檔案專欄
- 實戰篇:一行命令安裝Linux系統,超詳細的 Vagrant 上手指南
🌏 Oracle一鍵安裝腳本使用可參考:
- Oracle一鍵安裝腳本專欄
- 重度“懶癌”的我寫了4000多行Shell腳本,終于實作了一鍵安裝Oracle RAC!!!
好勒,嗶嗶半天了,正文開始~ ヾ(?°?°?)ノ゙

💻 本文需要用到的軟體:
- 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 就可以使用啦 🎉~
?? 最后,祝大家玩得開心,有問題或者技術交流可以關注我,私聊我~ ??

本次分享到此結束啦~
如果覺得文章對你有幫助,點贊、收藏、關注、評論,一鍵四連支持,你的支持就是我創作最大的動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290264.html
標籤:其他
