CentOS の kickstart ファイル

スクリプトでインストールするとき、 Debian / Ubuntu だと preseed ってのを仕込むじゃ無いですか。これまで Ubuntu の box 作るのに Packer でもちろん使ってました。

今回 CentOS 7 にしてみたので、同じようなのないかと調べたら kickstart ファイルでありました。 Packer での仕込み方も一緒。

    {
      "type":                "vmware-iso",
      "iso_url":             "http://www.ftp.ne.jp/Linux/packages/CentOS/7/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso",
      "iso_checksum":        "713ea7847adcdd1700e92429f212721a",
      "iso_checksum_type":   "md5",
      "ssh_username":        "vagrant",
      "ssh_password":        "vagrant",
      "shutdown_command":    "echo 'vagrant' | sudo -S poweroff",
      "guest_os_type":       "centos-64",
      "tools_upload_flavor": "linux",
      "http_directory":      "preseed",
      "http_port_min":       8100,
      "http_port_max":       9000,
      "output_directory":    "output/vmware-iso/{{isotime}}",
      "vmx_data": {
        "memsize":  "1024",
        "numvcpus": "2"
      },
      "boot_command": [
        "<esc><wait>",
        "linux ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/anaconda-ks.cfg",
        "<enter><wait>"
      ]
    },

問題はどうやって作るんだよってことですが、なんと!

You can create it by using the Kickstart Configurator application, or writing it from scratch. The Red Hat Enterprise Linux installation program also creates a sample kickstart file based on the options that you selected during installation. It is written to the file /root/anaconda-ks.cfg.

って書いてある!やった!。

#version=RHEL7

firstboot --enable
ignoredisk --only-use=sda
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
clearpart --none --initlabel
eula --agreed

network --bootproto=dhcp
network --hostname=localhost.localdomain

keyboard --vckeymap=jp106 --xlayouts='jp'
lang ja_JP.UTF-8
timezone Asia/Tokyo --isUtc

rootpw kidoibuki
user --groups=wheel --name=vagrant --password=vagrant

repo --name=base --baseurl=http://www.ftp.ne.jp/Linux/packages/CentOS/7/os/x86_64/
url --url="http://www.ftp.ne.jp/Linux/packages/CentOS/7/os/x86_64/"

reboot

%packages --nobase --ignoremissing
@core

%end

出力されたファイルに、 %packages のオプションと、 reboot コマンドを追加しました。 reboot コマンド無いとインストール完了した後「再起動するかい?」って訊いてきたまま止まってるので結構間抜けである。

どうも古いので怪しいんだけどドキュメントにコマンドの一覧やオプションにしっかりまとまってます( 28.3. Creating the Kickstart File )。

ちなみに preseed のも手動で入れたときの結果を元に作った気がする。忘れちゃったけど。あ debconf-get-selections だ( B.3. Creating a preconfiguration file )。