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

投稿日:   |  最終更新日:

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

AWSLinux仮想環境

Vagrantで使えるAmazon Linux2環境を作ります。

MacにAmazonLinux2のVagrant環境を作る

前回、VirtualBOXにAmazonLinux2の仮想環境を作成しました。今回は、VMマシン(VirtualBox)からVagrantBoxを作成します。

作業の流れ

前回まで

今回の作業は、以下の続きです。

【仮想環境】MacにVirtualBoxをインストール【Mac】

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

環境

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

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

前回作成した仮想環境を削除

前回、VirtualBoxの設定から「AmazonLinux_2」の仮想マシンを作成しました。ここからVagrantBoxを作成しようと考えましたが、上手く端末からコマンドでログインできませんでしたので、残念ですが一旦削除します。

①VirtualBoxに作成した「AmazonLinux_2」仮想マシンを停止します。

仮想マシンのウィンドウの❌ボタンをクリックすると、以下のように表示されます。「Power Off the machine」を選択して「OK」をクリックします。

②電源OFFの状態になります。これをControl+クリックにより「除去」を選択して仮想環境「AmazonLinux_2」を削除します。

コマンドで仮想マシンの作成

コマンド入力でAmazonLinux2の仮想環境を作成します。「端末」を開いてコマンド入力で操作していきます。

①以下のコマンドを入力してカレントディレクトリを移動します。

cd ~/Work/VirtualBoxVMs/AmazonLinux2

seed.iso、meta-data、user-dataを作成しましたので、以下のようなファイル構成です。

  • ~/Work/VirtualBoxVMs/AmazonLinux2/
  • seed.iso
  • meta-data
  • user-data

②VDIファイルをダウンロードします。

Index of /os-images/2.0.20200722.0/virtualbox

③ダウンロードしたファイル(amzn2-virtualbox-2.0.20200722.0-x86_64.xfs.gpt.vdi)を、今いるディレクトリにコピーします。

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

④VirtualBox上にAmazonLinux2の仮想環境を作成します。

VM=vagrant-amznlinux2
VDI=amzn2-virtualbox-2.0.20200722.0-x86_64.xfs.gpt.vdi
VBoxManage createvm --name "$VM" --ostype "RedHat_64" --register

VirtualBoxを開くと、以下のように仮想環境「vagrant-amznlinux2」が作成されます。

⑤仮想環境「vagrant-amznlinux2」に設定を行います。

VBoxManage storagectl "$VM" --name "SATA Controller" --add "sata" --controller "IntelAHCI"
VBoxManage storagectl "$VM" --name "IDE Controller" --add "ide"
VBoxManage storageattach "$VM" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium $VDI
VBoxManage storageattach "$VM" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium seed.iso
VBoxManage modifyvm "$VM" --natpf1 "ssh,tcp,127.0.0.1,2222,,22" --memory 1024 --vram 8 --audio none --usb off
  • 仮想マシン(vagrant-amznlinux2)のためにSATA controllerします。
  • 仮想マシン(vagrant-amznlinux2)のためにIDE controllerを作成します。
  • SATAには仮想ディスク(amzn2-virtualbox-2.0.20190313-x86_64.xfs.gpt.vdi)をセットします。
  • IDEには起動イメージファイル(seed.iso)をセットします。
  • ホストマシンの2222ポートのアクセスを仮想マシンの22ポートに転送するように設定します。また、RAMを1024MBに設定します。
  • グラフィックカードのRAMを8MBに設定します。audioサポートをオフにしてUSB仮想コントローラ機能をオフにします。

⑥仮想マシン(vagrant-amznlinux2)を起動します。

VBoxManage startvm "$VM" --type headless

–type headlessオプションを指定することで、仮想マシンをコマンドから起動する際、VirtualBoxのGUIツールが一緒に立ち上がらないようになります。

⑦仮想マシンが立ち上がったら、以下の手順で公開鍵を取得します。

curl -sL https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant -o vagrant.pem

⑧取得した公開鍵のパーミッション(権限)を”600”に変更します。

chmod 600 vagrant.pem

⑨SSH経由でvagrantユーザとしてログインします。

ssh -p 2222 vagrant@localhost -i vagrant.pem

これで、amazon linux2をVirtualBox上で利用できるようになりました。

vagrant boxの作成

VirtualBox上で動いている仮想マシンをbox化します。まずは、ボックス化した時のサイズを小さくするために不要な物を削除します。

①yumコマンドのキャッシュファイルを全て削除します。

sudo rm -rf /var/cache/yum

うっかり「sudo rm -rf /」コマンドを実行してしまうと、全てのファイルが消えてしまいますので、rmコマンドは慎重に使って下さい。

②「/dev/zero」ファイルを読み出し、「/0」ファイルとして全てコピーします。

sudo dd if=/dev/zero of=/0 bs=4k

bs=4kオプションは、1回に4バイトずつ読み書きします。

ddコマンドを使って、0で埋めてしまうのは、仮想マシンイメージの圧縮時に効果的だからです。

Making smaller base boxes · Issue #343 · hashicorp/vagrant · GitHub

③「/0」ファイルを全て削除します。

sudo rm -f /0

④仮想マシンをシャットダウンします。

sudo shutdown -h now

⑤package.boxという名前のboxファイルを作成されます。

vagrant package --base "$VM"

baseオプションで、box化したいVirtualBoxで動いている仮想マシンを指定しています。デフォルトではpackage.boxという名前のファイルが作成されます。

⑥package.boxのboxファイルを、「amzn2-2.0.20200722.0-x86_64」という名前でvagrantに登録します。

vagrant box add --name "amzn2-2.0.20200722.0-x86_64” package.box


==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'amzn2-2.0.20200722.0-x86_64' (v0) for provider: 
    box: Unpacking necessary files from: file:///Users/username/Work/VirtualBoxVMs/AmazonLinux2/package.box
==> box: Successfully added box 'amzn2-2.0.20200722.0-x86_64' (v0) for 'virtualbox'!

VagrantBoxが登録できたかどうか確認します。

vagrant box list


amzn2-2.0.20200722.0-x86_64 (virtualbox, 0)

⑦ターミナルを起動して、以下のコマンドを入力してカレントディレクトリを移動します。

cd ~/Work

作業用ディレクトリVagrantを作成して移動します。

mkdir Vagrant
cd Vagrant

⑧作業用ディレクトリAmazonLinux2を作成して移動します。

mkdir AmazonLinux2
cd AmazonLinux2
pwd
/Users/username/Work/Vagrant/AmazonLinux2

⑨このディレクトリでVagrantの初期化を行います。

vagrant init amzn2-2.0.20200722.0-x86_64

⑩vagrantから仮想マシンを起動します。

vagrant up

起動中にエラーが出てしまいました。

Vagrant was unable to mount VirtualBox shared folders. This is usually

because the filesystem "vboxsf" is not available. This filesystem is

made available via the VirtualBox Guest Additions and kernel module.

Please verify that these guest additions are properly installed in the

guest. This is not a bug in Vagrant and is usually caused by a faulty

Vagrant box. For context, the command attempted was:



mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant



The error output from the command was:



mount: /vagrant: 未知のファイルシステムタイプ 'vboxsf' です.

どうやら、boxに「VirtualBox Guest Additions」がインストールされていなかったのが原因のようです。起動時にエラー出てしまいますが、「vagrant ssh」でSSHログインは可能です。次回は、VagrantにSSHログインして「VirtualBox Guest Additions」をインストールしてみたいと思います。

次回

今回準備したAmazonLinux2のVagrantにSSHログインし、「VirtualBox Guest Additions」をインストールします。

Vagrant】Macに用意したVagrantのAmazon Linux2 環境にVirtualBox Guest Additionsをインストール【オンプレミス】


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

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

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