デフォルトでは、VagrantはOracleVirtualBoxをプロバイダーとして使用します。システムに複数のプロバイダー(VirtualboxやLibvirtなど)がインストールされている場合、特定のプロバイダーを明示的に指定しない限り、常にVirtualboxでVMを起動します。この簡単なガイドでは、LinuxでLibvirtKVMプロバイダーでVagrantを使用する方法を見てみましょう。
Vagrant スタンドアロンの仮想化プロバイダーではありません。 Virtualbox、Libvirt / KVM、Docker、VMWareなどの他の仮想化プロバイダーに依存して、仮想マシンを作成および実行します。
Vagrantの優れた機能の1つは、ユーザーが特定の仮想化プラットフォームに縛られることがないことです。ユーザーは、複数の仮想化プロバイダーと連携するワークフローを作成できます。
現在、Vagrantは30を超えるプロバイダーをサポートしています。サポートされているプロバイダーの完全なリストは、こちらで確認できます。 。
1。 LinuxにKVMをインストールする
まず、LinuxシステムにKVMをインストールする必要があります。 DEBベースのシステムとRPMベースのシステムのKVMインストール手順はすでに文書化されています。リンクをたどって、お好みのLinuxディストリビューションにKVMをインストールしてください。
- CentOS8サーバーにKVMをインストールして構成する
- Ubuntu20.04ヘッドレスサーバーにKVMをインストールして構成する
- OpenSUSETumbleweedにKVMをインストールして構成する
2。 Linuxにvagrant-libvirtプラグインをインストールする
KVMでVagrant仮想マシンを実行するには、 vagrant-libvirt
をインストールする必要があります プラグイン。このプラグインは、LibvirtプロバイダーをVagrantに追加し、VagrantがLibvirtを介してマシンを制御およびプロビジョニングできるようにします。
vagrant-libvirt
に必要な依存関係をインストールします プラグイン。
Ubuntuの場合:
$ sudo apt install qemu libvirt-daemon-system libvirt-clients libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev ruby-libvirt ebtables dnsmasq-base
CentOS、Fedoraの場合:
$ sudo dnf install gcc libvirt libvirt-devel libxml2-devel make ruby-devel
次に、 vagrant-libvirt
をインストールします コマンドを使用したプラグイン:
$ vagrant plugin install vagrant-libvirt
vagrant-mutate
もインストールする必要があります さまざまなプロバイダーで動作するようにvagrantボックスを変換するプラグイン。
$ vagrant plugin install vagrant-mutate
3。 LibvirtKVMプロバイダーでVagrantを使用する
3.1。 使用するVagrantボックスがlibvirtプロバイダーをサポートしていることを確認してください。 libvirtでサポートされているvagrantボックスを見つけるには、「libvirt」を選択するだけです。 VagrantCloudリポジトリのオプション。
このガイドでは、CentOS7ボックスを使用します。
3.2。 Vagrantプロジェクトディレクトリに移動し、Vagrant環境を初期化します:
$ vagrant init centos/7
3.3。 次に、次のコマンドを実行して仮想マシンを起動します。
$ vagrant up --provider=libvirt
ここで、--provider=libvirt
オプションは、仮想マシンを実行するためにlibvirtKVMを使用するようにVagrantに明示的に指示します。意味-ここでは、KVMがデフォルトのプロバイダーとして機能します。
出力例:
Bringing machine 'default' up with 'libvirt' provider... ==> default: Box 'centos/7' could not be found. Attempting to find and install... default: Box Provider: libvirt default: Box Version: >= 0 ==> default: Loading metadata for box 'centos/7' default: URL: https://vagrantcloud.com/centos/7 ==> default: Adding box 'centos/7' (v2004.01) for provider: libvirt default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/libvirt.box Download redirected to host: cloud.centos.org default: Calculating and comparing box checksum... ==> default: Successfully added box 'centos/7' (v2004.01) for 'libvirt'! ==> default: Uploading base box image as volume into Libvirt storage... ==> default: Creating image (snapshot of base box volume). ==> default: Creating domain with the following settings... ==> default: -- Name: myvagrants_default ==> default: -- Domain type: kvm ==> default: -- Cpus: 1 ==> default: -- Feature: acpi ==> default: -- Feature: apic ==> default: -- Feature: pae ==> default: -- Memory: 512M ==> default: -- Management MAC: ==> default: -- Loader: ==> default: -- Nvram: ==> default: -- Base box: centos/7 ==> default: -- Storage pool: default ==> default: -- Image: /var/lib/libvirt/images/myvagrants_default.img (41G) ==> default: -- Volume Cache: default ==> default: -- Kernel: ==> default: -- Initrd: ==> default: -- Graphics Type: vnc ==> default: -- Graphics Port: -1 ==> default: -- Graphics IP: 127.0.0.1 ==> default: -- Graphics Password: Not defined ==> default: -- Video Type: cirrus ==> default: -- Video VRAM: 9216 ==> default: -- Sound Type: ==> default: -- Keymap: en-us ==> default: -- TPM Path: ==> default: -- INPUT: type=mouse, bus=ps2 ==> 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: Rsyncing folder: /home/sk/myvagrants/ => /vagrant
上記の出力の最初の行でわかるように、Vagrantは「libvirt」プロバイダーを使用してCentOS7VMを起動します。
3.4。 または、次の環境変数を追加して、デフォルトのプロバイダーとしてlibvirtを永続的に使用するようにVagrantに指示することもできます。
export VAGRANT_DEFAULT_PROVIDER=libvirt
4。 VMがLibvirtKVMで実行されているかどうかを確認します
4.1。 CentOS7VMが実際にLibvirtKVMプロバイダーで実行されているかどうかをVirshから確認できます。 コマンドラインインターフェイス。
$ virsh list
出力例:
Id Name State ------------------------------------ 2 myvagrants_default running
または、vagrant status
を使用します コマンド:
$ vagrant status
4.2。 Virt-managerなどのKVM管理GUIアプリケーションからも確認できます。 。
5。トラブルシューティング
別のVagrantボックスがすでに別のプロバイダー(virtualboxなど)を使用している場合、新しいVMを起動しようとすると、次のエラーメッセージが表示されます。
$ vagrant up --provider libvirt An active machine was found with a different provider. Vagrant currently allows each machine to be brought up with only a single provider at a time. A future version will remove this limitation. Until then, please destroy the existing machine to up with a new provider. Machine name: default Active provider: virtualbox Requested provider: libvirt
上記の出力で述べたように、Vagrantは一度に1つのプロバイダーのみでVMを実行できます。この制限は、将来のバージョンで解決される可能性があります。
別のプロバイダーで別のVMを実行する前に、まず次のコマンドを使用して既存のアクティブなマシンを削除します。
$ vagrant destroy
「y」と入力し、Enterキーを押して、デフォルトのアクティブなマシンを削除します。
default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying VM and associated drives...
次に、新しいプロバイダー(この場合はKVM)でVMを起動します。
$ vagrant up --provider libvirt
6。結論
このガイドでは、LinuxでlibvirtKVMプロバイダーでVagrantを使用する方法を学びました。また、仮想マシンがLibvirtKVMで実行されているかどうかを確認する方法も確認しました。