Windows
AWS
vagrant
VirtualBox
AmazonLinux

Windows10 で Amazon Linux 2 を vagrant で動かすまで

Amazon Linux 2のvagrant boxを各サイトを参考にWindows10で作ってみました
ついでに、ブリッジ接続もできるか試してみましたが無事成功 :smile:

vagrantのversionが最初1.9.3でしたがその状態だとブリッジ接続がうまくいかず...

環境

  • Windows10
  • vagrant 2.0.2
  • virtualbox 5.1.30 r118389 (Qt5.6.2)

参考リンク

大まかな手順

  1. isoファイルの作成
  2. virtualboxで起動
  3. vagrantで起動~接続

1. isoファイルの作成

isoファイルの作成にはisocreaterを利用

isoファイルにするデータ作成

  • configフォルダ作成
  • config/meda-data
# ホスト名の指定
local-hostname: localhost.localdomain
  • config/user-data
# ユーザ情報の指定、vagrantユーザのログインにはvagrantがgithubで公開しているSSH公開鍵を利用
# cloud-config
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

作成データを isocreaterでisoファイルにする

  • ファイル名 : seed.iso
  • ボリュームラベル : cidata

2. virtualboxで起動

  • Amazon Linux 2のvdi イメージを公式からダウンロード
  • vitualbox で AmazonLinux2を起動、vagrant boxにするための調整

[ 作成時 ]

  • 名前 : amazonlinux2, タイプ : Linux, バージョン : Linux 2.6/3.x/4.x(64-bit)
  • すでにある仮想ハードディスクを使用する > DLした .vdi を指定

[ 作成後 ]

  • 対象イメージ右クリック > [設定]
    • [ストレージ] > [コントローラーIDE > 空] を選択し、作成した seed.iso を指定
    • [ネットワーク] > [アダプター1 > 高度 > ポートフォワーディング] > SSHログイン用のポートを追加(今回はホストポート8022, ゲストポート 22

[ 起動後 ]

[ ログイン後 ]

# isoファイルのアンマウント
[vagrant@localhost ~]$ sudo eject

# アップデート/開発ツールのインストール
[vagrant@localhost ~]$ sudo yum install -y kernel kernel-devel perl gcc
[vagrant@localhost ~]$ sudo yum groupinstall -y 'Development Tools'
[vagrant@localhost ~]$ sudo yum update -y

# VagrantにRHELと認識させる
[vagrant@localhost ~]$ sudo ln -s /etc/system-release /etc/redhat-release

# 再起動
[vagrant@localhost ~]$ sudo shutdown -r now

# 再起動後、vitualboxの仮想マシンウィンドウから、[デバイス] > [Guest Additions CD イメージの挿入]を実行

# Guest Additionsをインストール
[vagrant@localhost ~]$ sudo mount /dev/cdrom /mnt
[vagrant@localhost ~]$ sudo /mnt/VBoxLinuxAdditions.run

[vagrant@localhost ~]$ exit

# 仮想マシンをシャットダウン

3. vagrantで起動~接続

box作成~追加

# コマンドプロンプト / PowerShell

# packageでvmをbox化
> vagrant package --base 'amazonlinux2'

# 作成したpackage.boxに名前を付けてvagrantに追加
> vagrant box add --name amazonlinux2 package.box

# 確認
> vagrant box list

起動~接続(ブリッジ)

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "amazonlinux2"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
    vb.customize ['modifyvm', :id, "--nictype2", "virtio"]
    vb.customize ["modifyvm", :id, "--natnet1", "192.168.156/24"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--memory", "1536"]
  end

  config.vm.network :public_network, ip: "10.0.33.11", :netmask => "255.0.0.0"

  config.vbguest.installer_arguments = "--nox11 -- --force"
end

Vagrantで起動

# コマンドプロンプト / PowerShell

# 起動
> vagrant up

# このままでつながるが、ブリッジ接続のための鍵を取得
# 実行ディレクトリ/vagrant/machines/default/virtualbox/private_key に生成される
> vagrant ssh

SSHクライアントで接続

  • IP : Vagrantfileで指定したIP(今回は 10.0.33.11
  • 鍵:vagrant ssh の時に生成された鍵
  • ポート:22