前は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 ~]$