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

ytooyamaのブログ

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

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

前はUbuntuVirtualBoxをインストールしてVirtualBoxプロバイダー上でVagrantを使う方法を書きましたが、

ytooyama.hatenadiary.jp

今回はLibvirtでやってみます。今回はホストOSとしてCentOS 7.2を使いました。

Vagrantは公式のものではなく、centos-release-sclのパッケージを使いました。そのため、Vagrantの使い方が若干特殊になっています。

リポジトリーパッケージのインストール

centos-release-sclに必要なパッケージであるVagrantがあるので、このリポジトリーを有効にします。

[root@vtest ~]# yum install centos-release-scl

パッケージのインストール

Vagrantとその他必要なパッケージをまとめてインストールしてしまいます。

[root@vtest ~]# yum install sclo-vagrant1 wget rsync qemu-kvm

Libvirtdサービスの有効化

[root@vtest ~]# systemctl enable libvirtd
[root@vtest ~]# systemctl start libvirtd

Start using the software collection!

ここが特殊な部分。

[root@vtest ~]# scl enable sclo-vagrant1 bash

Vagrant boxのダウンロード

LibVirtプロバイダーで動かすのでLibVirt向けのboxイメージを使います。CentOSコミュニティ公式のboxをダウンロードします。割とLibVirt向けVagrant boxイメージは公開されていないので、自分で作るようになると思います。ちなみにFedoraDebianは用意されています(そのほか利用できるOSの一例)。

[root@vtest ~]# wget http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1607_01.LibVirt.box

boxのインポート

LibVirtプロバイダーで動かすのでLibVirt向けのboxイメージを使います。

[root@vtest ~]# vagrant box add centos/7 CentOS-7-x86_64-Vagrant-1607_01.LibVirt.box

Vagrantfileの作成

centos/7のVagrantfileを作成します。

[root@vtest ~]# vagrant init centos/7
[root@vtest ~]# vi Vagrantfile

設定変更

Vagrantfileを書き換えます。最低限変えておきたい設定は次の三つです。

名前の変更

マシンはdefaultと言う名前になっています。これを任意の名前に書き換えることができます。

   config.vm.define :centos1 do |t|   
    end

specの変更

仮想マシンのスペックを定義できます。

    config.vm.provider :libvirt do |domain|
      domain.memory = 2048
      domain.cpus = 2
    end

Public ネットワークの割り当て

仮想化ホストと同じネットワークに接続する場合はこの設定を有効化します。

config.vm.network "public_network"

Public Networkとの接続はeth0が使われますが、eth0がない場合はエラーになります。その場合は次のようにデバイスを指定します。

config.vm.network "public_network", :bridge => 'enp30s0', :dev => 'enp30s0'

参考にした情報

github.com

起動

あとはvagrant upで起動するだけです。

[root@vtest ~]# vagrant up
Bringing machine 'default' up with 'libvirt' provider...
==> default: Creating image (snapshot of base box volume).
==> default: Creating domain with the following settings...
==> default:  -- Name:              root_default
==> default:  -- Domain type:       kvm
==> default:  -- Cpus:              2
==> default:  -- Memory:            2048M
==> default:  -- Management MAC:
==> default:  -- Loader:
==> default:  -- Base box:          centos/7
==> default:  -- Storage pool:      default
==> default:  -- Image:             /var/lib/libvirt/images/root_default.img (41G)
==> default:  -- Volume Cache:      default
==> default:  -- Kernel:
==> default:  -- Initrd:
==> default:  -- Graphics Type:     vnc
==> default:  -- Graphics Port:     5900
==> default:  -- Graphics IP:       127.0.0.1
==> default:  -- Graphics Password: Not defined
==> default:  -- Video Type:        cirrus
==> default:  -- Video VRAM:        9216
==> default:  -- Keymap:            en-us
==> default:  -- INPUT:             type=mouse, bus=ps2
==> default:  -- Command line :
==> default: Creating shared folders metadata...
==> default: Starting domain.
==> default: Waiting for domain to get an IP address...
==> default: Waiting for SSH to become available...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Configuring and enabling network interfaces...
==> default: Rsyncing folder: /root/ => /vagrant

VMにログイン

[root@vtest ~]# vagrant ssh
[vagrant@localhost ~]$