投稿日: | 最終更新日:
【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant 環境を作成【オンプレミス】
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
Ubuntuを開発しているCanonicalでもubuntuというネームスペースでBoxイメージを出しています。しかし、HashicorpはBentoのほうのUbuntuイメージを勧めています。もちろんBentoは、「Amazon Linux 2」のBoxイメージも以下のページに出しています。
方法②
手作りで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では、ユーザアカウントやパスワードの設定、認証鍵の配置、ロケール・時刻の設定などを記述します。
作業の流れ
- ①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をダウンロード・インストール
①以下のサイトを開きます。
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を作成します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1