LoginSignup
34
40

More than 5 years have passed since last update.

kickstartをマスターしたのでメモっておく

Last updated at Posted at 2018-05-17

資料はこちら サンキュー #インフラ勉強会

CentOSの繰り返しのインストールを
Kickstart で手抜きしよう(?) by @akane298

# 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 を選べば幸せ。

スクリーンショット 2018-05-17 22.47.42.png

注意点

軽いks.cfgでもここで死ぬほど待たされるので信じて待ちましょう。何度も強制終了しちゃったよ。待ったら行ったよ。

スクリーンショット 2018-05-17 22.53.46.png

tty3に出力スると、logを流すこともできるらしい。

https://ken-etsu-tech.blogspot.com/2008/01/anaconda-kickstartpost.html

インストールが終わったら

# ks.cfgで入れたあいつが走ったら成功だね。
$ sl

よっしゃマスターした!

34
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
40