前はUbuntuにVirtualBoxをインストールしてVirtualBoxプロバイダー上でVagrantを使う方法を書きましたが、
今回は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イメージは公開されていないので、自分で作るようになると思います。ちなみにFedoraとDebianは用意されています(そのほか利用できる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'
参考にした情報
起動
あとは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 ~]$