制作自定義的ISO鏡像(Centos 7.6)

本文以制作自定義的centos7的ISO鏡像為例,自定義ISO無(wú)非就是提前安裝好yum包,提前安裝好pip包,提前安裝好自己的應(yīng)用這三種情況,對(duì)于提前安裝yum包,如下的鏈接講的非常清楚,這里就不再詳述,本文主要介紹一下如何在自定義ISO鏡像中提前安裝pip包以及應(yīng)用。
http://m.itdecent.cn/p/2d81f88efa62

友情提示:把上邊的鏈接看仔細(xì)了再看下邊的內(nèi)容,請(qǐng)知。

一.安裝pip包

1.下載pip
yum -y install epel-release python-devel python-pip 
2.安裝pip包下載工具
pip install pip2pi  
3.下載pip包及其依賴
pip2tgz /ISO/postinstall/packages -r requirement.txt 

其中requirement.txt是我們要安裝的pip包,內(nèi)容如下:

[root@localhost postinstall]# cat requirement.txt 
ansible==2.3.2.0
python-openstackclient
decorate
allure-pytest
pytest-html
python-ceilometerclient
python-heatclient
uwsgi==2.0.18

我們需要在/ISO目錄下新建一個(gè)目錄postinstall,用來(lái)存預(yù)安裝的pip包以及一些安裝腳本。
其中 /ISO/postinstall/packages是存放pip包以及其依賴包的目錄(注意這里要與存放yum包的目錄/ISO/Packages區(qū)分開),內(nèi)容如下(由于內(nèi)容較長(zhǎng),我只截取了一部分):

[root@localhost postinstall]# pwd
/ISO/postinstall
[root@localhost postinstall]# ll packages/
total 53076
-rw-r--r--. 1 root root   10080 May 22 23:16 allure_pytest-2.6.3-py2.py3-none-any.whl
-rw-r--r--. 1 root root   10280 Jun 27 06:31 allure_pytest-2.7.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   13423 May 22 23:16 allure_python_commons-2.6.3-py2.py3-none-any.whl
-rw-r--r--. 1 root root   13505 Jun 27 06:31 allure_python_commons-2.7.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root 4319664 Jun 27 06:31 ansible-2.3.2.0.tar.gz
-rw-r--r--. 1 root root   12154 Jun 27 06:31 appdirs-1.4.3-py2.py3-none-any.whl
-rw-r--r--. 1 root root  101571 Jun 27 06:31 asn1crypto-0.24.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root    5885 Jun 27 06:31 atomicwrites-1.3.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root   35784 Jun 27 06:31 attrs-19.1.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root 8098645 May 22 23:16 Babel-2.6.0-py2.py3-none-any.whl
-rw-r--r--. 1 root root 8421834 Jun 27 06:31 Babel-2.7.0-py2.py3-none-any.whl

4.修改ks.cfg

編輯/ISO/isolinux/ks.cfg文件,在文件末尾添加配置預(yù)安裝pip包的腳本。內(nèi)容如下:

%post --nochroot 
#!/bin/sh 
set -x -v
exec 1>/mnt/sysimage/root/kickstart-stage1.log 2>&1
 
echo "==> copying files from media to install drive..."
cp -r /run/install/repo/postinstall /mnt/sysimage/root 
%end

%post
#!/bin/sh

set -x -v
exec 1>/root/kickstart-stage2.log 2>&1
 
ls -l /root/postinstall
cd /root/postinstall
chmod 777 install_pac.sh
sh install_pac.sh
%end

其中第一個(gè)%post%end的意思是講/ISO/postinstall目錄下的所有內(nèi)容拷貝到操作系統(tǒng)安裝好之后的/root/postinstall目錄下。
其中第二個(gè)%post%end的意思是在系統(tǒng)啟動(dòng)之前要執(zhí)行預(yù)安裝pip包的腳本。install_pac.sh(也要像/ISO/postinstall/packages目錄一樣,提前放在postinstall目錄下)的內(nèi)容如下:

#!/bin/sh   
pip install -r /root/postinstall/requirement.txt --no-index --find-links=file:///root/postinstall/packages
pip install --ignore-installed -r /root/postinstall/requirement.txt --no-index --find-links=file:///root/postinstall/packages

二.安裝自定義應(yīng)用

如果安裝自定義pip包理解的話。這一步就更簡(jiǎn)單了。只需要將你要安裝的應(yīng)用放到/ISO/postinstall/目錄下,如果需要自定義一些安裝腳本的話,也放到這個(gè)目錄下。接著只需要修改ks.cfg文件中第二個(gè)%post%end中對(duì)應(yīng)的腳本即可。ks.cfg文件的配置相當(dāng)于把你的/ISO/postinstall/目錄下的所有內(nèi)容放到操作系統(tǒng)的/root/postinstall/目錄下執(zhí)行,寫應(yīng)用執(zhí)行腳本的時(shí)候注意路徑是/root/postinstall/即可。

友情提示:這其中涉及到的打包鏡像,修改配置文件等整個(gè)制作流程參考文章最初的鏈接。另外關(guān)于如何設(shè)置預(yù)安裝postinstall腳本請(qǐng)參考下文的鏈接,寫的超詳細(xì)(有4部分,大家有興趣的話可以好好研究一下)。
http://www.smorgasbork.com/2014/07/16/building-a-custom-centos-7-kickstart-disc-part-1/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容