ホーム >  AWS >  【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant 環境を作成【オンプレミス】

投稿日:   |  最終更新日:

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant 環境を作成【オンプレミス】

AWSLinux仮想環境

MacbookにVirtualBOXをインストールしたので、Vagrantで使えるAmazon Linux2環境を作ります。

MacにAmazonLinux2の仮想環境を作る

前回は、「VirtualBOX」をインストールしました。今回はMac環境に、AmazonLinux2のサンドボックスを作ります。作成したアプリを最終的にAmazon EC2にデプロイしますが、その前のオンプレミス(自社運用)として、MacPC上に仮想環境を準備します。

AWSでEC2インスタンスを立ち上げると、お金がかかります。うっかり作業ミスしたりする可能性があり、本番環境だけでは心許ないです。今回紹介する方法は、簡単な設定を試すのであればローカルマシン上で済ませたい方向けの環境です。

VagrantでAmazonLinux2を動かすには?

①AWSが公開配布しているVDIファルをダウンロードして使う方法と、②手作りでAmazon Linux2のVagrant Boxを作成する方法の2通りあります。

方法①

以下のリンク先のVDIファイルを利用して、Vagrantイメージを作成出来ます。

amzn2-virtualbox-2.0.20190313-x86_64.xfs.gpt.vdi

AWSのドキュメントでも、「Amazon Linux 2」を仮想化プラットフォーム上で起動する方法を説明しています。

Running Amazon Linux 2 as a Virtual Machine On-Premises – Amazon Elastic Compute Cloud

Vagrantを開発しているHashicorpが推薦しているBoxイメージは、以下の2つのみです。

Ubuntuを開発しているCanonicalでもubuntuというネームスペースでBoxイメージを出しています。しかし、HashicorpはBentoのほうのUbuntuイメージを勧めています。もちろんBentoは、「Amazon Linux 2」のBoxイメージも以下のページに出しています。

amazonlinux-2

方法②

手作りでAmazon Linux2のVagrant Boxを作成します。Vagrantで起動するため、Bseed.isoの起動イメージを作成します。今回は敢えて面倒なやり方で行ってみます。


seed.isoの起動イメージ作成とは?

isoファイルは、CD/DVD/DBなどのデータ形式を完全に再現したファイルです。seed.isoというファイル名の起動イメージを作ります。が、Seed.iso起動イメージに、「meta-data」、「user-data」の2個のファイルデータを焼き付けてます。

また、Amazon Linux2のディスクイメージにはcloud-initパッケージがインストールされています。起動時にmeta-data、user-dataのデータを参照してOS内に設定を追加するためです。

What is ‘cloud-init’ and when would you use it? – Quora

ISOファイルは、ディスクのコンテンツを全て一つのファイルで表現することが出来ます。

meta-dataでは、ホスト名やネットワーク設定を記述します。

user-dataでは、ユーザアカウントやパスワードの設定、認証鍵の配置、ロケール・時刻の設定などを記述します。

Modules — cloud-init 20.2 documentation

作業の流れ

  • ①VirtaulBoxの設定
  • ②Vagrantのインストール
  • ③seed.iso 起動イメージを作成
  • ④AmazonLinux2のVMマシンを作成
  • ⑤AmazonLinux2の起動

環境

私のPC環境は以下の通りです。

PC MacBook Air (Retina, 13-inch, 2019)
CPU 1.6 GHz デュアルコアIntel Core i5
メモリ 16 GB 2133 MHz LPDDR3
OS 10.15.2

VirtaulBoxの設定

①VirtualBoxを開き、環境設定(P)をクリックします。

「Defatul Machine Folder:」 を「/Users/User名/Work/VirtualBoxVMs」に設定します。

Vagrantをダウンロード・インストール

①以下のサイトを開きます。

Vagrant.com

GetStatedをクリックします。

Downloadをクリックします。

OSを選択して、Downloadをクリックします。

②ダウンロードしたファイルをクリックして、インストーラーを起動します。Vagrant.pkgをクリックします。

「続ける」をクリックします。

インストール先のストレージを選択して、「続ける」をクリックします。

「インストール」をクリックします。

パスワードを要求されます。PCのパスワードを入力しましょう。

インストールが開始します。

インストールが完了します。

seed.iso 起動イメージを作成する

seed.isoにVagrant用の設定を仕込みます。そしてVMマシンを新規作成する際、seed.isoを読み込ませてその設定をVMマシンに施します。

「~/Work/VirtualBoxVMs」ディレクトリ配下に「AmazonLinux2」というディレクトリを作成し、その中に「meta-data」と「user-data」ファイルを置きます。

※以下はいくつかディレクトリを作成しますが、これは後々分かりやすいように作っているため、必ずこの名前のディレクトリが必要なわけではありません。

①「Work/VirtualBoxVMs」というディレクトリを作り、カレントディレクトリを移動します。

cd ~/Work/VirtualBoxVMs

②さらに「AmazonLinux2」というディレクトリを作り、カレントディレクトリを移動します。

mkdir AmazonLinux2
cd AmazonLinux2

③meta-dataという名前のファイルを新規作成します。

cat > meta-data << EOF
local-hostname: machine
EOF

以下のコマンドは、ファイル名に対して複数行のテキストを渡してテキストファイルを作成します。

cat > ファイル名 << EOF
テキストの内容
EOF

④user-dataという名前のファイルを新規作成します。

cat > user-data << EOF

#cloud-config
#vim:syntax=yaml

users:
  - default
  - name: vagrant
    groups: wheel
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    plain_text_passwd: vagrant
    ssh-authorized-keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
    lock_passwd: false

locale: ja_JP.UTF-8

timezone: Asia/Tokyo

write_files:
  - path: /etc/environment
    permissions: '0644'
    owner: root:root
    content: |
      LANG="ja_JP.UTF-8"
      LC_CTYPE="ja_JP.UTF-8"
# https://cloudinit.readthedocs.io/en/latest/topics/network-config.html
  - path: /etc/cloud/cloud.cfg.d/80_disable_network_after_firstboot.cfg
    content: |
      # Disable network configuration after first boot
      network:
        config: disabled
EOF
  • 06行目 vagrantというユーザとグループを作成。
  • 07行目 vagrantユーザをwheelグループ(sudoが使用できる権限グループ)に設定します。
  • 08行目 vagrant ユーザに ‘ALL=(ALL) NOPASSWD:ALL’ という sudo 設定を行います。
  • 09行目 vagrant ユーザのキーペアは、Vagrant が提供しているキーペアを使用します。「ssh-authorized-keys」には以下の「Public Key」を設定します。
  • https://github.com/hashicorp/vagrant/blob/master/keys/vagrant.pub
  • この「vagrant.pub」のキーペアを設定しておかないと、vagrant up で仮想マシンが起動しません。
  • 秘密鍵は、「vagrant up」コマンド時に「~/Work/Vagrant/VM名/.vagrant/machines/default/virtualbox/private_key」に作成され、このキーペアにより 「vagran ssh」コマンドでSSHログインすることができます。
  • 12行目 パスワードログインをfalseで無効にします。(※デフォルトはTrue)
  • 18行目 write_filesモジュールの開始です。
  • 20行目 「/etc/environment」ディレクトリのパーミッション(権限)を0644に設定します。
  • 21行目 「/etc/environment」ディレクトリのオーナー(所有者)をrootに設定します。

⑤以下のコマンドでseed.isoの起動イメージファイルを作成します。

hdiutil makehybrid -o seed.iso -hfs -joliet -iso -default-volume-name cidata ./

hdiutil

ディスクイメージを操作するコマンドです。

  • makehybridオプション 複数のファイルシステムが共存した状態の読み込み専用のディスクイメージを作ります。
  • hfsオプション HFS+ファイルシステムを作成するために指定します。
  • jolietオプション ISO9660ファイルシステムを拡張したJolietファイルシステムで作成するために指定します。
  • isoオプション ISO9660ファイルシステムを作成するために指定します。
  • default-volume-nameオプション ファイルシステムのデフォルトのボリューム名を指定しています。
  • cidataオプション cidataというボリュームラベルが付与します。
  • ./ ./と指定することで、以下のファイルとディレクトリがディスクイメージのコンテンツとして焼き付けられます。

-hfs, -iso, -jolietというように複数のファイルシステムをオプションで指定すれば、ハイブリッドイメージとして起動イメージファイルが作成できます。

「amazon linux 2」のイメージが起動するとき、user-dataはnocloudという方法で読み込まれます。nocloudでuser-dataファイルをディスクから読み込むときは、cidataというボリュームラベルが付与されていなくてはいけません。

⑤のコマンドを実行すると、以下のようなメッセージが表示されます。

Creating hybrid image...
........................

seed.isoファイルが出来上がります。

AmazonLinux2のVMマシンを作成

①AWSのサイトからVDIファイルをダウンロードします。

Index of /os-images/2.0.20200722.0/virtualbox

以下のリンクをクリックします。

②「Work/VirtualBoxVMs」(Oracle VM VirtualBox 用ディレクトリ)へカレントディレクトリを移動します。

cd ~/Work/VirtualBoxVMs

③①でダウンロードした「amzn2-virtualbox-2.0.20190313-x86_64.xfs.gpt.vdi」ファイルを、カレントディレクトリにコピーします。

cp ~/Downloads/amzn2-virtualbox-2.0.20190313-x86_64.xfs.gpt.vdi .

④Oracle VM VirtualBoxを起動します。 「新規」をクリックします。

「エキスパートモード」をクリックします。

⑤以下の設定をします。 「作成」をクリックします。

名前 「AmazonLinux2」と入力。
マシンフォルダ /Users/Username/Work/VirtualBoxVMs
タイプ Linux
バージョン Linux2.6/3.X/4.X(64-bit)
メモリサイズ 1024MB
ハードディスク 「すでにある仮想ハードディスクファイルを使用する」 にチェックして、「~/Work/VirtualBoxVMs/amzn2-virtualbox-2.0.20190313-x86_64.xfs.gpt.vdi」選択します。

⑥仮想環境が作成されました。「設定」をクリックします。

⑦「ストレージ」をクリックします。IDEの「空」を選択して削除します。

⑧IDEに作成した「seed.iso」を選択して、「OK」をクリックします。

⑨「起動」をクリックします。

⑩起動するまで初期設定が走ります。完了したら、「User:Vagrant」、「PassWord:Vagrant」でログインします。

sudoの設定ファイルを以下のコマンドで確認しましょう。

sudo cat /etc/sudoers.d/90-cloud-init-users

user-dataの内容を以下のコマンドで確認しましょう。

sudo cat /var/lib/cloud/instance/user-data.txt

次回

次回は、Vagrantから起動できるようにAmazonLinux2のVagrantBoxを作成します。

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant Boxを作成、起動【オンプレミス】


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告