GNU/Linux >> Linux の 問題 >  >> Linux

LibvirtKVMプロバイダーでVagrantを使用する方法

デフォルトでは、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で実行されているかどうかを確認する方法も確認しました。


Linux
  1. libvirtでVagrantを使用する方法

  2. Linux 上の Python で export を使用する方法

  3. Linux in C で共有メモリを使用する方法

  1. findコマンドで正規表現を使用するには?

  2. パイプで「サブプロセス」コマンドを使用する方法

  3. デフォルトの pip の代わりに python2.7 pip を使用する方法

  1. 例を使用してLinuxでIPコマンドを使用する方法

  2. Linuxエイリアスコマンド:例で使用する方法

  3. 例でethtoolコマンドを使用する方法