投稿日: | 最終更新日:
【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant Boxを作成、起動【オンプレミス】
Vagrantで使えるAmazon Linux2環境を作ります。
MacにAmazonLinux2のVagrant環境を作る
前回、VirtualBOXにAmazonLinux2の仮想環境を作成しました。今回は、VMマシン(VirtualBox)からVagrantBoxを作成します。
作業の流れ
前回まで
今回の作業は、以下の続きです。
環境
私の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をインストール【オンプレミス】
- 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