diff --git a/diskimage_builder/elements/cloud-init-growpart/README.rst b/diskimage_builder/elements/cloud-init-growpart/README.rst new file mode 100644 index 00000000..72810639 --- /dev/null +++ b/diskimage_builder/elements/cloud-init-growpart/README.rst @@ -0,0 +1,17 @@ +=================== +cloud-init-growpart +=================== + +This element enables growpart for OS images. It allows to grow +Specific partitions during the deployment process. +To enable this element simply include it in the elements list. + +**Disclaimer:** This element might not work with some device names supplied, for example when server is deployed and the image is written to a fibre channel device, or a SAS/SATA SSD controller. + +* ``DIB_CLOUD_INIT_GROWPART_DEVICES``: List of partition names that needs to be populated in order to be grown by cloud-init. **Populating this variable is mandatory.** + Cloud-init growpart module documentation - https://cloudinit.readthedocs.io/en/latest/topics/modules.html?highlight=growpart#growpart + +Dependencies: + +* ``/usr/bin/growpart``: **is needed on the system in order to grow the partition**, + however it is part of different packages depending on linux family. That is already taken care of by package-installs. diff --git a/diskimage_builder/elements/cloud-init-growpart/element-deps b/diskimage_builder/elements/cloud-init-growpart/element-deps new file mode 100644 index 00000000..73015c24 --- /dev/null +++ b/diskimage_builder/elements/cloud-init-growpart/element-deps @@ -0,0 +1,2 @@ +package-installs +pkg-map diff --git a/diskimage_builder/elements/cloud-init-growpart/package-installs.yaml b/diskimage_builder/elements/cloud-init-growpart/package-installs.yaml new file mode 100644 index 00000000..46a70873 --- /dev/null +++ b/diskimage_builder/elements/cloud-init-growpart/package-installs.yaml @@ -0,0 +1 @@ +growpart_package: diff --git a/diskimage_builder/elements/cloud-init-growpart/pkg-map b/diskimage_builder/elements/cloud-init-growpart/pkg-map new file mode 100644 index 00000000..4bfbc20e --- /dev/null +++ b/diskimage_builder/elements/cloud-init-growpart/pkg-map @@ -0,0 +1,10 @@ +{ + "family": { + "redhat": { + "growpart_package": "cloud-utils-growpart" + }, + "debian": { + "growpart_package": "cloud-guest-utils" + } + } +} diff --git a/diskimage_builder/elements/cloud-init-growpart/post-install.d/55-growpart b/diskimage_builder/elements/cloud-init-growpart/post-install.d/55-growpart new file mode 100755 index 00000000..0f433b68 --- /dev/null +++ b/diskimage_builder/elements/cloud-init-growpart/post-install.d/55-growpart @@ -0,0 +1,25 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +if [[ -n ${DIB_CLOUD_INIT_GROWPART_DEVICES} ]]; then + if [ -d /etc/cloud/cloud.cfg.d ]; then + cat > /etc/cloud/cloud.cfg.d/55-growpart.cfg <