[仮想環境]Vagrantを使う

はじめに

今回からVagrantについて学習していきます。
本当ならばDockerについて学ぶつもりでしたが、2つの理由によりVagrantについて基礎を抑えておこうと思いました。
一つ目の理由としては、ドットインストール先生がDockerの講義でVagrantを使ってレクチャーをしているため、まずはこちらを学習しておく必要があると思ったためです。

二つ目の理由としては、EC2インスタンスの立ち上げや構築をVagrantから行えるという記事を目にしたため、やらない理由がないからですね。

そして三つ目の理由としては、職場の別の部署でVagrantとVirtualBoxとDocker使ってるよという話してたのを聞いてしまったので、意地でもVagrantに触れておこうと思った次第です。
しかし、Dockerは大学院時代に触れていましたがVagrantは全く触れたことがありませんでした。ということで今回軽く体験してみることにします。

ちなみに今回からはmacOSに慣れていこうと思っているので、作業環境=macOSとしてブログ更新&ドットインストール閲覧はWindowsマシンで行うように分担します。

今回はドットインストールの講義ではなく参考サイト様の手順どおりやってみました。

 

Vagrantとは

Vagrantは仮想環境を簡単に構築できるツールという認識です。(大雑把な認識としては間違ってないはず…。)
VirtualBoxやVMWareなどの仮想マシンを立ち上げるツールと組み合わせて使うと、事前に決めておいた環境設定で立ち上がったりして便利って感じのものだと思います。

調べた限りではVirtualBoxと組み合わせる記事や紹介が多いので、基本的にはVagrant+VirtualBoxの組み合わせなんですかね。しかし既にAWSでEC2の使い方を学習しておりますので、せっかくなので今回はEC2と組み合わせて学習をしたいと思います。(多分できるはず・・・?)

ちなみに公式ページらしきものはこちらですね!

 

インストール

まずはVagrantのダウンロードを行います。
ダウンロードはこちらから行えます。

ダウンロードを見てみるとWindowsやmacOSの他に各種Linux系にも対応しているようですね。
今回はmacOSでの開発環境を整えようと思いますので、「macOS X」の項目でダウンロードします。


ダウンロードが終わったら「vagrant.pkg」を押してインストールを実行します。私の環境ではインストールにはそれほど時間はかかりませんでした。


ということでインストール完了です。


導入できているのか確認するためにコンソールを立ち上げます。

$ vagrant –version

きちんとバージョンが表示されていれば使用可能な状態です。

 

AWSの利用環境を構築する

VagrantでAWSの対応をするためには専用のプラグインを導入する必要があります。
下記のコマンドを実行してAWS環境をインストールしましょう

$ vagrant plugin install vagrant-aws

完了を確認したら続いてダミーボックスの登録をします。
コイツの実態は空のboxみたいですね。

$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

続いてvagrant init でVagrantfileを生成します。
VagrantfileはEC2で立ち上げるインスタンスの設定を行うファイルです。

$ vagrant init


ちなみに作業の為にmkdirで作業用のディレクトリを作成して作業しています。
この後はVagrantfileを編集していくのですが、その前にAWSの管理画面側でやることがあります。

 

AWS側の設定

VagrantでEC2のインスタンスを立ち上げるためには、アクセスキーとシークレットアクセスキーの発行が必要です。そのためにAWSの管理画面から準備が必要となります。


IAMユーザーの管理画面からアクセス用のユーザーを作成します。
今回は新規作成なので「ユーザーの追加」を行います。


プログラムによるアクセスを選択してアクセスキーとシークレットキーを作成できるようにします。
アクセス権限については、いったんフルアクセス可能なポリシーにしてしまいました。
しかし安全性から考えるときちんとカスタムしておいたほうが良いと思います。
※筆者はここでAmazonEC2FullAccessでないものをアタッチしてしまい、数時間レベルでつまずいてしまいました!!きちんと確認しましょう!!


ということで目的のアクセスキーとシークレットアクセスキーが手に入りました。
ちなみに閉じてしまうと二度とシークレットアクセスキーは閲覧できません。
その場合は再発行が必要になりますので注意しましょう!

EC2の管理画面からアクセス用のキーペアも作成しておきます。

もちろん使用する前にパーミッションを変えておくことを忘れないようにしましょう。
そしたらAWS側での準備は完了なので、Vagrantfileの編集を行います。

 

Vagrantfileの編集

ひとまずほぼ参考サイト様のままです。
現状ではインスタンスを立ち上げるだけの内容ですが、ElasticIPを発行して自動的に結びつけることもできるようなので一度Vagrantfileを書いてしまえばインスタンスを立ち上げる際の工数が大幅に減らせますね!

Vagrant.configure(2) do |config|

config.vm.box = “dummy”
config.vm.provider :aws do |aws, override|
aws.access_key_id = “hoge” # アクセスキー
aws.secret_access_key = “hoge” # シークレットアクセスキー
aws.keypair_name = “hoge” # キーペアの名前

aws.ami = “ami-hogehoge” # AMIのID
aws.instance_type = “t2.micro” # 無料枠なのでt2.micro
aws.security_groups = [ ‘hogehoge’ ] # セキュリティ名(IDでもよいっぽい?)
aws.region = “ap-northeast-1” # 東京

aws.region = {“Name” => “vagtant-test”} # インスタンスの設定とか決められるっぽい

override.ssh.username = “ec2-user”
override.ssh.private_key_path = “~/aws_project/hoge.pem” # プライベートキーへのパス
end
end

インスタンスがなかなか立ち上げられずに、このファイルはかなり弄ったのですが単なるIAMでの権限ミスでした・・・。
ちなみに権限の付与をミスっていたときはインスタンスを立ち上げようとしたときに
InvaidParameterValue => Value () for parameter …
というエラーメッセージが出てました。
なんで値が取れてないんだーって試行錯誤してたら、そもそも権限の問題でアクセスできてなかったようです。

 

インスタンスの実行

インスタンスの実行コマンドは下記通りです。

$ vagrant up –provider=aws

ちなみに私の場合はファイル共有の設定をするようにエラーメッセージで促されたのでmacOS側で設定を行ってから実行しています。


インスタンスの立ち上げは結構時間が掛かりますね!


管理画面側でみるときちんとインスタンスが立ち上がっていることが分かると思います。

インスタンスへのssh接続は

$ vagrant ssh

にて行えます。

インスタンスの停止は

$ vagrant halt

インスタンスの削除は

$ vagrant destroy

みたいですね!


$ vagrant destroy の実行後、インスタンスがシャットダウンしていることが分かります。一連の処理が終わるとインスタンスは項目からも削除されます。

 

おわりに

今回は初めてVagrantを触ってみたのですが、思ったより扱いやすそうな印象ですね!
Vagrantfileで設定を一通り書き込んでしまえば、仮想環境を立てるときの工数が大幅に減らせることができますので、きちんと活用していきたい所です。
まだ理解が充分ではない所もありますが、ここからは徐々に使い慣れていければと思います。
いずれ慣れてきた頃に、この記事での誤った説明や解釈は修正するかもしれません!

さて、次回からはDockerの復習を始める予定です。
ドットインストール先生、よろしくお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)