読者です 読者をやめる 読者になる 読者になる

ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

CentOS 7で始めるKVM + Vagrant [後編]

今日は後編です。と言っても、昨日の分でほぼ書いてしまったので、書ききれなかったこととか補足とかを今日は書いてみようと思います。 前編はこちらです。

ytooyama.hatenadiary.jp

使うことができるboxについて

今回の手順で作られたVagrant + KVM環境は、Libvirtプロバイダーで動いているため、Libvirtdで実行できるboxイメージでないと動きません。過去にKVMプロバイダーと言うものがあり、これ用に作られたboxイメージが現存しますが、今回の環境では動かすことができませんでした。

Libvirt用イメージは次のURLで見つけることができます。

Discover Vagrant Boxes | Atlas by HashiCorp

Ubuntuは公式のものはVirtualBox向けしかないため、例えばこれが使えます。

Vagrant box matjazp/ubuntu-trusty64 | Atlas by HashiCorp

Debianは次のイメージが使えます。

Vagrant box debian/jessie64 | Atlas by HashiCorp

CentOSは6と7向けのboxが公式配布されています。

http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7.LibVirt.box http://cloud.centos.org/centos/6/vagrant/x86_64/images/CentOS-6.LibVirt.box

Fedoraの場合は下記の配布サイトからダウンロードできます。

Fedora Cloud のダウンロード

私が確認したのはざっとこの辺りです。

仮想マシンへのログイン

Vagrantでデプロイした仮想マシンへはvagrant sshでログインできます。新しいユーザーを作れば、そのユーザーで通常のようにsshコマンドを使ってログインも可能です。ただし、Vagrantfileにpublic_networkの設定を行っておく必要があります。

IPアドレスの設定変更と再起動

仮想マシンを起動したあと、IPアドレスを変えて再起動みたいな流れを行うと思います。 KVMVMの取り扱うように操作可能ですが、一番簡単なのは次のような感じです。

IPアドレスの設定変更

固定IPアドレスを設定したい場合はeth1側を変更します。これを行えるようにするため、Vagrantfileにpublic_networkの設定を行ってください。

config.vm.network "public_network"

IPアドレスDebian/Ubuntuなら/etc/network/interfaces、CentOS/Fedoraなら/etc/sysconfig/network-scriptsのしたのファイルをいつものように変更してください。CentOS 7/Fedoraならnmcliコマンドを使ってIPアドレスの設定をするのも割と容易にできます。再起動すると新しいIPアドレスに書き換わります。コマンド一行で済むので、ファイルを開いてviで編集するより効率的ですよね。

vm# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.1.250/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8

ホスト名の変更

ホスト名の変更は/etc/hostnameを変更しますが、nmcliコマンドでも変更が可能です。

# nmcli general hostname my-server1
# systemctl restart systemd-hostnamed

仮想マシンの再起動

仮想マシンを再起動するには、仮想マシンからログアウトして、ホスト場でvagrant reloadを実行します。

vm# exit
host# vagrant reload

仮想マシンでNested VMを提供する

仮想マシンでNested VMを提供する、つまり仮想マシン内で仮想マシンを実行するには仮想化ホストで設定変更が必要です。今回仮想化ホストとしてCentOS 7を使っているので、次のように設定すると利用可能になります。再起動は不要です。

パラメータの追記

host# vi /etc/modprobe.d/kvm-nested.conf
options kvm_intel nested=1

モジュールのロード

# 一旦アンロード
host# modprobe -r kvm_intel 
# ロードし直す
host# modprobe kvm_intel 
# Nested KVMが有効になった
host# cat /sys/module/kvm_intel/parameters/nested 
Y

まとめ

Vagrantを使うとOSのインストールの手間の削減、ある程度のパッケージインストールや初期設定の自動化ができて便利です。VagrantはOSのデプロイまでにして、Ansibleなどでセットアップするもよしと言う感じです。 これで動作確認用のサーバーとして使えますね。