From 65a6e7028fee476e2c0b238e029fea5f834b88c5 Mon Sep 17 00:00:00 2001 From: Dmitry Ukov Date: Mon, 17 Feb 2020 09:58:19 +0000 Subject: [PATCH] [#45] Switch cloud-init to network_data.json * BareMetal Operator uses network_data.json to specify network configuration. Cloud-init should also use this format for ephemeral node to reduce document model data duplication * Since ephemeral node is ISO image it can be used as Data Source for cloud-init. Therefore "config-2" label is used for LiveCD image Change-Id: I972633dfaa521bc99987b838a7d83042527a399e --- debian-isogen/Dockerfile | 7 ++----- debian-isogen/files/build.sh | 8 +++++--- debian-isogen/files/functions.sh | 3 ++- debian-isogen/files/meta_data.json | 5 +++++ debian-isogen/files/packages_install.sh | 5 +++-- 5 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 debian-isogen/files/meta_data.json diff --git a/debian-isogen/Dockerfile b/debian-isogen/Dockerfile index 4f58f83..90a4894 100644 --- a/debian-isogen/Dockerfile +++ b/debian-isogen/Dockerfile @@ -24,19 +24,16 @@ LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc org.opencontainers.image.licenses='Apache-2.0' RUN apt-get update && apt-get install -y \ + curl\ debootstrap \ grub-efi-amd64-bin \ grub-pc-bin \ mtools \ squashfs-tools \ xorriso \ - curl\ && rm -rf /var/lib/apt/lists/* -COPY ./files/build.sh /builder/ -COPY ./files/functions.sh /builder/ -COPY ./files/grub.conf /builder/ -COPY ./files/packages_install.sh /builder/ +COPY files/ /builder/ RUN curl -L https://github.com/mikefarah/yq/releases/download/2.4.0/yq_linux_amd64 -o /bin/yq \ && chmod +x /bin/yq diff --git a/debian-isogen/files/build.sh b/debian-isogen/files/build.sh index 51dae9c..2ea325a 100644 --- a/debian-isogen/files/build.sh +++ b/debian-isogen/files/build.sh @@ -25,9 +25,11 @@ _debootstrap chroot "${CHROOT}" < "${BASEDIR}/packages_install.sh" -cat "${NET_CONFIG}" >> "${CHROOT}/etc/cloud/cloud.cfg.d/network-config.cfg" -cat "${USER_DATA}" >> "${CHROOT}/etc/cloud/cloud.cfg.d/user-data.cfg" -echo "datasource_list: [ NoCloud, None ]" > \ +mkdir -p "${CLOUD_DATA_LATEST}" +cp "${BASEDIR}/meta_data.json" "${CLOUD_DATA_LATEST}" +cp "${USER_DATA}" "${CLOUD_DATA_LATEST}/user_data" +cp "${NET_CONFIG}" "${CLOUD_DATA_LATEST}/network_data.json" +echo "datasource_list: [ ConfigDrive, None ]" > \ "${CHROOT}/etc/cloud/cloud.cfg.d/95_no_cloud_ds.cfg" _make_kernel diff --git a/debian-isogen/files/functions.sh b/debian-isogen/files/functions.sh index bfdf4ff..bc5270f 100644 --- a/debian-isogen/files/functions.sh +++ b/debian-isogen/files/functions.sh @@ -60,7 +60,7 @@ function _make_iso(){ -as mkisofs \ -iso-level 3 \ -full-iso9660-filenames \ - -volid "DEBIAN_CUSTOM" \ + -volid "config-2" \ --grub2-boot-info \ --grub2-mbr /usr/lib/grub/i386-pc/boot_hybrid.img \ -eltorito-boot \ @@ -82,6 +82,7 @@ function _make_metadata(){ function _check_input_data_set_vars(){ CHROOT="${HOME}/LIVE_BOOT/chroot" export CHROOT + export CLOUD_DATA_LATEST="${HOME}/LIVE_BOOT/image/openstack/latest" echo "${BUILDER_CONFIG:?}" if [ ! -f "${BUILDER_CONFIG}" ] then diff --git a/debian-isogen/files/meta_data.json b/debian-isogen/files/meta_data.json new file mode 100644 index 0000000..f71b9bc --- /dev/null +++ b/debian-isogen/files/meta_data.json @@ -0,0 +1,5 @@ +{ + "hostname": "ephemeral", + "name": "ephemeral", + "uuid": "83679162-1378-4288-a2d4-70e13ec132aa" +} diff --git a/debian-isogen/files/packages_install.sh b/debian-isogen/files/packages_install.sh index 468f551..5d1e77d 100644 --- a/debian-isogen/files/packages_install.sh +++ b/debian-isogen/files/packages_install.sh @@ -25,7 +25,8 @@ apt-get update && apt-get install -y --no-install-recommends \ curl \ gnupg \ iptables -echo "deb http://ftp.debian.org/debian unstable main" >> /etc/apt/sources.list +UNSTABLE_REPO="deb http://ftp.debian.org/debian unstable main" +echo "${UNSTABLE_REPO}" >> /etc/apt/sources.list.d/unstable.list apt-get update && apt-get install -y --no-install-recommends \ cloud-init -rm -rf /var/lib/apt/lists/* +rm -rf /etc/apt/sources.list.d/unstable.list /var/lib/apt/lists/*