Amazon Elastic Container Service (Amazon ECS) で利用するための Docker コンテナを作るのに、手元の環境に Docker がなかったので、お手軽に Vagrant 環境の上で走らせることにしました。

やりたいこと

Docker 環境のほか、 ECR (Elastic Container Registry) にコンテナを登録するために AWS Command Line Interface (AWS CLI) が必要なので、これらがインストールされた CentOS 7 環境を起動します。

前提

  • VirtualBox と Vagrant はインストール済み
  • Vagrant box は CentOS 7 + Docker の williamyeh/centos7-docker を利用
  • awscli は Vagrant のプロビジョニングでインストール

Vagrantfile

適当なフォルダを作って、 Vagrantfile を作成します。

williamyeh/centos7-docker を使わせていただくので、 config.vm.box = "williamyeh/centos7-docker" を書くだけです。

あとは後述の provision.sh を読み込んで AWS CLI をインストールさせるために config.vm.provision を指定しておきます。

このときデフォルトでは root で実行されてしまうので privileged: false をつけて vagrant ユーザーで実行するようにしておきます。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "williamyeh/centos7-docker"
  config.vm.provision "shell", path: 'provision.sh', privileged: false
end

プロビジョニング用シェルスクリプト

Vagrant 起動後に自動的に走らせたいスクリプトを記述します。今回は上記で書いた provision.sh というファイル名にします。

今回は、 awscli のインストールに必要な pip とそれに必要な epel リポジトリをインストールしてから、 AWS CLI をインストールしています。

AWS CLI のインストール方法は AWS CLI の公式ページ の手順を参考にしました。

#!/bin/env bash

sudo yum update -y
sudo yum install -y epel-release
sudo yum install -y python-pip
sudo pip install pip --upgrade
pip install awscli --user --upgrade

Vagrant 起動

Vagrant を起動します。起動後に自動的にプロビジョニングが行われます。

vagrant up

すべて完了したら vagrant ssh で VM に入り、 aws --version を叩いてバージョン番号が表示されれば OK です。

vagrant@localhost ~ $ aws --version
aws-cli/1.16.14 Python/2.7.5 Linux/3.10.0-327.28.3.el7.x86_64 botocore/1.12.4
おすすめの記事