===== VyOS Build ISO and AMI =====
{{tag>AWS VyOS}}
==== Description ====
Install Debian 10 with SSH and standard system utilities
* https://www.networkshinobi.com/vyos-build-from-source/
* https://docs.vyos.io/en/latest/contributing/build-vyos.html
* https://github.com/vyos/vyos-build
* https://github.com/vyos/build-ami
==== Rundown ====
Prepare builder VM
##
## on builder VM as root
##
apt update && apt dist-upgrade -y
apt install -y sudo git-all curl unzip python3 python3-pystache live-build pbuilder vim tmux
apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
apt install -y awscli ansible
apt install -y python3-boto python3-botocore python3-boto3 python3-setuptools
apt install -y python-boto python-botocore python-boto3 python-pip python-setuptools
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt install -y docker-ce
adduser USERNAME sudo
adduser USERNAME docker
visudo
# USERNAME ALL=(ALL) NOPASSWD: ALL
Create and start VyOS builder container
##
## on builder VM as USERNAME
##
git clone -b current --single-branch https://github.com/vyos/vyos-build
# for future run cd into directory and use git pull instead of git clone
cd vyos-build/
docker build -t vyos/vyos-build:current docker
docker run --rm -it --privileged -v $(pwd):/vyos -w /vyos vyos/vyos-build:current bash
Build VyOS ISO
##
## on builder docker container
##
./configure --architecture amd64 --build-by "USERNAME@DOMAIN.TLD"
sudo make AWS
ls -l build/
Upload ISO to S3 and convert to AMI.\\
You will want to make sure you upload the file to a public bucket, or make the object public after upload.
##
## on builder VM as USERNAME
##
git clone https://github.com/vyos/build-ami.git
# for future run cd into directory and use git pull instead of git clone
aws configure
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ****************************************
Default region name [None]: us-east-1
Default output format [None]: json
aws s3 ls
aws s3 cp ./vyos-build/build/vyos-1.3-rolling-202011112135-amd64.iso s3://S3-BUCKET-NAME/vyos-1.3-rolling-202011112135-amd64.iso
aws s3api put-object-acl --bucket S3-BUCKET-NAME --key vyos-1.3-rolling-202011112135-amd64.iso --acl public-read
curl -I https://s3.AWS-REGION-NAME.amazonaws.com/S3-BUCKET-NAME/vyos-1.3-rolling-202011112135-amd64.iso
./build-ami/vyos-build-ami https://S3-BUCKET-NAME/vyos-1.3-rolling-202011112135-amd64.iso
Cleanup for a future build.
tingalls@debian:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vyos/vyos-build current 29af929b13bd 46 minutes ago 3.4GB
debian buster 1510e8501783 5 months ago 114MB
tingalls@debian:~$ docker image rm 29af929b13bd
tingalls@debian:~$ docker image rm 1510e8501783
tingalls@debian:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
tingalls@debian:~$ sudo rm -rf ./vyos-build/build/