diff --git a/image-builder/Makefile b/image-builder/Makefile index d6c2fda..d8c61e6 100644 --- a/image-builder/Makefile +++ b/image-builder/Makefile @@ -22,7 +22,7 @@ IMAGE_TAG ?= latest IMAGE_TYPE ?= iso # iso | qcow PUSH_IMAGE ?= false DISTRO ?= ubuntu_focal -WORKDIR ?= ./config +WORKDIR ?= ./manifests QCOW_BUNDLE ?= ${WORKDIR}/qcow-bundle # Specify if you want to only build a certain subset of QCOW bundles QCOW_BUNDLE_DIRS ?= @@ -114,15 +114,11 @@ else # Assemble all images based on configs defined in each subdirectory iterDirs=`find $(QCOW_BUNDLE) -maxdepth 1 -mindepth 1 -type d -exec basename {} \;` for subdir in $$iterDirs; do - # ISO configs - export user_data=$(QCOW_BUNDLE)/$$subdir/user_data - export network_config=$(QCOW_BUNDLE)/$$subdir/network_data.json # QCOW configs - qcow_type=$$(echo $$subdir | sed -e "s/^qcow-//") - export osconfig_params="$(QCOW_BUNDLE)/$$subdir/osconfig-$$qcow_type-vars.yaml" - export qcow_params="$(QCOW_BUNDLE)/$$subdir/qcow-$$qcow_type-vars.yaml" - # Shared configs - export img_name=$$(cat $(QCOW_BUNDLE)/$$subdir/img_name) + export osconfig_params="$(QCOW_BUNDLE)/$$subdir/osconfig-vars.yaml" + export qcow_params="$(QCOW_BUNDLE)/$$subdir/qcow-vars.yaml" + # Image name + export img_name=$$subdir.qcow2 sudo -E tools/cut_image.sh $(IMAGE_TYPE) $(QCOW_BUNDLE) $(IMAGE) "$(PROXY)" "$(NO_PROXY)" done endif @@ -144,7 +140,7 @@ endif for bundledir in $$bundleDirs; do export QCOW_BUNDLE="$(WORKDIR)/$$bundledir" sudo -E make cut_image - sudo -E DOCKER_BUILDKIT=1 docker -D -l debug build --tag $$bundledir -f Dockerfile-qcow.$(DISTRO) $(WORKDIR)/$$bundledir \ + sudo -E DOCKER_BUILDKIT=1 docker -D -l debug build --tag $(DOCKER_REGISTRY)/$(IMAGE_PREFIX)/$$bundledir:$(IMAGE_TAG)-$(DISTRO) -f Dockerfile-qcow.$(DISTRO) $(WORKDIR)/$$bundledir \ --label $(LABEL) \ --label "org.opencontainers.image.revision=$(COMMIT)" \ --label "org.opencontainers.image.created=\ diff --git a/image-builder/config b/image-builder/config new file mode 120000 index 0000000..43c9134 --- /dev/null +++ b/image-builder/config @@ -0,0 +1 @@ +manifests/ \ No newline at end of file diff --git a/image-builder/config/qcow-bundle/qcow-control-plane/img_name b/image-builder/config/qcow-bundle/qcow-control-plane/img_name deleted file mode 100644 index bf1c531..0000000 --- a/image-builder/config/qcow-bundle/qcow-control-plane/img_name +++ /dev/null @@ -1 +0,0 @@ -control-plane.qcow2 diff --git a/image-builder/config/qcow-bundle/qcow-data-plane/img_name b/image-builder/config/qcow-bundle/qcow-data-plane/img_name deleted file mode 100644 index 8783b83..0000000 --- a/image-builder/config/qcow-bundle/qcow-data-plane/img_name +++ /dev/null @@ -1 +0,0 @@ -data-plane.qcow2 diff --git a/image-builder/config/qcow-bundle/qcow-data-plane/qcow-control-plane-vars.yaml b/image-builder/config/qcow-bundle/qcow-data-plane/qcow-control-plane-vars.yaml deleted file mode 120000 index bd56328..0000000 --- a/image-builder/config/qcow-bundle/qcow-data-plane/qcow-control-plane-vars.yaml +++ /dev/null @@ -1 +0,0 @@ -../qcow-control-plane/qcow-control-plane-vars.yaml \ No newline at end of file diff --git a/image-builder/config/README.md b/image-builder/manifests/README.md similarity index 58% rename from image-builder/config/README.md rename to image-builder/manifests/README.md index 36cbe8a..12dd4c5 100644 --- a/image-builder/config/README.md +++ b/image-builder/manifests/README.md @@ -1,29 +1,29 @@ Directory structure: -|-- config +``` +|-- manifests |-- iso +-- network_data.json +-- user_data |-- qcow-bundle - |-- qcow-control-plane - +-- img_name - +-- osconfig-control-plane-vars.yaml - +-- qcow-control-plane-vars.yaml - |-- qcow-data-plane - +-- img_name - +-- osconfig-control-plane-vars.yaml - +-- qcow-control-plane-vars.yaml + |-- control-plane + +-- osconfig-vars.yaml + +-- qcow-vars.yaml + |-- data-plane + +-- osconfig-vars.yaml + +-- qcow-vars.yaml +``` The `generate_iso` and `package_qcow` make target can be used to build ISO and QCOW artifacts respectively, after the shared `image-builder` container is built (built with the `build` target). -The ISO always builds out of the `config/iso` directory, because this is only +The ISO always builds out of the `manifests/iso` directory, because this is only used for local testing. It is not an artifact that is promoted or published. QCOWs are grouped into publishable "bundles", i.e. a container image where all QCOWs needed for a given deployment are stored. A bundle will be built for each -`config/qcow-bundle*` directory. Each `config/qcow-bundle*` directory contains +`manifests/qcow-bundle*` directory. Each `manifests/qcow-bundle*` directory contains one subdirectory per QCOW that is part of that bundle, where overrides for those images can be placed. @@ -32,6 +32,5 @@ The following items are expected in the `iso` directory: - `network_data.json` - JSON file containing cloud-init network data QCOWs expect the following files to be present in their directory: -- `img_name` - text file containing the desired name for the image -- `osconfig-*-vars.yaml` - YAML file containing `osconfig` playbook overrides -- `qcow-*-vars.yaml` - YAML file containing `qcow` playboook overrides +- `osconfig-vars.yaml` - YAML file containing `osconfig` playbook overrides +- `qcow-vars.yaml` - YAML file containing `qcow` playboook overrides diff --git a/image-builder/config/iso/README.md b/image-builder/manifests/iso/README.md similarity index 100% rename from image-builder/config/iso/README.md rename to image-builder/manifests/iso/README.md diff --git a/image-builder/config/iso/network_data.json b/image-builder/manifests/iso/network_data.json similarity index 100% rename from image-builder/config/iso/network_data.json rename to image-builder/manifests/iso/network_data.json diff --git a/image-builder/config/iso/user_data b/image-builder/manifests/iso/user_data similarity index 100% rename from image-builder/config/iso/user_data rename to image-builder/manifests/iso/user_data diff --git a/image-builder/config/qcow-bundle/README.md b/image-builder/manifests/qcow-bundle/README.md similarity index 100% rename from image-builder/config/qcow-bundle/README.md rename to image-builder/manifests/qcow-bundle/README.md diff --git a/image-builder/config/qcow-bundle/qcow-control-plane/README.md b/image-builder/manifests/qcow-bundle/control-plane/README.md similarity index 100% rename from image-builder/config/qcow-bundle/qcow-control-plane/README.md rename to image-builder/manifests/qcow-bundle/control-plane/README.md diff --git a/image-builder/config/qcow-bundle/qcow-control-plane/osconfig-control-plane-vars.yaml b/image-builder/manifests/qcow-bundle/control-plane/osconfig-vars.yaml similarity index 100% rename from image-builder/config/qcow-bundle/qcow-control-plane/osconfig-control-plane-vars.yaml rename to image-builder/manifests/qcow-bundle/control-plane/osconfig-vars.yaml diff --git a/image-builder/config/qcow-bundle/qcow-control-plane/qcow-control-plane-vars.yaml b/image-builder/manifests/qcow-bundle/control-plane/qcow-vars.yaml similarity index 100% rename from image-builder/config/qcow-bundle/qcow-control-plane/qcow-control-plane-vars.yaml rename to image-builder/manifests/qcow-bundle/control-plane/qcow-vars.yaml diff --git a/image-builder/config/qcow-bundle/qcow-data-plane/README.md b/image-builder/manifests/qcow-bundle/data-plane/README.md similarity index 100% rename from image-builder/config/qcow-bundle/qcow-data-plane/README.md rename to image-builder/manifests/qcow-bundle/data-plane/README.md diff --git a/image-builder/config/qcow-bundle/qcow-data-plane/osconfig-data-plane-vars.yaml b/image-builder/manifests/qcow-bundle/data-plane/osconfig-vars.yaml similarity index 100% rename from image-builder/config/qcow-bundle/qcow-data-plane/osconfig-data-plane-vars.yaml rename to image-builder/manifests/qcow-bundle/data-plane/osconfig-vars.yaml diff --git a/image-builder/manifests/qcow-bundle/data-plane/qcow-vars.yaml b/image-builder/manifests/qcow-bundle/data-plane/qcow-vars.yaml new file mode 120000 index 0000000..b53e28d --- /dev/null +++ b/image-builder/manifests/qcow-bundle/data-plane/qcow-vars.yaml @@ -0,0 +1 @@ +../control-plane/qcow-vars.yaml \ No newline at end of file diff --git a/image-builder/config/rootfs/README.md b/image-builder/manifests/rootfs/README.md similarity index 100% rename from image-builder/config/rootfs/README.md rename to image-builder/manifests/rootfs/README.md diff --git a/image-builder/config/rootfs/livecdcontent-vars.yaml b/image-builder/manifests/rootfs/livecdcontent-vars.yaml similarity index 100% rename from image-builder/config/rootfs/livecdcontent-vars.yaml rename to image-builder/manifests/rootfs/livecdcontent-vars.yaml diff --git a/image-builder/config/rootfs/multistrap-vars.yaml b/image-builder/manifests/rootfs/multistrap-vars.yaml similarity index 100% rename from image-builder/config/rootfs/multistrap-vars.yaml rename to image-builder/manifests/rootfs/multistrap-vars.yaml diff --git a/image-builder/config/rootfs/osconfig-vars.yaml b/image-builder/manifests/rootfs/osconfig-vars.yaml similarity index 100% rename from image-builder/config/rootfs/osconfig-vars.yaml rename to image-builder/manifests/rootfs/osconfig-vars.yaml diff --git a/image-builder/config/scripts/common/README.md b/image-builder/manifests/scripts/common/README.md similarity index 100% rename from image-builder/config/scripts/common/README.md rename to image-builder/manifests/scripts/common/README.md diff --git a/image-builder/config/scripts/qcow/README.md b/image-builder/manifests/scripts/qcow/README.md similarity index 100% rename from image-builder/config/scripts/qcow/README.md rename to image-builder/manifests/scripts/qcow/README.md diff --git a/image-builder/tools/cut_image.sh b/image-builder/tools/cut_image.sh index 6c212c9..8cf49cc 100755 --- a/image-builder/tools/cut_image.sh +++ b/image-builder/tools/cut_image.sh @@ -12,7 +12,7 @@ BASEDIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" # Whether to build an 'iso' or 'qcow' build_type="${1:-qcow}" # The host mount to use to exchange data with this container -host_mount_directory="${2:-$BASEDIR/../config}" +host_mount_directory="${2:-$BASEDIR/../manifests}" # Docker image to use when launching this container image="${3:-port/image-builder:latest-ubuntu_focal}" # proxy to use, if applicable @@ -89,7 +89,7 @@ outputFileName: $img_name" > ${iso_config} disk1="--disk path=${workdir}/${img_name},device=cdrom" network='--network network=default,mac=52:54:00:6c:99:85' elif [[ $build_type == qcow ]]; then - : ${img_name:=$(cat $(dirname ${osconfig_params})/img_name)} + : ${img_name:=airship-ubuntu.qcow} if sudo virsh list | grep ${img_name}; then sudo virsh destroy ${img_name} fi diff --git a/image-builder/tools/multistrap.sh b/image-builder/tools/multistrap.sh index 3922a10..3e2ae9a 100755 --- a/image-builder/tools/multistrap.sh +++ b/image-builder/tools/multistrap.sh @@ -12,7 +12,7 @@ BASEDIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" build_dir=assets/playbooks/build osconfig_build_dir=$(basename $build_dir) -host_mount_directory="${1:-$BASEDIR/../config}" +host_mount_directory="${1:-$BASEDIR/../manifests}" workdir="$(realpath ${host_mount_directory})" install_pkg(){