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

Vagrantチュートリアル–LinuxでVagrantを使い始める

このVagrantチュートリアルでは、Vagrant、vagrant box、vagrantfile、プロビジョニングツール、Linuxオペレーティングシステムにvagrantをインストールする方法、そして最後にコマンドラインから仮想マシンを作成および管理するためのいくつかの基本的なvagrantコマンドについて学習します。

1。 Vagrantの概要

Vagrant は、仮想ソフトウェア開発環境を構築および保守するためのオープンソースソフトウェアです。クリーンで、構成が簡単で、再現性があり、ポータブルな開発環境を提供します。つまり、Vagrantを使用すると、どこでも使用できるユニバーサルソフトウェア開発環境を簡単かつ迅速に展開できます。 Vagrantは、単に「私のマシンで動作する」という言い訳を排除します。なぜなら、誰もが同じ構成のセットで同じ環境で作業しているからです。使用しているOSは関係ありません。

Vagrantは、開発者が共通のプロジェクトで作業するための同一の共同作業環境をセットアップするためによく使用されます。必要なすべての依存関係とその構成設定を単一の使い捨て環境に分離します。他の開発者が同じ構成ファイルで開発環境を作成すると、同じ設定で同じ環境を取得します。

Vagrantは、 Rubyで記述されたクロスプラットフォームアプリケーションです。 言語。 GNU / Linux、Mac OS、MicrosoftWindowsをサポートしています。 Hashicorpによって開発されました MITでリリースされました ライセンス。

1.1。 Vagrant box

「ボックス」は、Vagrant環境のフォーマットおよび拡張機能です。 Vagrantボックスは単なるベースイメージです。それらは、VirtualboxイメージまたはVMwareイメージ、あるいはAmazon Machine Image(AMI)のようなクラウドプロバイダーのイメージである可能性があります。 Vagrant Boxを他のシステムにコピーして、現在の開発の正確なレプリカをセットアップできます。

Vagrant Cloudでダウンロードできる事前構成済みのVagrantボックスが多数あります。 パブリックリポジトリ。事前設定されたボックスを使用したくない場合は、好みに応じてボックスを作成し、このリポジトリを介してすべてに配布します。

1.2。 Vagrantfile

オペレーティングシステムとソフトウェアの要件は、「vagrantfile」という名前の構成ファイルで定義されています。このファイルは、Vagrantボックスと一緒に配布されます。 Vagrantを使用してVMを初期化すると、VMはこのファイルを読み取り、それに応じて開発環境をセットアップします。したがって、vagrantfileの実際の目的は、仮想マシンのタイプと、VMを構成およびプロビジョニングする方法を説明することです。

次の詳細は、一般的なvagrantfileで定義されています。

  • オペレーティングシステムのバージョン例: Ubuntubionic。
  • 自動ボックス更新チェックを有効/無効にします。
  • ネットワーク構成;
    • ポートフォワーディング
    • プライベートネットワーク(マシンへのホストのみのアクセス)を構成します。
    • パブリックネットワーク(ブリッジネットワーク)を構成します。
  • フォルダをゲストVMと共有します。
  • 優先プロバイダーを設定します。例: virtualbox、kvm。
  • VMへのメモリの合計量を定義します。
  • シェルスクリプトまたはAnsibleなどの構成管理ツールを使用してプロビジョニングを有効にします。

1.3。プロビジョニングツール

Vagrantは、KVMやVirtualboxのようなスタンドアロンの仮想化プラットフォームではありません。これは、仮想化ソフトウェアと仮想マシンの間に位置する単なるラッパーおよびフロントエンドです。 Vagrantは、さまざまなサービスプロバイダーとプロビジョニングツールを使用して、開発環境を作成および管理します。

仮想マシンは、VirtualBox、KVM、Docker、VMwareなどの一般的な仮想化アプリケーション、およびAWS、Azure、GCEなどのクラウドサービスプロバイダーの上に構築されています。サポートされているプロバイダーの完全なリストは、こちらで確認できます。 。 Vagrantは、VirtualBox、Hyper-V、およびDockerをサポートする状態で出荷されます。 VirtualBoxはVagrantのデフォルトプロバイダーです。

仮想マシンが構築されると、単純なシェルスクリプトと、Ansible、CFEngine、Chef、Docker、Podman、Puppet、Saltなどの業界標準の構成管理ツールを使用してソフトウェアをインストールできます。ユーザーは次の構成をカスタマイズすることもできます。プロビジョニングツールを使用した要件に応じた仮想環境。

簡単に言うと、プロバイダー(VirtualBox、AWSなど)を使用して仮想環境を作成し、プロビジョナー(Ansible、Puppetなど)を使用して仮想環境をカスタマイズします。

2。 LinuxにVagrantをインストールする

Vagrantのインストールは信じられないほど簡単で簡単です。 Vagrantダウンロードページから最新バージョンをダウンロードし、オペレーティングシステムの標準手順を使用してインストールするだけです。さまざまなLinuxプラットフォームにVagrantをインストールする方法については、次のリンクを参照してください。

  • LinuxにVagrantをインストールする方法

3。 Vagrantチュートリアル-仮想マシンを作成および管理するための基本的なVagrantコマンド

ここでは、仮想化された開発をセットアップおよび管理するために必要な基本的なVagrantコマンドのみの例を示しました。 Vagrantの完全な使用法については、最後にある公式ドキュメントを参照してください。

3.1。 Vagrantプロジェクトディレクトリを作成する

まず、プロジェクトディレクトリを作成する必要があります。

myvagrantsというディレクトリを作成します 私の仮想環境の場合:

$ mkdir myvagrants

そのディレクトリにCdして、仮想マシンを構築および保存します。

$ cd myvagrants

3.2。 Vagrant環境を初期化する

次のコマンドを使用してVagrant環境を初期化します。

$ vagrant init hashicorp/bionic64

出力例:

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

上記のコマンドは、現在のディレクトリをデフォルトのVagrant環境として初期化し、ベースVagrantfileを作成します。

catを使用して、新しく作成されたvagrantfileのコンテンツを表示できます。 コマンドを実行し、構築する仮想マシンの詳細を把握します。

$ cat Vagrantfile | less

以降の手順でVMを起動すると、HashiCorpによって公開されているUbuntuバイオニックボックスがダウンロードされます。 Vagrantチームは、Bentoボックスの使用も推奨しています。 。これらはオープンソースであり、Virtualbox、VMWare、Parallelsなどの一般的なプロバイダー向けに構築されています。公式に推奨されるボックスセットは、HashiCorpとBentoの2つだけです。

3.3。仮想マシンを起動する

次に、コマンドを使用して、vagrantfile(前の手順で作成した)に従って仮想マシンを作成して起動します。

$ vagrant up

出力例:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'hashicorp/bionic64' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'hashicorp/bionic64'
    default: URL: https://vagrantcloud.com/hashicorp/bionic64
==> default: Adding box 'hashicorp/bionic64' (v1.0.282) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/hashicorp/boxes/bionic64/versions/1.0.282/providers/virtualbox.box
Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> default: Successfully added box 'hashicorp/bionic64' (v1.0.282) for 'virtualbox'!
==> default: Importing base box 'hashicorp/bionic64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date...
==> default: Setting the name of the VM: myvagrants_default_1597837509450_67666
Vagrant is currently configured to create VirtualBox synced folders with
the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant
guest is not trusted, you may want to disable this option. For more
information on this option, please refer to the VirtualBox manual:

  https://www.virtualbox.org/manual/ch04.html#sharedfolders

This option can be disabled globally with an environment variable:

  VAGRANT_DISABLE_VBOXSYMLINKCREATE=1

or on a per folder basis within the Vagrantfile:

  config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    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: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 6.0.10
    default: VirtualBox Version: 6.1
==> default: Mounting shared folders...
    default: /vagrant => /home/sk/myvagrants

上記のコマンドは、VagrantクラウドからUbuntuバイオニックボックスをダウンロードし、 "myvagrants_default_1597837509450_67666"という名前の新しい仮想マシンを作成します。 、Virtualboxに追加して、VMを自動的に起動します。

VMが実行されていても、通知は表示されません。 VMが実行されているかどうかを確認するには、仮想化アプリケーション(VirtualBoxやVirt-managerなど)を開き、VMが実行されているかどうかを確認します。

VagrantはVirtualboxをデフォルトのプロバイダーとして使用しているため、Virtualboxマネージャーから実行中のVMを確認できます。

ご覧のとおり、UbuntubionicVMはVirtualboxで実行されています。

Virt-managerなどの他のプロバイダーを使用している場合は、それを開いてVagrantマシンが実行されているかどうかを確認します。

3.4。仮想マシンへのアクセス

SSHを使用して実行中のVMに接続してアクセスできます。

コマンドを使用して実行中のVagrantボックスにSSHで接続するには、次のコマンドを実行します。

$ vagrant ssh

出力例:

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Wed Aug 24 11:56:42 UTC 2020

  System load:  0.08              Processes:           88
  Usage of /:   2.5% of 61.80GB   Users logged in:     0
  Memory usage: 11%               IP address for eth0: 10.0.2.15
  Swap usage:   0%

 * Are you ready for Kubernetes 1.19? It's nearly here! Try RC3 with
   sudo snap install microk8s --channel=1.19/candidate --classic

   https://microk8s.io/ has docs and details.

0 packages can be updated.
0 updates are security updates.


[email protected]:~$ 

3.5。ローカルファイルとゲストファイルを同期する

箱から出してすぐに使えるV​​agrantサポートファイルの同期。デフォルトでは、Vagrantはプロジェクトディレクトリ(Vagrantfileを含むディレクトリ。私の場合は ~/myvagrants)を共有します。 。)/vagrantへ ゲスト仮想マシンのディレクトリ。

/vagrantの内容を一覧表示することで確認できます 仮想マシンのディレクトリ:

[email protected]:~$ ls /vagrant/
Vagrantfile

仮想マシン内に表示されるVagrantfileは、実際には実際のホストマシンにあるVagrantfileと同じであることに注意してください。

同期が実際に機能するかどうかをテストするには、/vagrantにサンプルファイルを作成します ゲストマシンのディレクトリ:

[email protected]:~$ touch /vagrant/test.txt

VMのSSHセッションを終了します:

[email protected]:~$ logout

次に、ホストシステムのローカルプロジェクトディレクトリを確認します。同じファイルがホストマシンでも作成されていることがわかります。

[email protected]:~/myvagrants$ ls
test.txt Vagrantfile

3.6。仮想マシンのステータスを表示する

仮想環境内の仮想マシンの状態を表示するには、次のコマンドを実行します。

$ vagrant status

出力例:

Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

上記のように、VMは1つしかなく、現在実行中です。

VMの電源がオフの場合、次の出力が表示されます。

Current machine states:

default                   poweroff (virtualbox)

The VM is powered off. To restart the VM, simply run `vagrant up`

3.7。すべての仮想環境のステータスを表示する

次のコマンドを使用して、システム上のすべての既知の仮想環境に関する情報を表示できます。

$ vagrant global-status

出力例:

id       name    provider   state    directory                           
-------------------------------------------------------------------------
2086482  default virtualbox poweroff /home/sk/myvagrants                 
 
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

上記のコマンドは、VM ID、名前、プロバイダー、VMの状態、および仮想環境ディレクトリを一覧表示します。

出力がキャッシュされ、正しくない場合があります。したがって、次のコマンドを実行して無効なエントリを削除し、仮想環境の最新のステータスを取得します。

$ vagrant global-status --prune

3.8。仮想マシンを一時停止する

実行中のVMを一時停止するには、次を実行します。

$ vagrant suspend

出力例:

==> default: Saving VM state and suspending execution…

3.9。仮想マシンを再開する

現在の仮想環境で一時停止中のVMを再開するには、次のコマンドを実行します。

$ vagrant resume

出力例:

==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

3.10。仮想マシンを再起動します

実行中のVMを再起動するには、次の手順を実行します。

$ vagrant reload

このコマンドは、VMを正常にシャットダウンし、再起動します。

3.11。仮想マシンの停止/シャットダウン

実行中のVMを停止またはシャットダウンするには、次の手順を実行します。

$ vagrant halt

3.12。仮想マシンを削除する

VMのすべてのトレースを停止して削除するには、次のコマンドを実行します。

$ vagrant destroy

yと入力します Enterキーを押して、仮想マシンを削除します。

確認なしでVMを削除する場合は、次を実行します。

$ vagrant destroy -f

3.13。仮想マシンのリセット

ボックスを実際に削除せずに、仮想マシンを元の状態にリセットしたい場合があります。これは、VagrantBoxを何度もダウンロードすることなくクリーンな仮想環境をデプロイするのに役立ちます。

仮想マシンを元の状態にリセットするには、次の手順を実行します。

$ vagrant destroy
$ vagrant up

最初のコマンドは、実行中の仮想マシンをシャットダウンし、それに関連付けられているすべてのリソースを削除します。そして、2番目のコマンドは、既存のvagrantボックスを使用して新しい新しい仮想マシンを再作成します。

詳細については、次のリンクを参照してください:

  • Vagrant仮想マシンを元の状態にリセットする方法

3.14。任意のディレクトリからVagrantコマンドを実行する

通常、Vagrantマシンを起動、停止、リロード、プロジェクトのディレクトリから削除しますよね?はい!ただし、VagrantマシンのIDを使用して、任意のディレクトリからVagrantコマンドを実行できます。

VagrantマシンのIDを見つけるには、次のコマンドを実行します。

$ vagrant global-status

出力例:

id       name    provider state   directory                           
----------------------------------------------------------------------
ddc1a10  default libvirt shutoff /home/sk/Vagrant/Ubuntu2004         
f4904ad  default libvirt shutoff /home/sk/Vagrant/Archlinux          
831f9c0  default libvirt shutoff /home/sk/Vagrant/Gentoo             
3587422  default libvirt shutoff /home/sk/Vagrant/Rhel8              
b2279ad  default libvirt shutoff /home/sk/Vagrant/Almalinux8         
 
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

上記の出力にあるように、vagrant global-status コマンドは、システム内のすべての既知の仮想環境の詳細を表示します。上記の出力の最初の列は、各VagrantマシンのIDを示しています。

IDは、任意のディレクトリのVagrantコマンドで直接使用できます。たとえば、任意のディレクトリからVagrantマシンを起動するには、次のように使用できます。

$ vagrant up b2279ad

これにより、ID b2279adのvagrantマシンが起動します 。

同様に、他のVagrantコマンドも使用できます。

$ vagrant status b2279ad
$ vagrant ssh b2279ad
$ vagrant halt b2279ad
$ vagrant destroy b2279ad

3.15。 Vagrantボックスを一覧表示する

Vagrantとともにインストールされる利用可能なすべてのボックスを一覧表示するには、次のコマンドを実行します:

$ vagrant box list

出力例:

hashicorp/bionic64 (virtualbox, 1.0.282)

著者名、ウェブサイト、リポジトリ、説明などの追加のボックスの詳細を表示する場合は、-iを使用します フラグ:

$ vagrant box list -i

出力例:

generic/alpine38    (virtualbox, 3.1.16)
  - Author: Ladar Levison
  - Website: https://roboxes.org/
  - Artifacts: https://vagrantcloud.com/generic/
  - Repository: https://github.com/lavabit/robox/
  - Description: Basic virtual machine images, for a variety of operating systems/hypervisors, and ready to serve as base bxoes.

3.16。 Vagrantボックスが古くなっていないか確認してください

Vagrant環境で使用しているボックスが古くなっているかどうかを確認するには、Vagrant環境、つまりプロジェクトのディレクトリに移動します。

$ cd myvagrants/

実行:

$ vagrant box outdated
Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date…

3.17。 Vagrantボックスを更新する

古いボックスがある場合は、次のように更新できます。

$ vagrant box update

出力例:

==> default: Checking for updates to 'hashicorp/bionic64'
default: Latest installed version: 1.0.282
default: Version constraints:
default: Provider: virtualbox
==> default: Box 'hashicorp/bionic64' (v1.0.282) is running the latest version.

3.18。 Vagrantボックスをダウンロード

vagrant init コマンドは、Vagrantfileで定義されたそれぞれのVagrantボックスをダウンロードすることにより、Vagrant環境を初期化して開始します。

Vagrantボックスを手動でダウンロードし、そのvagrantfileを編集して、起動することもできます。

Vagrantボックスをダウンロードするには、次のコマンドを実行します:

$ vagrant box add bento/debian-10.5

上記のコマンドは、Bentoによって公開されたDebian10.5バージョンボックスをダウンロードします。現在使用しているプロバイダー(virtualboxやvmwareなど)を選択するように求められます。いずれかを選択してEnterキーを押すだけで、ボックスをダウンロードできます。

出力例:

==> box: Loading metadata for box 'bento/debian-10.5'
    box: URL: https://vagrantcloud.com/bento/debian-10.5
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2
==> box: Adding box 'bento/debian-10.5' (v202008.16.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/bento/boxes/debian-10.5/versions/202008.16.0/providers/virtualbox.box
Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> box: Successfully added box 'bento/debian-10.5' (v202008.16.0) for 'virtualbox'

利用可能なボックスを一覧表示することで確認できます:

$ vagrant box list

出力例:

bento/debian-10.5 (virtualbox, 202008.16.0)
hashicorp/bionic64 (virtualbox, 1.0.282)

ダウンロードしたすべてのVagrantボックスは、 ~/.vagrant.d/boxesで入手できます。 ホストシステムのディレクトリ。

3.19。 Vagrantボックスのサイズを表示する

前のセクションで述べたように、ダウンロードされたVagrantボックスは ~/.vagrant.d/boxesに保存されます。 ディレクトリ。

次のコマンドを使用して、このディレクトリにダウンロードされたすべてのボックスのリストを表示できます。

$ ls ~/.vagrant.d/boxes
almalinux-VAGRANTSLASH-8          generic-VAGRANTSLASH-debian10
archlinux-VAGRANTSLASH-archlinux  generic-VAGRANTSLASH-gentoo
centos-VAGRANTSLASH-8             generic-VAGRANTSLASH-rhel8

個々のVagrantボックスのサイズを確認するには、du -h 以下のようなフラグ:

589M	/home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453/libvirt
589M	/home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453
589M	/home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux
1.1G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2/libvirt
1.1G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2
1.1G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8
1.6G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24/libvirt
1.6G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24
1.6G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo
1.6G	/home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0/libvirt
1.6G	/home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0
1.6G	/home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8
998M	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4/libvirt
998M	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4
998M	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10
628M	/home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724/libvirt
628M	/home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724
629M	/home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8
6.4G	/home/sk/.vagrant.d/boxes

合計使用量を表示するには、次を実行します:

$ du -sh ~/.vagrant.d/boxes
6.4G	/home/sk/.vagrant.d/boxes

3.20。ダウンロードした.boxファイルをvagrantに追加します

多くのLinuxディストリビューションは、事前構成されたVagrantボックスを介して配布されます。そのため、vagrantボックスをすばやく取得し、それぞれの仮想化アプリケーションを使用して実行できます。詳細については、次のガイドを参照してください。

  • Linuxでダウンロードした.boxファイルをVagrantに追加する方法

3.21。 Vagrantボックスを使用して仮想マシンを作成する

新しくダウンロードしたボックスを使用して新しいVMを作成するには、プロジェクトのディレクトリに移動し、次のコマンドを使用してvagrant環境を初期化します。

$ vagrant init

ヘッズアップ :新しいVagrant環境を初期化する前に、既存のVagrantfileを削除してください。

これにより、現在のディレクトリに新しいVagrantfileが作成されます。

Vagrantファイルを編集してVMの詳細を更新し、次の行を置き換えます。

Vagrant.configure("2") do |config|
[...]
config.vm.box = "base"
[...]

次のように:

config.vm.box = "bento/debian-10.5"

次の行を追加することで、新しいVMのバージョンを明示的に指定できます。

config.vm.box = "bento/debian-10.5"
config.vm.box_version = "1.0"

ダウンロードURLを指定することもできます:

config.vm.box = "bento/debian-10.5"
config.vm.box_version = "1.0"
config.vm.box_url = "https://app.vagrantup.com/bento/boxes/debian-10.5/"

次に、次のコマンドを使用して、このVagrantfileに基づいてVMを作成して起動します。

$ vagrant up

または、Vagrant環境を初期化するときに、ボックス名を直接指定することもできます。これは、複数のVagrantBoxがある場合に役立ちます。

まず、コマンドを使用して利用可能なvagrantボックスを一覧表示します:

$ vagrant box list

出力例:

Fedora33            (libvirt, 0)
archlinux/archlinux (virtualbox, 20201201.10292)
fedora33            (virtualbox, 0)
generic/alpine38    (virtualbox, 3.1.16)
oraclelinux/7       (virtualbox, 7.9.184)
oraclelinux/8       (libvirt, 8.3.183)

「generic/alpine38」という名前のボックスから仮想マシンを作成するとします。これを行うには、次のコマンドを実行します:

$ vagrant init generic/alpine38

このコマンドは、新しいVagrantfileを作成し、指定されたボックス構成でVagrant環境を初期化します。 Vagrantfileを手動で編集してボックスの詳細を更新する必要はありません。

次に、コマンドを使用して仮想マシンを起動します:

$ vagrant up

3.22。 LibvirtKVMプロバイダーでVagrantを使用する

すでに述べたように、VagrantはデフォルトでVirtualboxを使用して仮想マシンを実行します。 Libvirt KVMなどの別のプロバイダーを使用するようにVagrantに指示することもできます。 、 vagrant-libvirtを使用してVMを実行する プラグイン。このプラグインは、LibvirtプロバイダーをVagrantに追加し、VagrantがLibvirtを介してマシンを制御およびプロビジョニングできるようにします。 libvirtをVagrantプロバイダーとして使用する方法については、次のガイドを参照してください。

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

3.23。 Vagrantでネットワークを構成する

ゲストマシンとホストシステム間のネットワークアクセスを提供するために、Vagrantは次の3つのオプションを提供します。

  1. ポートフォワーディング
  2. プライベートネットワーク(ホストのみのネットワーク)
  3. パブリックネットワーク(ブリッジネットワーク)

各オプションには独自の浮き沈みがあります。次のガイドで説明されているように、Vagrantネットワークオプションのいずれかまたはすべてを構成できます。

  • Vagrantでネットワークを構成する方法

3.24。ホストシステムからVagrantマシンのIPアドレスを検索する

VagrantマシンのIPアドレスを見つけるために、通常はSSHで接続し、ipを使用してそのIPアドレスを見つけます。 またはifconfig コマンド。次のリンクで説明されているように、実行中のVagrantマシンのIPアドレスをホストから直接取得することもできます。

  • ホストからVagrantMachineIPアドレスを見つける方法

3.25。 VagrantマシンのメモリとCPUを増やす

Vagrantマシンにパフォーマンスの問題がありますか?メモリまたはCPUが不足している可能性があります。次のリンクに示すように、VagrantマシンにRAMとCPUコアを追加するだけで、パフォーマンスが向上します。

  • VagrantマシンのメモリとCPUを増やす方法

3.26。古いVagrantボックスを削除する

Vagrantボックスのいくつかのバージョンをダウンロードした可能性があり、それらのいくつかはかなり古い可能性があります!不要になった場合は、次のリンクで説明されているように、インストールされている古いバージョンのVagrantボックスを安全に削除できます。

  • Linuxで古いVagrantボックスを削除する方法

3.27。 Vagrantボックスを完全に削除する

hashicorp / bionic64などのvagrantボックスを削除するには、次のコマンドを実行します。

$ vagrant box remove hashicorp/bionic64

yと入力します ENTERを押します 削除を確認するには:

Box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: 20864823c72f45568d251070b5ce2661)

Are you sure you want to remove this box? [y/N] y
Removing box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox'…

ボックスの名前がわからない場合は、次のコマンドを実行して、インストールされているすべてのボックスを一覧表示します。

$ vagrant box list

この段階で、Vagrantの使用法の基本を学んだはずです。 Vagrantは広大なトピックであり、今後の記事でできる限り取り上げようと思います。しばらくお待ちください!

4。 Vagrantのトラブルシューティング

このセクションでは、いくつかの一般的なVagrantの問題について説明します。

4.1。 Vagrantは非常に早い段階で初期化に失敗しました

Vagrantマシンが起動しませんでしたか?心配ない!これは、一般的な浮浪者の問題の1つです。これは、古いプラグインが原因であるか、VagrantHOMEディレクトリが別の場所に移動した可能性があります。この問題を修正するには、次のガイドを参照してください。

  • Linuxで「Vagrantが非常に早い段階で初期化に失敗しました」エラーを修正する方法

4.2。ストレージファイルにアクセスできません。KVMLibvirtでアクセスが拒否されましたエラー

場合によっては、Vagrantマシンを起動せず、次のようなエラーが発生することがあります-Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied

このエラーは通常、qemuの場合に発生します ユーザーには、Libvirtストレージディレクトリへの読み取り権限がありません。この問題を修正するには、次のガイドを参照してください。

  • [解決済み]ストレージファイルにアクセスできません、KVMLibvirtでアクセスが拒否されましたエラー

5。結論

In this comprehensive guide, we learned what is Vagrant and the vagrant terminologies such as vagrant boxes, vagrantfile, and provisioning tools. We also learned how to install vagrant on Linux operating systems and finally we discussed a few basic vagrant commands to create and manage virtual machines from command line in Linux.

If you're a DevOps engineer, knowing how to use Vagrant will be very useful. Vagrant is one of the important tool that you should have on your system.


Linux
  1. Linuxファイアウォールの使用を開始する

  2. Linuxtacコマンドの使用を開始する

  3. LinuxでPostgreSQLを使い始める

  1. PiFlashの使用を開始する:LinuxでRaspberryPiを起動する

  2. Linuxcatコマンドの使用を開始する

  3. LinuxでSSHを使い始める

  1. Linux用のbtrfsの使用を開始する

  2. GNOMEを使い始めるためのアドバイス

  3. GNOMELinuxデスクトップの使用を開始する