test repo
  • Shell 92.2%
  • Dockerfile 7.8%
Find a file
cloudymax f4568a4371
boop
2026-01-01 15:56:15 +01:00
test-configs boop 2026-01-01 15:56:15 +01:00
cigen.sh boop 2026-01-01 15:56:15 +01:00
Dockerfile boop 2026-01-01 15:56:15 +01:00
LICENSE Initial commit 2026-01-01 14:55:34 +00:00
LICENSE.md boop 2026-01-01 15:56:15 +01:00
README.md boop 2026-01-01 15:56:15 +01:00
secretgen.sh boop 2026-01-01 15:56:15 +01:00

Cloud-Init Generator GitHub Release

  • runs as user 1000
  • Logs are json format

Options

💁 This script will quickly modify a cloud-init user-data template that can be used to provision virtual-machines, metal, and containers.

Available options:

-h, --help              Print this help and exit

-v, --verbose           Print script debug info

-q, --quiet             Only print final userdata

-u, --userdata          Path to cloud-init user-data file (required)

-n, --networkdata       Path to cloud-init networkdata file (optional)

-k, --kubernetes        Create kubernetes secrets from user and network data (optional)

-e, --envsubst          Enable usage of envsubst, disabled by default (optional)

-s, --salt              Salt to use when encrypting password (optional)

Basic Usage

USERNAME="runner"
RUNNER_PASSWORD="SomeP@ssw0rd!"
SECRET_NAME="runner-user-data"

docker build -t cigen . && \
docker run -it -u 1000 -v $(pwd)/test-configs:/configs \
    -v /Users/max/.config/kube:/kube \
    --env USERNAME=$USERNAME \
    --env SECRET_NAME=$SECRET_NAME \
    cigen --userdata /configs/userdata.yaml \
    --networkdata /configs/networkdata.yaml \
    --kubernetes \
    --envsubst

docker run -it -u 1000 \
    -v $(pwd)/test-configs:/configs \
    -v /Users/max/.config/kube:/kube \
    --env USERNAME=runner \
    --env OPERATOR_PASSWORD=password \
    --env MACADDRESS='b8:a3:86:70:cc:e6' \
    --env SECRET_NAME="my-test-userdata" \
    cigen --userdata /configs/userdata.yaml \
    --networkdata /configs/networkdata.yaml \
    --kubernetes \
    --envsubst \
    --quiet false \
    --force true

Why Cloud-Init?

Cloud-Init officially supports 8 OSs - Ubuntu, Arch Linux, CentOS, Red Hat, FreeBSD, Fedora, Gentoo Linux, and openSUSE. These examples have been developed and tested for use with Ubuntu.

Use on bare-metal:

On self-hosted VMs:

Or via Terraform on most major clouds:

Cloud-Init Docs:

Debugging

Docs link: https://cloudinit.readthedocs.io/en/latest/topics/debugging.html

cloud-init logs are located in:

  • /run/cloud-init/result.json
  • /var/log/cloud-init.log
  • /var/log/cloud-init-output.log

If you want to debug the user-data in cloud-init, try the following steps:

  • Reset and re-run

    sudo rm -rf /var/lib/cloud/*
    sudo cloud-init init
    sudo cloud-init modules -m final
    
  • Analyze logs

    sudo cloud-init analyze show -i /var/log/cloud-init.log
    sudo cloud-init analyze dump -i /var/log/cloud-init.log
    sudo cloud-init analyze blame -i /var/log/cloud-init.log