EC2にVyOS isoイメージビルド用のマシンを作成する(VyOS 1.4 LTS対応版)
VyOS 1.4 LTS(1.4.0-epa1)がいつの間にかリリースされており、今回はこのisoをビルドしたいと思います。
目次
以前VyOS 1.3系のビルドについて記事にしましたが、VyOSのバージョンが上がってビルド方法に多少変更があるのと、ビルドに利用するDebianのバージョンが12系に上がったことで、手順が異なっています。
手動ビルドの方法
基本的には、以下のドキュメントの通りです。
以下に方法を記載しますが、1.3の頃から相変わらず、ドキュメントに若干誤植っぽい箇所がありましたので、それも示しておきます。
前提条件
- 実行環境
- Debian 12 bookworm(EC2 AMIの初期状態)
- EBSは12GB以上を割り当て(デフォルトでは8GBだが、ビルドすると容量が不足するため)
- ビルドするVyOSバージョン
- VyOS 1.4.0-epa1 LTS
手順
dockerの環境を整える
$ sudo apt-get update $ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common $ sudo curl -fsSL https://download.docker.com/linux/debian/gpg > /etc/apt/trusted.gpg.d/docker.asc $ sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" $ sudo apt-get update $ sudo apt-get install -y docker-ce
Debian 11系から12系に変わったことで、gpgキーの保存方法が変わりました。
VyOSのソースコードを取得する
$ git clone -b sagitta --single-branch https://github.com/vyos/vyos-build
buildを実行する
ここについては、ドキュメントに誤植があるのと、ワンライナーで実行出来るようにコマンドをカスタマイズしています。
誤植については、ドキュメントでは-w /vyos
となっているのですが、このまま実行すると後続の./make
が実行できません。
正しくは、-w /vyos/vyos-build
とする必要があります。(もしくは、./make
を実行する前にcd vyos-build
を実行するのでも大丈夫そうです)
要は./make
を実行するディレクトリをvyos-buildディレクトリにするわけです。
ワンライナーについては、TTYを与えず(-t
を削除し)、bash
コマンドに./make
と./build-vyos-image
を実行させています。
$ docker run --rm -i --privileged -v /root:/vyos -w /vyos/vyos-build vyos/vyos-build:sagitta bash -c "os=buster64 branch=sagitta make build; make clean; ./build-vyos-image iso --architecture amd64 --build-type release --version 1.4.0-epa1 --build-by www2.filewo.net"
VyOS 1.3系の頃からisoビルドの方法が変更になっています。
また、VyOS 1.3系の頃はdockerイメージを手動で取得していましたが、VyOS 1.4系ではbuild-vyos-image
が勝手に取得してくれるようになっていました。
なおEC2の無料利用枠にあるt2.microインスタンスであれば、20分以内でビルドが完了します。
ビルドしたisoファイルを転送する
ビルドしたisoファイルは、vyos-build/build/vyos-1.4.0-epa1-amd64.iso
に保存されているので、scp等で適当に手元に転送しましょう。
自動ビルドの方法
EC2をビルド用に使い捨てる場合、上記の手順を毎回実行するのは大変です。
なので、仮想マシンの起動からビルドまでを、cloud-initによって自動化してしまいます。
前提条件
手動ビルドと同じです。
手順
ユーザーデータの設定
仮想マシン作成時(インスタンスを起動時)にユーザーデータを設定します。
ユーザーデータの設定場所は「高度な詳細」の下にある「ユーザーデータ」です。
ユーザーデータの中には以下の様なスクリプトを設定します。
#!/bin/bash VER=1.4.0-epa1 BUILDBY=www2.filewo.net apt-get update apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg > /etc/apt/trusted.gpg.d/docker.asc add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" apt-get update apt-get install -y docker-ce cd /root git clone -b sagitta --single-branch https://github.com/vyos/vyos-build docker run --rm -i --privileged -v /root:/vyos -w /vyos/vyos-build vyos/vyos-build:sagitta bash -c "os=buster64 branch=sagitta make build; make clean; ./build-vyos-image iso --architecture amd64 --build-type release --version $VER --build-by $BUILDBY" mv /root/vyos-build/build/vyos-$VER-amd64.iso ~admin/ chown admin: ~admin/vyos-$VER-amd64.iso
スクリプトの内容を簡単に説明しておきます。
cloud-initはrootユーザで実行されるのでsudo
は全て外しています。
また、作業ディレクトリが/
になるので、途中でcd /root
をしています。
ビルドしたisoファイルは扱いやすいように、adminユーザのホームディレクトリに移動しています。
スクリプト上部にあるVER=1.4.0-epa1
を変更すれば、別バージョンのビルドも可能のはずです。
ただし1.5
系など別の系列のビルドは、VER
以外にも変更が必要な箇所があります。
ユーザデータを設定した上で、仮想マシンを作成(インスタンスを起動)すると、OSが起動しビルドが実行されます。
ビルドが完了したかを確認する
cloud-initの実行ログは/var/log/cloud-init-output.log
に記録されるので、作成した仮想マシンへSSHでログインしてless等で状況を確認して下さい。
ログに以下のような出力が表示されれば完了しています。
Cloud-init v. 22.4.2 finished at Sat, 23 Mar 2024 12:23:49 +0000. Datasource DataSourceEc2Local. Up 1104.34 seconds
またビルド完了後は~admin/vyos-1.4.0-epa1-amd64.iso
にファイルが作成されます。
ビルドが完了したらisoファイルを転送し、仮想マシンを終了しておきましょう。
終了することで、EC2とEBSが開放され課金されなくなります。
最近のコメント