ここでやること
複数の仮想マシン(guest=centos7)を管理する1台の物理サーバ(母艦=CentOS7)を作ってみる。
って、もうすでに万人がやってることですが、
KickStartコンフィグ書式やvirt-installコマンドの記載方法を、忘れたときに見ようかと思っています。
はじめに
決めとかなければいけないこと
項目 | ここでのサンプル値 | 仮想マシン2台目作る時の変更点 |
---|---|---|
母艦のIP | 192.168.10.81/24 | 変更不要 |
母艦の物理NW-IF | enp30s0 | 変更不要 |
母艦のブリッジIF | br0(enp30s0が属している) | 変更不要 |
仮想マシンの使用NW | 母艦と同一NW(br0に属する) | 変更不要 |
CentOS7のISO保管場所 | /export/images/CentOS-7-x86_64-DVD-1611.iso | 変更不要 |
仮想マシンのディスクイメージ保管場所 | /export/images | 変更不要 |
KickStartコンフィグファイルの設置場所(URL) | http://192.168.10.81/ks.cfg | 変更不要 |
---- | ----------------- | ---- |
KickStartコンフィグファイルの設置場所(ファイル) | /var/www/html/ks.cfg | 変更不要 |
rootのパスワード | /root/kickstart.cfgから抜粋してもよい(仮に###PASSWORD###) | 変更不要 |
ip/prefix | 192.168.10.82/24 | 変更対象!! |
gw | 192.168.10.254 | 変更不要 |
NameServer | 8.8.8.8 | 変更不要 |
パーティション | ベタ(LVMなし) /boot=512MB, /は残り全部 | 変更不要 |
selinux | disabled | 変更不要 |
ログイン用ユーザID | mishikawan(公開鍵認証専用) | 変更不要 |
公開鍵 | ssh-keygenで作成したid_rsa.pubファイルの中身(仮に###RSA###) | 変更不要 |
SSHの禁止事項設定 | パスワード認証禁止、root直ログイン禁止 | 変更不要 |
---- | ----------------- | ----- |
仮想マシン名 | cent701 | 変更対象!! |
メモリ | 1GB | 変更不要 |
仮想マシンのディスクイメージファイル | /export/images/cent701.img | 変更対象!! |
仮想マシンのディスクイメージファイルのサイズ | 5GB | 変更不要 |
インストール時の使用IPアドレス | DHCP | 変更不要 |
OS(CentOS7)インストール作業
これは割愛
- selinuxは無効にしました(検証環境なんでご勘弁)
仮想環境構築用のパッケージをインストール
加えて、KickStartコンフィグを仮想マシンに認識させるためにhttpdを稼働。
yum groupinstall "Virtualization Host"
yum install httpd
systemctl enable httpd
systemctl start httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
CentOSのISOファイルのダウンロードと設置
mkdir -p /export/images
curl -O http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
標準で入っているNAT(virbr0)の削除
virsh net-destroy default
virsh net-undefine default
service libvirtd restart
新ブリッジ(br0)の作成
母艦IPと同じNWに仮想マシンIPを割り当るブリッジ(br0)を作成。
我が家では母艦SVが属するNWは、"192.168.10.0/24であるため、以下の値で設定。
nmcli connection add type bridge con-name br0 ifname br0
nmcli con add type ethernet con-name br0-slave ifname enp30s0 master br0
nmcli con modify br0 ipv4.method manual ipv4.address "192.168.10.81/24"
nmcli con modify br0 ipv4.gateway "192.168.10.254"
nmcli con modify br0 ipv4.dns "8.8.8.8"
nmcli con delete enp30s0
man nmcli-examples ... 結構細かく載ってます。
kickstart用ファイルを作成
決めとかなければいけないこと
項目 | ここでのサンプル値 |
---|---|
KickStartコンフィグファイルの設置場所(ファイル) | /var/www/html/ks.cfg |
rootのパスワード | /root/kickstart.cfgから抜粋してもよい(仮に###PASSWORD###) |
ip/prefix | 192.168.10.82/24 |
gw | 192.168.10.254 |
NameServer | 8.8.8.8 |
パーティション | ベタ(LVMなし) /boot=512MB, /は残り全部 |
selinux | disabled |
ログイン用ユーザID | mishikawan(公開鍵認証専用) |
公開鍵 | ssh-keygenで作成したid_rsa.pubファイルの中身(仮に###RSA###) |
SSHの禁止事項設定 | パスワード認証禁止、root直ログイン禁止 |
cat > /var/www/html/ks.cfg
eula --agreed
auth --enableshadow --passalgo=sha512
text
firstboot --enable
services --enabled="chronyd"
keyboard --vckeymap=us --xlayouts='us'
lang ja_JP.UTF-8
ignoredisk --only-use=vda
network --bootproto=static --gateway=192.168.10.254 --ip=192.168.10.81 --nameserver=8.8.8.8 --netmask=255.255.255.0
rootpw --iscrypted ###PASSWORD###
timezone Asia/Tokyo --isUtc
bootloader --location=mbr --boot-drive=vda
#autopart --type=plain
clearpart --all --initlabel --drives=vda
part /boot --fstype="xfs" --ondisk=vda --size=512
part / --fstype="xfs" --ondisk=vda --size=1 --grow
selinux --disabled
%packages
@base
@core
chrony
telnet
tcpdump
%end
%post
sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
useradd mishikawan
mkdir -p /home/mishikawan/.ssh
echo "ssh-rsa ###RSA### mishikawan@localhost" > /home/mishikawan/.ssh/authorized_keys
chmod 700 /home/mishikawan/.ssh
chmod 400 /home/mishikawan/.ssh/authorized_keys
chown -R mishikawan:mishikawan /home/mishikawan/.ssh
%end
reboot
実際に仮想マシンを作ってみる(virt-install発行)
決めとかなければいけないこと
項目 | ここでのサンプル値 |
---|---|
仮想マシン名 | cent701 |
メモリ | 1GB |
仮想マシンのディスクイメージファイル | /export/images/cent701.img |
仮想マシンのディスクイメージファイルのサイズ | 5GB |
CentOS7のISO保管場所 | /export/images/CentOS-7-x86_64-DVD-1611.iso |
インストール時の使用IPアドレス | DHCP |
virt-install -n cent701 -r 1024 --file=/export/images/cent701.img --file-size=5 \
--location /export/images/CentOS-7-x86_64-DVD-1611.iso --nographics --os-variant=rhel7.0 \
--network=bridge:br0 --extra-args="ks=http://192.168.10.81/ks.cfg ip=dhcp console=tty0 console=ttyS0,115200n8"
仮想マシン作成の試行錯誤
virt-install発行後、KickStart不備・httpポート開放し忘れ・ISOイメージ指定失敗等々で失敗した場合、"virtsh destroy cent701" & "virtsh undefine cent701"の2コマンドでなかったことにしてくれますので、幾らでもTrial&Errorできます!!
気に入らなかったら
virtsh destroy cent701
virtsh undefine cent701
- virsh consoleは、CTRL+]で抜けれます。
気に入ったら
対象の仮想マシンが気に入ったら、autostartを指定して登録しておきましょう。
# virsh autostart cent701
Domain cent701 marked as autostarted
以下、本家の参考サイト
キックスタート構文の参考資料
CREATING GUESTS WITH VIRT-INSTALL
#変更点
2017/05/19: br0作成コマンドの不備修正