Linux虛擬機(jī)系統(tǒng)化部署母盤流程
為什么要系統(tǒng)化部署母盤?
為了后續(xù)使用更加方便(直接克隆母盤即可得一臺(tái)新虛擬機(jī)),省時(shí)間,好管理。
實(shí)驗(yàn)?zāi)副P目標(biāo):
- vim個(gè)性化
- 軟件倉庫要配好(本地、網(wǎng)絡(luò)、第三方、源碼)
- 網(wǎng)絡(luò)配置(后續(xù)節(jié)點(diǎn)實(shí)驗(yàn)機(jī)IP平凡變動(dòng),用腳本配)
- selinux、firewalld要關(guān)閉
1. vim個(gè)性化
[root@server ~]# vim /usr/bin/my_script/vimset.sh
#!/bin/bash # 在vim全局配置文件中追加個(gè)性化設(shè)置 cat >> /etc/vimrc <<EOF set tabstop=4 set softtabstop=4 set shiftwidth=4 set backspace=2 set nu set hlsearch set selection=exclusive set selectmode=mouse,key EOF
[root@server ~]# chmod +x /usr/bin/my_script/vimset.sh
2. 軟件倉庫配置
配置思路:
1.使用mount命令掛載本地光盤映像(臨時(shí)掛載、開機(jī)自啟動(dòng)掛載、開機(jī)執(zhí)行一下mount命令),不建議弄開機(jī)自啟動(dòng)掛載,即寫再/etc/fstab里面寫mount,寫錯(cuò)了開機(jī)還會(huì)起不來
2.編寫自動(dòng)配置倉庫文件腳本(測(cè)試好后可以把/etc/yum.repos.d/下所有倉庫配置文件刪了,母盤能省空間就盡量省空間,克隆出去的節(jié)點(diǎn)不會(huì)有贅余文件)
開機(jī)后掛載光盤映像
[root@localhost ~]# vim /etc/rc.d/rc.local mount /dev/cdrom /media [root@localhost ~]# chmod +x /etc/rc.d/rc.local [root@localhost ~]# vim /usr/bin/my_script/swset.sh
配置倉庫腳本
能運(yùn)行的腳本
#!/bin/bash
# 本腳本只做了本地光盤映像和阿里云的軟件倉庫
# 使用方式:腳本 Local/Aliyun
[ $1 -ne "Local" ]
grep $1 -r /etc/yum.repos.d/ | awk -F : '{system("rm -rf " $1)}'
cat > /etc/yum.repos.d/$1.repo <<EOF
[$1AppStream]
name=$1.appstream
baseurl=file:///media/AppStream
gpgcheck=0
enable=1
?
[$1BaseOS]
name=$1.baseos
baseurl=file:///media/BaseOS
gpgcheck=0
enable=1
EOF
:
grep $1 -r /etc/yum.repos.d/ | awk -F : '{system("rm -rf " $1)}'
cat > /etc/yum.repos.d/$1.repo <<EOF
[$1AppStream]
name=$1.appstream
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
gpgcheck=0
enable=1
?
[$1BaseOS]
name=$1.baseos
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck=0
enable=1
EOF
?
dnf repolist修改后比較直觀的腳本
#!/bin/bash
# 本腳本用于配置本地光盤和阿里云的軟件倉庫,要想再配其他的軟件倉庫在更改腳本
# 使用方式:“腳本名 Local” 或 “腳本名 Aliyun”
?
# 這個(gè)函數(shù)用于判斷參數(shù)并返回對(duì)應(yīng)標(biāo)識(shí)
judge_sw() {
local judgment="$1"
if [ "$judgment" = "Local" ]; then
return 0
elif [ "$judgment" = "Aliyun" ]; then
return 1
else
# 其他無效參數(shù)返回2(后續(xù)要增加倉庫再改)
return 2
fi
}
?
# 此函數(shù)用于生成倉庫文件
software_warehouse() {
local repo_name="$1"
local appstream_url="$2"
local baseos_url="$3"
?
# 安全刪除舊的同名倉庫文件(避免誤刪其他文件)
if [ -f "/etc/yum.repos.d/${repo_name}.repo" ]; then
rm -f "/etc/yum.repos.d/${repo_name}.repo"
fi
?
# 生成新的倉庫文件
cat > "/etc/yum.repos.d/${repo_name}.repo" <<EOF
[${repo_name}AppStream]
name=${repo_name}.appstream
baseurl=${appstream_url}
gpgcheck=0
enabled=1
?
[${repo_name}BaseOS]
name=${repo_name}.baseos
baseurl=${baseos_url}
gpgcheck=0
enabled=1
EOF
}
?
# 主邏輯:調(diào)用判斷函數(shù),根據(jù)返回值執(zhí)行對(duì)應(yīng)分支
# 傳遞腳本的第一個(gè)參數(shù)給判斷函數(shù)
judge_sw "$1"
# 根據(jù)$?來取出judge_sw函數(shù)的返回值
case $? in
0)
# Local分支
software_warehouse "Local" \
"file:///media/AppStream" \
"file:///media/BaseOS"
;;
1)
# Aliyun分支
software_warehouse "Aliyun" \
"https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/" \
"https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/"
;;
*)
echo "This Software warehouse is not set"
exit 1
;;
esac
?
# 驗(yàn)證倉庫配置
dnf repolist收尾
[root@localhost ~]# chmod +x /usr/bin/my_script/swset.sh [root@localhost ~]# rm -rf /etc/yum.repos.d/*
3. 自動(dòng)配置網(wǎng)絡(luò)
配置思路(rhel9):
- 先使用
grubby --update-kernel ALL --args net.ifnames=0禁用默認(rèn)命名規(guī)則,實(shí)現(xiàn)可預(yù)測(cè)命名規(guī)則(作用是啟動(dòng)時(shí)網(wǎng)卡名稱會(huì)變成eth0,再添加一個(gè)網(wǎng)卡時(shí)添加的網(wǎng)卡名稱會(huì)是eth1,有規(guī)律的添加網(wǎng)卡名;不使用這個(gè)命令它后面添加的網(wǎng)卡名不好推測(cè),寫腳本也不怎么順暢.如:ens160再添加一個(gè)網(wǎng)卡后會(huì)變成ens不知名數(shù)字) - 編寫自動(dòng)配置網(wǎng)絡(luò)腳本(測(cè)試好后可以把
/etc/NetworkManager/system-connections/下所有網(wǎng)絡(luò)配置文件刪了,母盤能省空間就盡量省空間
禁用默認(rèn)命名規(guī)則
[root@localhost ~]# grubby --update-kernel ALL --args net.ifnames=0 [root@localhost ~]# vim /usr/bin/my_script/nmset.sh
配置網(wǎng)絡(luò)腳本
#!/bin/bash
# 本腳本用于修改以存在的網(wǎng)卡設(shè)備中的IP地址和主機(jī)名
# 使用方式:腳本 網(wǎng)卡設(shè)備名 IP地址(不加掩碼) 主機(jī)名
?
# 檢測(cè)網(wǎng)卡設(shè)備有沒有:“ifconfig 網(wǎng)卡名”,報(bào)錯(cuò)就沒有,沒報(bào)錯(cuò)就有(網(wǎng)卡設(shè)備得在虛擬機(jī)自定義硬件里面添加)
ifconfig $1 &> /dev/null || {
echo "net device $1 is not exited"
exit
}
# 檢查IP是否存在
ping -c1 -w1 $2 &> /dev/null && {
echo "$2 is exited,please use new IP"
exit
}
# 確定網(wǎng)卡在設(shè)備中是否用配置文件,有就刪了重新寫入新IP信息和設(shè)備名稱,沒有就直接寫
grep $1 -r /etc/NetworkManager/system-connections/ | awk -F : '{system("rm -rf " $1)}'
cat > /etc/NetworkManager/system-connections/$1.nmconnection <<EOF
[connection]
id=$1
type=ethernet
interface-name=$1
?
[ipv4]
method=manual
address1=$2/24,192.168.126.2
dns=8.8.8.8
EOF
?
# 修改權(quán)限,和重新加載文件并啟動(dòng)網(wǎng)卡會(huì)議名
chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection
nmcli connection reload
nmcli connection up $1
?
# 修改主機(jī)名,做本地解析
hostnamectl hostname $3
grep -e "$2\t$3" /etc/hosts || {
echo -e "$2\t$3" >> /etc/hosts
}后續(xù)
[root@localhost ~]# chmod +x /usr/bin/my_script/nmset.sh [root@localhost ~]# rm -rf /etc/NetworkManager/system-connections/*
4. 基本實(shí)驗(yàn)環(huán)境
關(guān)防火墻、selinux內(nèi)核
[root@localhost ~]# grubby --update-kernel ALL --args selinux=0 [root@localhost ~]# systemctl disable --now firewalld.service
到此系統(tǒng)化部署母盤結(jié)束啦,盡情克隆節(jié)點(diǎn)去玩吧
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
centOS7 NET模式設(shè)置靜態(tài)Ip的方法步驟
這篇文章主要給大家介紹了關(guān)于centOS7 NET模式設(shè)置靜態(tài)Ip的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用centOS7系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Apache中偽靜態(tài)Rewrite的使用方法和URL重寫規(guī)則表達(dá)式講解
apache中的mod_rewrite模塊提供了一個(gè)基于正則表達(dá)式分析器的重寫引擎來實(shí)時(shí)重寫URL請(qǐng)求,主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言??苫诜?wù)器級(jí)的(httpd.conf)和目錄級(jí)的(.htaccess)兩種方式,允許通過它來改變Apache?Web服務(wù)器的配置。2022-11-11
Linux遠(yuǎn)程登錄實(shí)現(xiàn)教程解析
這篇文章主要介紹了Linux遠(yuǎn)程登錄實(shí)現(xiàn)教程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
centos下yum搭建安裝linux+apache+mysql+php環(huán)境教程
本篇文章介紹了centos下yum搭建安裝linux+apache+mysql+php環(huán)境,對(duì)學(xué)習(xí)centos有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
window與linux項(xiàng)目部署之linux文件路徑不存在問題
小編在一次項(xiàng)目測(cè)試中,發(fā)現(xiàn)一些bug,window與linux項(xiàng)目部署-linux文件路徑不存在問題,本文給出了解決方案,需要的朋友可以參考下2019-11-11

