Skip to content

Create Local Ubuntu Cloud Init Image

Check Cloud Init Installation

dpkg --get-selections | grep cloud-init

Update Repositories

sudo apt update && sudo apt upgrade -y

Remove cloud-init and install fresh

sudo apt remove --purge cloud-init

Install cloud init

sudo apt install cloud-init

Work with /etc/cloud/cloud.cfg

Take backup

sudo cp /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.bak

Edit cloud.cfg

Create password hash

which mkpasswd

Generate password

mkpasswd -m sha-512

Remove all the packages that we do not use

puppet
chef
etc

Add user

comment default under user

comment everything under default_user

users:
    - name: username
      lock_passwd: False
      passwd: Password-Hash
      gecos: FirstName Lastname
      ssh_authorized_keys:
        - keys
      groups: [adm, sudo, lxd, users, dip, cdrom, plugdev]
      sudo: ["ALL=(ALL) NOPASSWD:ALL"]
      shell: /bin/bash

Add hostname configuration

preserve_hostname: false
hostname: hostname.domain.com
mange_etc_hosts: true

Configure datasource

vim /etc/cloud/cloud.cfg.d/99-fake_cloud.cfg
# Configure Cloud-init for NoCloud
datasource_list: [ NoCloud, None ]
datasource:
  NoCloud:
    fs_label: system-boot

remove olde network config file

sudo rm /etc/systemd/network/99-default.link

Remove machine ID

sudo truncate -s 0 /etc/machine-id

Clean up system

sudo cloud-init clean