LoginSignup
3
8

More than 5 years have passed since last update.

仮想(KVM)マシン構築を簡易にする環境作成

Last updated at Posted at 2017-05-13

ここでやること

複数の仮想マシン(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で仮想環境用のパッケージ一括インストールと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ファイルのダウンロードと設置

仮想マシン用のOSイメージを事前にダウンロード/配置
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)の削除

デフォルトブリッジ削除(virbr0)
virsh net-destroy default
virsh net-undefine default
service libvirtd restart

新ブリッジ(br0)の作成

母艦IPと同じNWに仮想マシンIPを割り当るブリッジ(br0)を作成。
我が家では母艦SVが属するNWは、"192.168.10.0/24であるため、以下の値で設定。

新規ブリッジ作成(br0)
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直ログイン禁止
kickstart用ファイル作成
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コマンド発行
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作成コマンドの不備修正

3
8
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
3
8