Linux虛擬機系統(tǒng)化部署母盤流程
為什么要系統(tǒng)化部署母盤?
為了后續(xù)使用更加方便(直接克隆母盤即可得一臺新虛擬機),省時間,好管理。
實驗?zāi)副P目標(biāo):
- vim個性化
- 軟件倉庫要配好(本地、網(wǎng)絡(luò)、第三方、源碼)
- 網(wǎng)絡(luò)配置(后續(xù)節(jié)點實驗機IP平凡變動,用腳本配)
- selinux、firewalld要關(guān)閉
1. vim個性化
[root@server ~]# vim /usr/bin/my_script/vimset.sh
#!/bin/bash # 在vim全局配置文件中追加個性化設(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命令掛載本地光盤映像(臨時掛載、開機自啟動掛載、開機執(zhí)行一下mount命令),不建議弄開機自啟動掛載,即寫再/etc/fstab里面寫mount,寫錯了開機還會起不來
2.編寫自動配置倉庫文件腳本(測試好后可以把/etc/yum.repos.d/下所有倉庫配置文件刪了,母盤能省空間就盡量省空間,克隆出去的節(jié)點不會有贅余文件)
開機后掛載光盤映像
[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
配置倉庫腳本
能運行的腳本
#!/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”
?
# 這個函數(shù)用于判斷參數(shù)并返回對應(yīng)標(biāo)識
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í)行對應(yīng)分支
# 傳遞腳本的第一個參數(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
?
# 驗證倉庫配置
dnf repolist收尾
[root@localhost ~]# chmod +x /usr/bin/my_script/swset.sh [root@localhost ~]# rm -rf /etc/yum.repos.d/*
3. 自動配置網(wǎng)絡(luò)
配置思路(rhel9):
- 先使用
grubby --update-kernel ALL --args net.ifnames=0禁用默認命名規(guī)則,實現(xiàn)可預(yù)測命名規(guī)則(作用是啟動時網(wǎng)卡名稱會變成eth0,再添加一個網(wǎng)卡時添加的網(wǎng)卡名稱會是eth1,有規(guī)律的添加網(wǎng)卡名;不使用這個命令它后面添加的網(wǎng)卡名不好推測,寫腳本也不怎么順暢.如:ens160再添加一個網(wǎng)卡后會變成ens不知名數(shù)字) - 編寫自動配置網(wǎng)絡(luò)腳本(測試好后可以把
/etc/NetworkManager/system-connections/下所有網(wǎng)絡(luò)配置文件刪了,母盤能省空間就盡量省空間
禁用默認命名規(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地址和主機名
# 使用方式:腳本 網(wǎng)卡設(shè)備名 IP地址(不加掩碼) 主機名
?
# 檢測網(wǎng)卡設(shè)備有沒有:“ifconfig 網(wǎng)卡名”,報錯就沒有,沒報錯就有(網(wǎng)卡設(shè)備得在虛擬機自定義硬件里面添加)
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)限,和重新加載文件并啟動網(wǎng)卡會議名
chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection
nmcli connection reload
nmcli connection up $1
?
# 修改主機名,做本地解析
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. 基本實驗環(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é)點去玩吧
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
centOS7 NET模式設(shè)置靜態(tài)Ip的方法步驟
這篇文章主要給大家介紹了關(guān)于centOS7 NET模式設(shè)置靜態(tài)Ip的方法步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用centOS7系統(tǒng)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Apache中偽靜態(tài)Rewrite的使用方法和URL重寫規(guī)則表達式講解
apache中的mod_rewrite模塊提供了一個基于正則表達式分析器的重寫引擎來實時重寫URL請求,主要的功能就是實現(xiàn)URL的跳轉(zhuǎn),它的正則表達式是基于Perl語言??苫诜?wù)器級的(httpd.conf)和目錄級的(.htaccess)兩種方式,允許通過它來改變Apache?Web服務(wù)器的配置。2022-11-11
centos下yum搭建安裝linux+apache+mysql+php環(huán)境教程
本篇文章介紹了centos下yum搭建安裝linux+apache+mysql+php環(huán)境,對學(xué)習(xí)centos有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-10-10
window與linux項目部署之linux文件路徑不存在問題
小編在一次項目測試中,發(fā)現(xiàn)一些bug,window與linux項目部署-linux文件路徑不存在問題,本文給出了解決方案,需要的朋友可以參考下2019-11-11

