CentOS8KVM及び仮想マシンのセットアップ

#CentOS8KVM及び仮想マシンのセットアップ

###CentOS(ホストOS)のインストール
　ホストOSをサーバー機にインストール
　今回はディスプレイ・マウスを接続して、USBメモリからGUIにてインストール
　パッケージは、
　　　サーバー
　　　FTPサーバー
　　　仮想化ハイパーバイザー
　　　ベーシックWebサーバー
　を選択
　ネットワークは、
　　192.168.10.50/24
　で設定
　再起動
　今回は、
　　ホストOS：192.168.10.50 (Bridge:192.168.10.51)
　上に、２つの仮想マシン
　　compute-vm01：192.168.10.52　
　　compute-vm02：192.168.10.53　
　を作成
###CentOS(ホストOS)の設定

###ネットワーク設定
######現在のネットワーク設定
```
[root@trafficsentinelkvm ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 9c:5c:8e:c0:0a:d2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.50/24 brd 192.168.10.255 scope global noprefixroute enp2s0
       valid_lft forever preferred_lft forever
    inet6 2400:4150:9020:b00:7fbe:99db:3d2f:ed89/64 scope global dynamic noprefixroute
       valid_lft 288sec preferred_lft 288sec
    inet6 fe80::6703:5d37:f92f:8105/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:52:d6:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:52:d6:e5 brd ff:ff:ff:ff:ff:ff
```

######IP：192.168.10.50/24、デフォルトゲートウェイ：192.168.10.1、dns：192.168.10.1
```
[root@trafficsentinelkvm ~]# nmcli connection modify enp2s0 ipv4.address 192.168.10.50/24
[root@trafficsentinelkvm ~]# nmcli connection modify enp2s0 ipv4.gateway 192.168.10.1
[root@trafficsentinelkvm ~]# nmcli connection modify enp2s0 ipv4.dns 192.168.10.1
[root@trafficsentinelkvm ~]# nmcli connection modify enp2s0 ipv4.method manual
[root@trafficsentinelkvm ~]# nmcli connection up enp2s0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@trafficsentinelkvm ~]# hostname
trafficsentinelkvm.flownetsecure.com
```

###KVMインストール
######KVMおよび関連パッケージをインストール
```
[root@trafficsentinelkvm ~]# dnf update
[root@trafficsentinelkvm ~]# dnf install @virt
[root@trafficsentinelkvm ~]# dnf install virt-top libguestfs-tools
[root@trafficsentinelkvm ~]# dnf install qemu-kvm libvirt virt-install
[root@trafficsentinelkvm ~]# dnf install cockpit-machines         #　仮想マシン用
[root@trafficsentinelkvm ~]# systemctl enable --now libvirtd
[root@trafficsentinelkvm /]# systemctl enable --now cockpit.socket
```
######ブリッジインターフェース(br0)を作成
```
[root@trafficsentinelkvm ~]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
enp2s0  bfa2bf8f-f4b4-4f4d-8806-af4fee721717  ethernet  enp2s0
virbr0  58ff7692-c77d-439d-883b-d67f7887653d  bridge    virbr0
[root@trafficsentinelkvm ~]# nmcli con add type bridge ifname br0 con-name br0
接続 'br0' (63d74c4d-e049-4fdb-846a-ee9effe8e2e3) が正常に追加されました。
[root@trafficsentinelkvm ~]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
br0     63d74c4d-e049-4fdb-846a-ee9effe8e2e3  bridge    br0
enp2s0  bfa2bf8f-f4b4-4f4d-8806-af4fee721717  ethernet  enp2s0
virbr0  58ff7692-c77d-439d-883b-d67f7887653d  bridge    virbr0
```
######br0に、IPアドレス、gateway、DNS を設定（これがKVMのアドレスとなる）
```
[root@trafficsentinelkvm ~]# nmcli con mod br0 bridge.stp no
[root@trafficsentinelkvm ~]#  nmcli con mod br0 ipv4.method manual ipv4.address "192.168.10.51/24" ipv4.gateway "192.168.10.1" ipv4.dns 192.168.10.1
```
######仮想ブリッジ作成
```
[root@trafficsentinelkvm ~]# nmcli con add type bridge-slave ifname enp2s0 master br0
接続 'bridge-slave-enp2s0' (e7b7c758-b9f5-48e7-ba63-c65eaf54128c) が正常に追加されました。
[root@trafficsentinelkvm ~]# nmcli con up br0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@trafficsentinelkvm ~]# nmcli con show
NAME                 UUID                                  TYPE      DEVICE
enp2s0               bfa2bf8f-f4b4-4f4d-8806-af4fee721717  ethernet  enp2s0
br0                  63d74c4d-e049-4fdb-846a-ee9effe8e2e3  bridge    br0
virbr0               58ff7692-c77d-439d-883b-d67f7887653d  bridge    virbr0
bridge-slave-enp2s0  e7b7c758-b9f5-48e7-ba63-c65eaf54128c  ethernet  --
```
bridge-slave-enp2s0が追加される

######物理ポートを削除し再起動
```
[root@trafficsentinelkvm ~]# sudo su
[root@trafficsentinelkvm ~]# nmcli con del enp2s0 && sudo reboot
接続 'enp2s0' (90d144fa-d884-44f0-86f0-81bedb92d229) が正常に削除されました。
```
リブートされる
物理インターフェースenp2s0のコネクション設定を削除するので、リモート接続している場合は、再起動でこのIPアドレス（192.168.10.50）への接続が切断されます。
再接続は、ブリッジインターフェースbr0に設定したIPアドレス（192.168.10.51）で接続します。

######再起動後、コネクションの表示・確認
```
[root@trafficsentinelkvm ~]# nmcli con show
NAME                 UUID                                  TYPE      DEVICE
br0                  63d74c4d-e049-4fdb-846a-ee9effe8e2e3  bridge    br0
virbr0               b1410b8a-44ab-44d0-86d2-44efbd6e93ae  bridge    virbr0
bridge-slave-enp2s0  e7b7c758-b9f5-48e7-ba63-c65eaf54128c  ethernet  enp2s0
[root@trafficsentinelkvm ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 9c:5c:8e:c0:0a:d2 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 9c:5c:8e:c0:0a:d2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.51/24 brd 192.168.10.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 2400:4150:9020:b00:63d5:a6ad:6606:2f50/64 scope global dynamic noprefixroute
       valid_lft 289sec preferred_lft 289sec
    inet6 fe80::483e:9fae:62e6:5175/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:52:d6:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:52:d6:e5 brd ff:ff:ff:ff:ff:ff
```
Web console: https://trafficsentinelkvm.flownetsecure.com:9090/ or https://192.168.10.51:9090/ が利用可能に

###ホストOS＆KVM完成！
###KVM上に仮想マシンを作成
######ISOイメージの配置（/iso/）
```
mkdir /iso
```
ISOイメージのアップロード

```
[root@trafficsentinelkvm ~]# cd /iso && ls -l
合計 9047040
-rw-r--r--. 1 root root 9264168960  4月 27 23:13 CentOS-8.3.2011-x86_64-dvd1.iso
```
######ストレージプール(仮想マシンイメージの保管場所)の作成
```
mkdir -p /var/kvm/images
```
######仮想マシン「compute-vm01」の作成
```
[root@trafficsentinelkvm iso]# VM_NAME="compute-vm01"
[root@trafficsentinelkvm iso]# virt-install \
>       --name ${VM_NAME}\
>       --hvm --arch x86_64  \
>       --os-type linux \
>       --os-variant centos8 \
>       --vcpus 1 --ram 8192 \
>       --disk path=/var/kvm/images/${VM_NAME}.img,format=qcow2,size=100 \
>       --network bridge=br0 \
>       --graphics vnc,keymap=ja \
>       --noautoconsole \
>       --location /iso/CentOS-8.3.2011-x86_64-dvd1.iso \
>       --check all=off \
>       --extra-args ro

インストールの開始中...
ファイル vmlinuz を読出中...                                                                                         | 9.1 MB  00:00:00
ファイル initrd.img を読出中...                                                                                      |  70 MB  00:00:00
割り当て中 'compute-vm01.img'                             0% [                                         ]    0 B/s |  17 MB  --:--:--割り当て中 'compute-vm01.img'                                                                                     | 100 GB  00:00:01
仮想マシンのインストールが進行中です。インストール
が完了するまでコンソールの再接続を待っています。
```
######```--extra-args ro``` が無いと、仮想OSインストール中に、以下エラーが発生する
インストール中に次のエラーが発生しました。致命的なエラーとなるため、インストールを中止します。
DNF error: Error in POSTTRANS scriptlet in rpm package Kernel-core
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705452/5244f52a-f769-d860-13b9-7a6beb827d20.png)

######仮想マシン「compute-vm02」の作成
```
[root@trafficsentinelkvm iso]# VM_NAME="compute-vm02"
[root@trafficsentinelkvm iso]# virt-install --name ${VM_NAME}  --hvm --arch x86_64 --os-type linux --os-variant centos8 --vcpus 1 --ram 8192 --disk path=/var/kvm/images/${VM_NAME}.img,format=qcow2,size=50 --network bridge=br0 --graphics vnc,keymap=ja --noautoconsole --location /iso/CentOS-8.3.2011-x86_64-dvd1.iso --check all=off --extra-args ro

インストールの開始中...
ファイル vmlinuz を読出中...                                                                                         | 9.1 MB  00:00:00
ファイル initrd.img を読出中...                                                                                      |  70 MB  00:00:00
割り当て中 'compute-vm02.img'                                                                                     |  50 GB  00:00:00
仮想マシンのインストールが進行中です。インストール
が完了するまでコンソールの再接続を待っています。
```
######仮想マシンのリスト
```
[root@trafficsentinelkvm iso]# virsh list
 Id   名前           状態
-----------------------------
 1    compute-vm01   実行中
 2    compute-vm02   実行中
```
######ホストOSのCockpitにブラウザ接続（http://192.168.10.51:9090/）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705452/3f2ad917-ec20-57ab-79ef-6ebfd15b5f01.png)
ログインする
######作成した仮想マシンに接続して仮想マシンOSのインストールを継続する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705452/7c026bff-b4e8-2812-f55e-6a4c200fd4a3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705452/85bc3aa4-2922-2b29-9f28-f0fdf1b1372e.png)

###仮想マシン完成！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705452/a1837b54-afcc-6b52-e868-c0beb331f687.png)

####その他

######HTTPDなければ
```
[root@trafficsentinelkvm ~]# dnf -y install httpd httpd-tools httpd-devel httpd-manual
[root@trafficsentinelkvm ~]# systemctl start httpd
[root@trafficsentinelkvm ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@trafficsentinelkvm ~]# firewall-cmd --zone=public --add-service=http --permanent
必要無い？
[root@trafficsentinelkvm ~]# firewall-cmd --zone=public --add-port=9090/tcp --permanent
success
[root@trafficsentinelkvm ~]# firewall-cmd --reload
success
```
######仮想マシンの削除方法
```
[root@trafficsentinelkvm images]# virsh shutdown compute-vm01
ドメイン compute-vm01 はシャットダウン中です
[root@trafficsentinelkvm images]# virsh undefine compute-vm01 --remove-all-storage
ドメイン compute-vm01 の定義が削除されました
ボリューム 'vda'(/var/kvm/images/compute-vm01.img) が削除されました。
```
######仮想マシン再起動方法
```
[root@trafficsentinelkvm images]# virsh --connect qemu:///system start compute-vm01
ドメイン compute-vm01 が起動されました

[root@trafficsentinelkvm images]# virsh list
 Id   名前           状態
-----------------------------
 1    compute-vm01   実行中

```