Custom config / cloud-init
-
@acebmxer said in Custom config / cloud-init:
If convert this newly created vm to a template. Then create another vm from this template. Even though the VM is generating a new mac address when the vm boots its still getting / using the same ip from vm used to create the template.
You will have to carefully read cloud-init documentation to understand how it works and what phases it has.
Short answer is that VM template creation is a bit more work than just preparing some base VM and than converting it to the template or use it to clone other VMs. For a start, cloud-init has to be "cleaned" so that it is reset to the initial state.
cloud-init, or better said most of it's modules, run only once - just on first boot. So... when you create a VM from a hub template, cloud-init will run but if you use that VM to clone another VM, cloud-init will not run like on first boot of the original VM. Aside from that, to prepare some VM to be a template for other VMs, other "stuff" beside cloud-init has to be cleaned up like machine-id, SSH host keys, network configuration, logs... There is some official documentation on this here:
https://docs.xcp-ng.org/guides/create-use-custom-xcpng-ubuntu-templates/
and some forum addendum here:
read carefully

-
@bvitnik thanks for that info. There is so much to learn with linux. Not that there is alot to learn with windows. I am still learning new stuff every day but still know just enough to get myself in trouble with Linux.
-
@bvitnik said in Custom config / cloud-init:
https://docs.xcp-ng.org/guides/create-use-custom-xcpng-ubuntu-templates/
I noticed in the documentation, they put "password:" for user password creation.
what is working for me :
plain_text_passwd: 'myverysecureplaintextpassword'more secure, use a SHA 512 encrypted password, but with :
passwd: QChUQYy14yOv_encrypted_password_mgnEFL6TRPIsJ/4make it encrypted with
# mkpasswd --method=SHA-512 -
@Pilow
password:as a global option andpasswd:orplain_text_passwd:underusers:key are two different things. The first one sets the password for the default user,ubuntuon Ubuntu if I recall correctly, while the others set password for the user specified in theusers:key.Read the docs people

-
@bvitnik indeed, RTFM
i'm a newb on cloud-init, and should follow more this good advice !
-
So I have had some more time to play around with this, and I think I got it working except for one part.
After I convert the vm to a template and go deploy new vm with newly created template. Even if i put in the network config as such.
#cloud-config network: version: 2 ethernets: enX0: dhcp4: true dhcp6: false set-name: "enX0"The new vm does not get IP address. When i log into new vm it does not have /etc/netplan/50-cloud-init.yaml with the above network config.
If i manually create the file with the above config and reboot the vm gets an IP address and a different one then previous vm
-
@acebmxer Did you do:
cloud-init clean --logs --seedbefore converting the VM to template?
Also, network configuration is not part of the
cloud-config(aka user data). In XO, there is a separate field called "Network config" where it should be specified. See examples at the end of the guide I pasted earlier.network:key should also be removed (commented in the examples). -
@bvitnik
This is creating new vm from Hub template. If i try the below network config the VM hangs on boot. Think previously it would eventually boot but have not networking as stated previously.#cloud-config # network: version: 2 ethernets: enX0: dhcp4: true dhcp6: false set-name: "enX0"This is copy pasted from the link you provided about additional infomation to add to documentation. does not show network: commented out. When i use this with ips corrected to my network the vm boots fast but again still no networking. Even if i comment out network. Still no networking. I have to leave blank during vm creation. Can you past your working network config?
#cloud-config network: version: 2 ethernets: eth0: dhcp4: false addresses: - 10.0.2.6/27 gateway4: 10.0.2.1 nameservers: addresses: - 10.0.2.1 - 1.1.1.1EDIT -
This is a working config for new vm from Ubuntu Hub template. VM boots and gets IP address. Its not much different then my original. I dont know. Still learning this stuff.
network: version: 2 ethernets: enX0: # or whatever your interface name is dhcp4: trueEdit -2 while the above works for dhcp the below does not work for static. VM does not get static ip
network: version: 2 ethernets: enX0: # or whatever your interface name is dhcp4: false addresses: - 10.100.10.206/24 gateway4: 10.100.10.254 nameservers: addresses: - 10.100.10.254 - 1.1.1.1 -
@bvitnik said in Custom config / cloud-init:
@acebmxer Did you do:
cloud-init clean --logs --seedbefore converting the VM to template?
Also, network configuration is not part of the
cloud-config(aka user data). In XO, there is a separate field called "Network config" where it should be specified. See examples at the end of the guide I pasted earlier.network:key should also be removed (commented in the examples).besides getting it working on fresh vm from the ubuntu template from the Hub. I do have that command in script to prepare the vm to create a template from it. AI says this will cause the vm not to recreate the 50-cloud-init.yaml file. So how do I work around that also.
-
@acebmxer said in Custom config / cloud-init:
...
network: version: 2 ethernets: enX0: # or whatever your interface name is dhcp4: false addresses: - 10.100.10.206/24 gateway4: 10.100.10.254 nameservers: addresses: - 10.100.10.254 - 1.1.1.1Address should be on the next line:
addresses: - 10.100.10.206/24Regarding
50-cloud-init.yaml, AI is lying
. -
@bvitnik
that worked. -
@acebmxer Great. These are some YAML basics. You should read more about it
. Following AI instructions without understanding is not going to take you far.