【超入門】Vagrantで仮想マシンを動かす
はじめに
Vagrantの入門として、超基本的な使い方の解説と実際にCentOSとUbuntuの仮想マシンを構築したいと思います。
Vagrantfileについても基本だけ触れたいと思います。
Vagrantとは
Vagrantとは、仮想マシンを簡単に構築、管理できるツールとなります。
仮想マシン自体の構築をするわけではないので、Virtual BoxやVMWareなどの仮想化ソフトと一緒に動くようになっています。
Vagrantには以下のような特徴があります。
- 仮想環境を簡単に構築できる
- Vagrantfileを作成すれば同じ環境を何度も構築できる
- チームで同じ環境をそれぞれの端末で構築できる
- テストのための使い捨ての環境を何度も同じ環境で構築できる
Vagrantのインストール
Vagrantで仮想マシンを構築するためにはVirtual Boxが必要なため、下記からダウンロードしてインストールしておきます。
Downloads – Oracle VirtualBox
Virtual Boxがインストールされていれば、Vagrantを下記からダウンロードしてインストールします。
Install | Vagrant | HashiCorp Developer
Explore Vagrant product documentation, tutorials, and examples.
Vagrantがインストールされたかは、下記のコマンドで確認します。
1vagrant -v
基本的な使い方
まずはVagrantの超基本的な使い方について解説します。
まずは、Vagrantを利用するためのディレクトリを作成し,そこでVagrantの初期化をします。
初期化ではBoxと呼ばれる仮想マシンのベースイメージを指定して、初期化します。ここでは、hashicorp/bionic64
というBoxを指定してます。
1❯ vagrant init hashicorp/bionic64
初期化が完了すると、Vagrantfile
というファイルが作成されます。
Vagrantfile
が作成されたら、仮想マシンの起動をします。
1❯ vagrant up
仮想マシンが起動したら、sshできるようになります。公開鍵の登録などをしなくても、vagrant ssh
ですぐにsshできるようになっています。
1❯ vagrant ssh
仮想マシンでの作業が終われば、仮想マシンを削除、またはシャットダウンします。
1# 削除
2❯ vagrant destroy
1# シャットダウン
2❯ vagrant halt
CentOSを動かしてみる
実際にCentOSを動かしてみます。
任意のディレクトリを作成し、CentOSのBoxを指定してvagrantの初期化をします。
1❯ vagrant init centos/7
長めのコメントが含まれていますが、下記のようなVagrantfile
が作成されます。
1Vagrant.configure("2") do |config|
2 config.vm.box = "centos/7"
3end
仮想マシンを起動します。
1❯ vagrant up
あとはsshして仮想マシン上で作業するだけです。sshするとvagrantというユーザでsshしていることがわかります。
1❯ vagrant ssh
2[vagrant@localhost ~]$
利用後は仮想マシンを削除、もしくはシャットダウンします。
1❯ vagrant destroy
1❯ vagrant halt
仮想マシンを削除しても、Vagrantfileは残るので、再度vagrant up
すれば仮想マシンが起動します。
Ubuntuを動かしてみる
次は、Ubuntuを動かしてみます。
任意のディレクトリを作成し、UbuntuのBoxを指定してvagrantの初期化をします。
1❯ vagrant init ubuntu/xenial64
CentOSと同じように、下記のようなVagrantfile
が作成されます。
1Vagrant.configure("2") do |config|
2 config.vm.box = "ubuntu/xenial64"
3end
仮想マシンを起動します。
1❯ vagrant up
sshして仮想マシンに入ります。
1❯ vagrant ssh
2Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-189-generic x86_64)
3
4 * Documentation: https://help.ubuntu.com
5 * Management: https://landscape.canonical.com
6 * Support: https://ubuntu.com/advantage
7
80 packages can be updated.
90 updates are security updates.
10
11New release '18.04.5 LTS' available.
12Run 'do-release-upgrade' to upgrade to it.
13
14
15vagrant@ubuntu-xenial:~$
利用後は仮想マシンを削除、もしくはシャットダウンします。
1❯ vagrant destroy
1❯ vagrant halt
Vagrantfileの設定
vagrant init
で作成されるVagrantfile
について簡単に解説します。
Vagrantfile
とは、仮想マシンの構築時の設定を記述するファイルです。
Boxの指定やネットワークの設定、sshの設定など仮想マシン構築時の設定を記述することでvagrant up
したときに同じ設定の仮想マシンを簡単に構築できるようになっています。
構成のバージョン
下記の部分は構成のバージョンが2
であることを示しています。この中に各種設定を記述していきます。
1Vagrant.configure("2") do |config|
2 # ...
3end
マシンの設定
config.vm
はマシンの設定ができます。
例えば、
config.vm.box
config.vm.network
などがあります。
1Vagrant.configure("2") do |config|
2 config.vm.box = "ubuntu/xenial64"
3end
他にも色々設定があります。
Vagrantfile | Vagrant | HashiCorp Developer
The primary function of the Vagrantfile is to describe the type of machine required for a project, and how to configure and provision these machines. Vagrantfiles are called Vagrantfiles because the actual literal filename for the file is "Vagrantfile".
まとめ
Vagrantを利用すると、
- 仮想環境を簡単に構築できる
- Vagrantfileを作成すれば同じ環境を何度も構築できる
- チームで同じ環境をそれぞれの端末で構築できる
- テストのための使い捨ての環境を何度も同じ環境で構築できる
参考
- Documentation | Vagrant by HashiCorp
- hashicorp/vagrant: Vagrant is a tool for building and distributing development environments.