在制作 CentOS 自动安装媒体之前,对于将 OCP 4.3 全自动安装到便当盒的准备工作进行第二部分的步骤
1. Summary Section
2. Preparatory Section 1 – Creating ESXi Installation Media
3. Preparatory Section 2 – Creating CentOS Automated Installation Media (This Article)
4. NUC Construction Section
5. ESXi Installation Section
6. ESXi Virtual Network Construction Section
7. VCSA Construction Section
8. Bastion Server Construction Section 1 – VM Construction
9. Bastion Server Construction Section 2 – Middleware Construction
10. Bastion Server Construction Section 3 – MatchBox Construction
11. OCP4.3 Installation Section
首先
-
- jumpboxの構築を自動化したかったため、kickstartの仕組みを使ったCentOSの自動Installメディアを作成した
-
- kickstartとは、RHEL、fedoraなどredhat系ディストリビューションの、OS自動インストール機能のこと
- 仮想マシンを構築時に、作成したインストールメディアをマウントすると自動的にCentOSのインストールが実行される
工作环境。
-
- 全ての作業は、作業用に手動で構築したLinux Server(CentOS)上で実施
- (MacだとCentOSのISOファイルを上手く展開できなかったため)
作业步骤
1. 安装必要的模块
# yum -y install mkisofs pykickstart
2. 下载安装DVD。
# cd /tmp
# curl -O http://ftp.tsukuba.wide.ad.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1908.iso
3. 安装DVD并解压
- Install DVDを/mntにマウントして、ファイルを作業ディレクトリ(~/base)にコピー
# mount -t iso9660 -o loop /tmp/CentOS-7-x86_64-DVD-1908.iso /mnt
# mkdir ~/base
# cp -RT /mnt ~/base
4. 使用Python创建root用户的加密密码
# python -c 'import crypt; print(crypt.crypt("This is Password Strings", crypt.METHOD_SHA512))'
创建ks.cfg文件
-
- CentOSを手動インストールすると、インストール時の設定が、/root/anaconda-ks.cfgファイルとして作成される
- この設定ファイルを流用して、自動インストール用の設定ファイルを作成する
# cp /root/anaconda-ks.cfg ~/base/ks.cfg
# vi ~/base/ks.cfg
5.1. 指令部分 (zhi ling bu fen)
- 高速化のためtext mode installに設定
# Use graphical install
text
- keyboard設定
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
- Language設定
# System language
lang ja_JP.UTF-8
- Network設定(固定IP)
# Network information
network --device ens192 --bootproto static --ip 192.168.0.252 --netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 8.8.8.8,8.8.4.4 --noipv6 --onboot=yes --activate
network --hostname=centos77_base
- rootパスワード設定
# Root password
rootpw --iscrypted "ここに、「4. rootユーザーの暗号化パスワード作成 (Pythonを使用)」で作成した暗号化パスワードを記載"
- timezone設定
# System timezone
timezone Asia/Tokyo --isUtc
- この設定をいれないと、パーティション初期化の設定画面のところでとまってしまい自動インストールできない
# Clear the Master Boot Record
zerombr
- SElinux 有効化
# SELinux configuration
selinux --enforcing
5.2. 包裹部分
open-vm-toolsを忘れずにインストールする
#########################################
# Package Section
#########################################
%packages
@^minimal
@core
kexec-tools
vim
open-vm-tools
%end
5.3. 脚本部分
- 公開鍵をサーバに登録し、公開鍵認証でサーバログイン可能なように設定する
#########################################
# Script Section
#########################################
%post --log=/root/ks.post01.log
#!/bin/bash
# Create dummy file for logging start
touch /root/my-ssh-start
# Copy public key
mkdir /root/.ssh
echo "ssh-rsa Here is Public key..." >> /root/.ssh/authorized_keys
chmod 600 ~/.ssh/*
chmod 700 /root/.ssh
chown -R root.root /root/.ssh
# Modify ssh config
cp /etc/ssh/sshd_config /var/tmp/sshd_config_org
cat << EOF >> /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys
EOF
sed -i -e "s/#PermitRootLogin\ yes/PermitRootLogin\ yes/g" /etc/ssh/sshd_config
sed -i -e "s/#PubkeyAuthentication\ yes/PubkeyAuthentication\ yes/g" /etc/ssh/sshd_config
sed -i -e "s/PasswordAuthentication\ no/PasswordAuthentication\ yes/g" /etc/ssh/sshd_config
# Create dummy file for logging end
touch /root/my-ssh-finished
%end
5.4. 开始后的部分
-
- kickstart完了後はRebootする
- Reboot前にDVDを排出する
#########################################
# After kickstart Section
#########################################
# Reboot after the installation is complete.(eject DVD media before rebooting)
reboot --eject
6. 验证 ks.cfg
- 問題ない場合、何も出力されない
# ksvalidator ~/base/ks.cfg
# echo $?
0
7. 添加用于自动安装的设置
vi ~/base/isolinux/isolinux.cfg
- 下記を編集する
# default vesamenu.c32 <- コメントアウト
default centos7auto <- 追記
・
・
・
menu separator # insert an empty line
menu separator # insert an empty line
(ここから追記: 自動起動用の設定。kickstart設定ファイルのパスを指定する)
label centos7auto
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=cdrom: inst.ks=cdrom:
(ここまで)
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
label check
menu label Test this ^media & install CentOS 7
#menu default <- コメントアウト
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
・
・
・
8. 创建ISO文件
# cd ~/base/
# mkisofs -v -r -J -o ../CentOS-7-x86_64-DVD-1908_Auto.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
下一步
-
- ここで作成したISOファイルをESXiのDatasoreに転送
-
- Ansibleで、このISOファイルを使ってVMを作成
- 自動でCent OSのInstallが完了する
参考
-
- GUIをポチポチせずにCentOS7を自動でインストールするISOファイルを作成してみた
-
- kickstartをマスターしたのでメモっておく
-
- CentOS 7のオフライン自動インストール用isoファイルを作る
-
- KickStartその1(KickStartによるLinux自動インストール概要)
- Linux を自動インストールする方法 (Kickstart)