Contents
はじめに
キックスタートはインストールに必要となる入力情報をkickstartファイルに格納しておくことで、ユーザの介入なしに自動インストールが可能となります。
今回はvirt-install+kickstartで仮想マシンの自動インストールを行います。
KVMのインストールはこちらを参考にまでに。
CentOS 7でkickstartファイルのパラメータがまた変わっているので、最低限必要なパラメータを使って、自動インストールできるところまで確認したいと思います。
kickstartファイルの作成
kickstartファイルの作成方法についてredhatのポータルには以下のようにあります。
まず任意のシステムに手動のインストールを行うことが、キックスタートファイル作成の推奨方法となります。インストールが完了すると、インストーラーで選択された選択肢がすべて anaconda-ks.cfg という名前のファイルに保存されます。このファイルはインストールが完了したシステムの /root/ ディレクトリーに置かれます。このファイルをコピーして、必要に応じて変更を加えると、今後のインストールでこの設定ファイルを使用することができます。
CentOS7のkickstartファイルを作成するのも今回がはじめてなので、一度手動で仮想マシンをインストールして、インストール後に作成される/root/anaconda-ks.cfgを基にして、kickstartファイルを作成します。
anaconda-ks.cfg
#version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom # Use text mode install text # Run the Setup Agent on first boot firstboot --enable ignoredisk --only-use=vda # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=static --device=eth0 --gateway=172.16.10.254 --ip=172.16.10.5 --nameserver=8.8.8.8 --netmask=255.255.255.0 --noipv6 --activate network --hostname=centos7 # Root password rootpw --****** # Do not configure the X Window System skipx # System timezone timezone Asia/Tokyo --isUtc user --groups=wheel --name=***** --password=***** --iscrypted --gecos="*****" # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda autopart --type=thinp # Partition clearing information clearpart --all --initlabel --drives=vda %packages @core kexec-tools %end %addon com_redhat_kdump --enable --reserve-mb='auto' %end
anaconda-ks.cfgを基にして、kicstartファイルを作成します。
kickstart.cfg
#version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom # Use text mode install text # Run the Setup Agent on first boot firstboot --enable ignoredisk --only-use=vda # Keyboard layouts keyboard --vckeymap=jp106 --xlayouts=jp # System language lang en_US.UTF-8 # Network information # Root password rootpw --iscrypted ***** # Do not configure the X Window System skipx # System timezone timezone Asia/Tokyo --isUtc # add user user --groups=wheel --name=***** --password=***** --iscrypted --gecos="*****" # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda autopart --type=thinp # Partition clearing information clearpart --all --initlabel --drives=vda %packages @core kexec-tools %end %addon com_redhat_kdump --enable --reserve-mb='auto' %end
変更はキーボードを日本語配列したのと、kickstartファイルはどのサーバでも使い回し出来るようにしたいので、サーバ固有の情報であるnetwork部分を削除しました。networkオプションで指定していたIPアドレス等はvirt-installの時にオプションで渡すようにします。
これだけでとりあえずkickstartファイルとして機能します。後はオプションリストとにらめっこしながら、必要に応じて追加していけばいいと思います。
kickstartファイルの検証
コマンドユーティリティでkickstartファイルをチェックできるみたいです。まずはインストール。
[root@localhost ~]# yum install pykickstart
以下のksvalidatorコマンドでkickstartファイルを指定して検証します。問題なければ実行後に何も表示されません。
[root@localhost ~]# ksvalidator /var/lib/libvirt/kickstart/kickstart.cfg
virt-install + kickstart で自動インストール
特にサーバ固有の設定を指定しない場合(物理NICにNAT)
KVMインストール時に自動で作成されるブリッジインターフェースvirbr0が有効になっている場合、パラメータでIPアドレス等を指定しなければ物理ホスト側のNICにNATした仮想マシンが作成されます。
[root@localhost ~]# virt-install \ --name centos7 \ --hvm \ --os-variant=rhel7 \ --vcpu=1 \ --ram 1024 \ --graphics none \ --disk=/var/lib/libvirt/images/centos7,format=qcow2,size=10,bus=virtio \ --location=/var/lib/libvirt/images/CentOS-7-x86_64-Minimal-1511.iso \ --initrd-inject /var/lib/libvirt/kickstart/kickstart.cfg \ --extra-args "inst.ks=file:/kickstart.cfg console=ttyS0,115200n8"
ただしこの場合、作成した仮想マシンのNICは上がっておらず自動起動も有効になっていないので、以下のコマンドでNICを立ち上げて、自動起動も有効にします。(プロンプトが同じなのでわかりにくいですが、下は仮想マシン内のシェルです)
[root@localhost ~]# nmcli connection up eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/0) [root@localhost ~]# nmcli connection modify eth0 connection.autoconnect yes
サーバ固有の設定を指定する場合
物理ホストに作成したブリッジ(br10)にアタッチして、--extra-argsオプションでホスト名やIPアドレス等のパラメータを渡します。
[root@localhost ~]# virt-install \ --name centos7 \ --hvm \ --os-variant=rhel7 \ --vcpu=1 \ --ram 1024 \ --graphics none \ --disk=/var/lib/libvirt/images/centos7,format=qcow2,size=10,bus=virtio \ --network bridge=br10,model=virtio \ --location=/var/lib/libvirt/images/CentOS-7-x86_64-Minimal-1511.iso \ --initrd-inject /var/lib/libvirt/kickstart/kickstart.cfg \ --extra-args \ "inst.ks=file:/kickstart.cfg \ hostname=centos7 \ onboot=yes \ bootproto=static \ ip=172.16.10.5 \ netmask=255.255.255.0 \ gateway=172.16.10.254 \ nameserver=8.8.8.8 \ console=ttyS0,115200n8"
サーバの確認
インストール直後はログイン画面になります。
CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 centos7 login:
仮想マシンから抜けるときはCtrl+]キーで物理ホスト側に戻ります。
作成した仮想マシンのリスト表示は以下のコマンドを実行します。
[root@localhost ~]# virsh list --all Id Name State ---------------------------------------------------- 33 centos7 running
再度物理ホストから仮想マシンのコンソールへ入るときは以下のコマンドで入れます。
[root@localhost ~]# virsh console centos7 Connected to domain centos7 Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 centos7 login:
最後に
どうでしょう。最小限のオプションやパラメータだけで仮想マシンが自動でインストール完了できるところまでを目標としました。
あとは自分の環境や好みに応じて設定を追加していけばいいかな思います。
参考
第23章 キックスタートを使ったインストール
18.4. キックスタートを使ったインストールのパラメーター
第20章 起動オプション
KVM に virt-install でコマンドラインだけで CentOS 7 を インストール