資料はこちら サンキュー #インフラ勉強会
# ISO 形式を作成できるように mkisofs を導入しておく
yum -y install mkisofs pykickstart
# インストールDVDのISOイメージをダウンロードします
curl -O http://ftp.tsukuba.wide.ad.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso
ls *.iso -l
# インストールDVDの内容を ~/base の下に展開します
mount -t iso9660 -o loop CentOS-7-x86_64-Minimal-1804.iso /mnt
mkdir ~/base
cp -RT /mnt ~/base
ls ~/base
# 手もとのcent7の ~/ にある anaconda-ks.cfg をコピる
cp ~/anaconda-ks.cfg ~/base/ks.cfg
こっからが各自のレシピ
参考: https://github.com/joyent/mi-centos-7/blob/master/ks.cfg
http://nopipi.hatenablog.com/entry/2016/07/23/170635
既存anacondaを変更するもの
vim ~/base/ks.cfg
これを
# Use graphical install
graphical
こうすると早いらしい
# Use text mode install
text
# Do not configure the X Window System
skipx
### /homeのパーティション作成をやめさせる
# これを変える。
autopart --type=lvm
↓
autopart --type=lvm --nohome
ks.cfgに追記するもの
### 一番下の行にまずこれを足す
# これ絶対やっといたほうがいい。マジめんどい。
reboot --eject # リブート前にDVDを排出する
### SELinuxをPermissiveにする
# echo "I'm sorry Ishikawa san."
selinux --permissive
services --disabled=firewalld
# Installation logging level
logging --level=debug
### network
## dhcpの場合はこれ
# Setup network interfaces via DHCP
network --device=eth0 --bootproto=dhcp --onboot=yes --activate
## 全然うまくいかないfixed ipはこれ
# Network information
network --bootproto=static --device=ens192 --gateway=192.168.1.1 --ip=192.168.1.100 --netmask=255.255.255.0 --nameserver=8.8.8.8 --noipv6 --onboot=yes --activate
ここから自分流。とりあえずテストでやったもの
##########################################################################################
#################### MY postscript -> ####################################################
##########################################################################################
%post --log=/root/ks.post01.log
# !/bin/bash
set -x
### 初心者はdebug用にどこまで進んだかわかるようにtouchとかしとくと幸せ
touch /root/my-yum-start-yum
# パッケージを最新にする
yum update -y
# 好きなものいれていく
yum install -y epel-release
yum install -y sl vim git
touch /root/my-yum-finish-yum
# docker
touch /root/my-install-docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
touch my-installed-docker
############################# ssh -> ###########################################################
touch /root/my-ssh-start
# 公開鍵をコピーしてパーミッション変更
mkdir /root/.ssh
echo "ssh-rsa AAAAB3NzaC1..." >> /root/.ssh/authorized_keys
# 秘密鍵
cat <<ID_RSA > ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
ID_RSA
chmod 700 /root/.ssh
chmod 600 /root/.ssh/*
chown -R root.root /root/.ssh
cp /etc/ssh/sshd_config /var/tmp/sshd_config_org
cat << EOF >> /etc/ssh/sshd_config # sshの設定を追記(EOFの手前まで)・修正(sedで)
AddressFamily inet
UseDNS no
# PermitRootLogin no # 本番サーバではコメント外しましょう
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
EOF
sed -i -e "s/PasswordAuthentication\ yes/PasswordAuthentication\ no/g" /etc/ssh/sshd_config
touch /root/my-ssh-finished
############################# ssh <- ###########################################################
# ipのセットアップ
touch /root/my-setip-start
# if名は環境によって違うので、動的に取るようにする
LANG=C
# sortされたNICの最初のひとつを使う ※virtualboxでhost networkがある場合は2つめにする
NIC=$(nmcli d s | sort | grep " connected" | grep ethernet | cut -d " " -f 1 | sort | head -1)
# ここ未検証。
nmcli con add type ethernet con-name $NIC ifname $NIC
# kickstartだとうまくいかないみたい?なので最初の起動時に手動で実行しやすいように.sh置いておく
echo "nmcli con add type ethernet con-name $NIC ifname $NIC" > /root/my-setup-ip.sh
chmod +x /root/my-setup-ip.sh
touch /root/my-setip-finished
## 独自のセットアップツールを呼び出す
# NASからツールを取得
yum install -y lftp
lftp sftp://nas:nas@192.168.1.100 -e "get array1/my-tool/my-setup.sh; bye"
# 実行
bash my-setup.sh > /root/my-setup.log
echo "hostnamectl set-hostname xxx" > /root/my-set-hostname
date > /root/my-from_ks_date
%end
##########################################################################################
#################### MY postscript <- ####################################################
##########################################################################################
ks.cfg を検証しましょう
# syntax check!
[root@cent72 base]# ksvalidator ks.cfg
isoを作り直す
# ks.cfg がどのデバイスに置かれているかをここで設定します。
# autorun という項目で、インストールDVDのISOイメージ内の
# ks.cfgを読ませる場合の設定は下記のようになります。
cat >> ~/base/isolinux/isolinux.cfg <<EOL
label autorun
menu label ^KIckStartAutoRun
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=cdrom: inst.ks=cdrom:
EOL
# 出来上がったファイルイメージをISO形式に変換します
cd ~/base
mkisofs -v -r -J -o ../CentOS-7-KickStart.iso -b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
ls ~/*.iso
# どっかに送ったりとか
scp ~/CentOS-7-auto.iso me@192.168.1.2:~/Downloads/Centos-7-KickStart-ks-`date`.iso
あとはできたisoを焼いたり、ESXiに置いてインストールしたり。
isoをマウント起動して、インストール画面で AutoRun
を選べば幸せ。
注意点
軽いks.cfgでもここで死ぬほど待たされるので信じて待ちましょう。何度も強制終了しちゃったよ。待ったら行ったよ。
tty3に出力スると、logを流すこともできるらしい。
https://ken-etsu-tech.blogspot.com/2008/01/anaconda-kickstartpost.html
インストールが終わったら
# ks.cfgで入れたあいつが走ったら成功だね。
$ sl
よっしゃマスターした!