test repo
- Shell 92.2%
- Dockerfile 7.8%
| test-configs | ||
| cigen.sh | ||
| Dockerfile | ||
| LICENSE | ||
| LICENSE.md | ||
| README.md | ||
| secretgen.sh | ||
Cloud-Init Generator 
- 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:
- Equinix Metal
- AWS EC2
- Azure Compute
- Digital Ocean Droplets
- Google Compute Engine (as metadata field)
- Terraform templating module for cloud-init
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