diff --git a/scripts/images/openstack/.dockerignore b/scripts/images/openstack/.dockerignore new file mode 100644 index 00000000..1521c8b7 --- /dev/null +++ b/scripts/images/openstack/.dockerignore @@ -0,0 +1 @@ +dist diff --git a/scripts/images/openstack/Dockerfile.dapper b/scripts/images/openstack/Dockerfile.dapper new file mode 100644 index 00000000..10d85a24 --- /dev/null +++ b/scripts/images/openstack/Dockerfile.dapper @@ -0,0 +1,13 @@ +FROM debian:jessie +RUN apt-get update && \ + apt-get install --no-install-recommends -y qemu-kvm qemu-utils curl ca-certificates +RUN mkdir -p /source/assets + +# Change here to build a specific version +ENV VERSION latest + +RUN curl -fL https://releases.rancher.com/os/${VERSION}/rancheros.iso > /source/assets/rancheros.iso +CMD ["/source/scripts/build.sh"] + +ENV DAPPER_RUN_ARGS --device /dev/kvm +ENV DAPPER_OUTPUT dist diff --git a/scripts/images/openstack/README.md b/scripts/images/openstack/README.md new file mode 100644 index 00000000..23344eea --- /dev/null +++ b/scripts/images/openstack/README.md @@ -0,0 +1,9 @@ +OpenStack Image +=============== + +Build by running `dapper` in this folder and the build will produce `./dist/rancheros-openstack.img`. The image produced works with "Configuration Drive" to obtain userdata. + +KVM +=== + +This build requires a host capable of KVM. If you don't have KVM then remove `ENV DAPPER_RUN_ARGS --device /dev/kvm` from `Dockerfile.dapper`, but it will run very slow. diff --git a/scripts/images/openstack/scripts/build.sh b/scripts/images/openstack/scripts/build.sh new file mode 100755 index 00000000..ab3e0282 --- /dev/null +++ b/scripts/images/openstack/scripts/build.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +cd $(dirname $0)/.. + +mkdir -p {dist,build/openstack/latest} + +cat > build/openstack/latest/user_data << EOF +#!/bin/bash +set -e + +trap "poweroff" EXIT + +mount -t 9p -o trans=virtio,version=9p2000.L config-2 /mnt + +touch log +openvt -s -- tail -f log & +ros install -d /dev/vda -f --no-reboot >log 2>&1 + +touch /mnt/success +EOF + +rm -f build/{success,hd.img} +qemu-img create -f qcow2 build/hd.img 8G +kvm -curses \ + -drive if=virtio,file=build/hd.img \ + -cdrom assets/rancheros.iso \ + -m 1024 \ + -fsdev local,id=conf,security_model=none,path=$(pwd)/build \ + -device virtio-9p-pci,fsdev=conf,mount_tag=config-2 + +[ -f build/success ] + +echo Converting dist/rancheros-openstack.img +qemu-img convert -c -O qcow2 build/hd.img dist/rancheros-openstack.img