VPS上にVagrantで開発環境を構築しよう

開発環境の構築など、仮想マシンを管理する際のツールとして、「Vagrant」は比較的使われています。今回は、VPSにVagrantをインストールして、AWSのインスタンスを管理する方法を紹介します。

 

■各種の仮想環境を管理するVagrant

■Vagrantのインストール

■Amazon EC2用のプラグインのインストール

■接続に必要な情報を得る

■Vagrantfileの作成

■インスタンスの管理

 

 

■各種の仮想環境を管理するVagrant

サーバー関係の話題の1つとして、「Vagrant」を聞いたことがある方もいるのではないでしょうか。Vagrantは、VirtualBox(※)をはじめとして、各種の仮想マシンの生成/破棄/起動/終了などを、仮想マシンの外から管理するツールです。

 

(※)VirtualBox

WindowsやMacの上で、仮想マシンを動作させるためのソフトです。Oracleからオープンソースで提供されています。

 

NTTPCのVPSと組み合わせるなら、VagrantをWindowsやMacのパソコンにインストールし、それでインスタンスの生成などを管理したいところです。しかし現状では、そのために必要な機能(インスタンスを操作するAPIや、Vagrantのプラグイン)を実装していません。

そこで、VPSにVagrantをインストールし、AWSのAmazon EC2のインスタンスを管理する方法を紹介します。なお、本記事では、Amazon EC2の利用経験があって、ある程度理解しているものとして話を進めます。

 

 

■Vagrantのインストール

まず、Vagrantをインストールします。

本記事執筆時点では、Vagrantの最新版はバージョン1.9.5でした。この場合、次のコマンドを実行すると、Vagrantをインストールすることができます。

 

リスト Vagrantのインストール

sudo yum -y install
https://releases.hashicorp.com/vagrant/1.9.5/vagrant_1.9.5_x86_64.rpm

 

今後の、Vagrantのバージョンが上がった場合、上記の「1.9.5」の部分を書き換えれば、最新版のVagrantをインストールできると思われます。

 

 

■Amazon EC2用のプラグインのインストール

VagrantはもともとVirtualBoxの仮想マシンを管理するソフトで、それ以外の仮想マシンを管理したい場合は、プラグインが必要になります。

そこで、Amazon EC2用のプラグインをインストールします。これは次のコマンドで行うことができます。

 

リスト Amazon EC2用のプラグインをインストールする

sudo vagrant plugin install vagrant-aws

 

 

■接続に必要な情報を得る

ここでは例として、Amazon EC2に新しいインスタンスを起動する処理を、Vagrantで行えるようにしてみます。その場合、VagrantからAmazon EC2に接続するために、次の情報が必要になります。

 

・アクセスキーとシークレットアクセスキー

・AMI(Amazon Machine Image)のID(「ami-XXXXX」のような形式)

・VPCのサブネットID(「subnet-XXXXX」のような形式)

・セキュリティグループID(「sg-XXXXX」のような形式)

・キーペアの名前

 

 

・アクセスキーとシークレットアクセスキー

アクセスキーとシークレットアクセスキーは、AWSを外部から操作するために必要になります。Amazon EC2をコンソールだけで操作している方は、これらをまだ取得していない状態ですので、次のページを参照して取得しておきます。

https://aws.amazon.com/jp/developers/access-keys/

 

・AMIのID

Amazon EC2では、さまざまなAMI(Amazon Machine Image)をもとに、インスタンスを起動することができます。Vagrantからインスタンスを起動する場合は、AMIのIDをあらかじめ調べておきます(「ami-XXXXX」のような形式)。

AMIを検索する方法は、次のページをご参照ください。

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/finding-an-ami.html#finding-an-ami-console

 

検索結果にはAMIのIDも出ていますので、使いたいAMIのIDをメモしておきます。

 

・その他のID

あとのIDは、AWSのコンソールから得ることができます。

 

 

■Vagrantfileの作成

Vagrantでは、仮想マシンの起動に関する設定を、「Vagrantfile」という名前のファイルに記述します。Vagrantfileを保存するディレクトリをカレントディレクトリにした後、「nano Vagrantfile」のコマンドで、Vagrantfileを新規作成して編集する状態にします。

Amazon EC2のインスタンスを作成して起動するためのVagrantfileは、次のリストのようになります。

 

リスト Vagrantfileの内容

Vagrant.configure("2") do |config|

   config.vm.box = "dummy"

   config.vm.box_url

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

   config.ssh.pty = true

   config.vm.synced_folder ".", "/vagrant"

   config.vm.provider :aws do |aws, override|

     aws.access_key_id = "アクセスキー"

     aws.secret_access_key = "シークレットアクセスキー"

     aws.region = "ap-northeast-1"

     aws.subnet_id = "サブネットID"

     aws.security_groups = ["セキュリティグループID"]

     aws.associate_public_ip = true

     aws.ami = "AMIのID"

     aws.instance_type = "インスタンスのタイプ"

     aws.keypair_name = "キーペアの名前"

     override.ssh.username="ec2-user"

     override.ssh.private_key_path = '~/PEMファイルの名前'

     aws.tags = {

      'Name' => 'vagrant-vm',

     }

   end

 end

 

リスト内で、次の各箇所は、実際の値に置き換えます。

・アクセスキー

・シークレットアクセスキー

・サブネットID

・セキュリティグループID

・AMIのID

・キーペアの名前

 

「インスタンスのタイプ」の箇所は、作成したいインスタンスのタイプに合わせて、「t2.micro」などの文字列に置き換えます。

また、「PEMファイルの名前」は、Amazon EC2のキーペア機能で作成した秘密鍵のファイル名に置き換えます。そして、その秘密鍵のファイルは、Vagrantfileと同じディレクトリにアップロードします。

 

 

■インスタンスの管理

Vagrantfileができたら、Vagrantのコマンドを使って、Amazon EC2のインスタンスを管理することができます。

 

・インスタンスの起動

インスタンスを初めて起動する際には、Vagrantfileがあるディレクトリをカレントディレクトリにして、次のコマンドを実行します。インスタンスが生成されてから起動します。

 

リスト インスタンスの起動

vagrant up --provider=aws

 

また、二回目以降は「vagrant up」のコマンドを実行すれば、作成済みのインスタンスが起動します。

 

・インスタンスにSSHで接続する

インスタンスを操作する際には、SSHで接続します。これは次のコマンドで行うことができます。

 

リスト インスタンスにSSHで接続

vagrant ssh

 

また、「vagrant ssh-config」のコマンドを実行すると、接続に関する情報を表示することもできます。

SSHでの作業が終わったら、「exit」のコマンドを実行して、VPSのターミナルに戻ります。

 

・インスタンスの停止と破棄

インスタンスでの作業を終えて、インスタンスを停止したい場合は、次のコマンドを実行します。

 

リスト インスタンスの停止

vagrant halt

 

また、インスタンスを今後使わなくて破棄したい場合は、次のコマンドを実行します。

 

リスト インスタンスの破棄

vagrant destroy

 

 

 

 

 

うちだ
サービスクリエーション本部所属        (監修:とみなが)       

オススメ記事

関連サービス

VPS VPSクラウド