XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Custom config / cloud-init

    Scheduled Pinned Locked Moved Management
    19 Posts 3 Posters 370 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B Offline
      bvitnik @acebmxer
      last edited by

      @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:

      https://xcp-ng.org/forum/topic/11008/ubuntu-22.04.5-custom-template-additional-steps-missing-from-documentation

      read carefully 🙂

      P 1 Reply Last reply Reply Quote 0
      • A Offline
        acebmxer @bvitnik
        last edited by

        @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.

        1 Reply Last reply Reply Quote 0
        • P Online
          Pilow @bvitnik
          last edited by

          @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/4
          

          make it encrypted with

          # mkpasswd --method=SHA-512
          
          B 1 Reply Last reply Reply Quote 0
          • B Offline
            bvitnik @Pilow
            last edited by

            @Pilow password: as a global option and passwd: or plain_text_passwd: under users: key are two different things. The first one sets the password for the default user, ubuntu on Ubuntu if I recall correctly, while the others set password for the user specified in the users: key.

            Read the docs people 😁

            P 1 Reply Last reply Reply Quote 2
            • P Online
              Pilow @bvitnik
              last edited by

              @bvitnik indeed, RTFM

              i'm a newb on cloud-init, and should follow more this good advice !

              1 Reply Last reply Reply Quote 0
              • A Offline
                acebmxer
                last edited by

                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

                B 1 Reply Last reply Reply Quote 0
                • B Offline
                  bvitnik @acebmxer
                  last edited by bvitnik

                  @acebmxer Did you do:

                  cloud-init clean --logs --seed
                  

                  before 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).

                  A 2 Replies Last reply Reply Quote 1
                  • A Offline
                    acebmxer @bvitnik
                    last edited by acebmxer

                    @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.1
                    

                    EDIT -

                    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: true
                    

                    Edit -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
                    
                    B 1 Reply Last reply Reply Quote 0
                    • A Offline
                      acebmxer @bvitnik
                      last edited by

                      @bvitnik said in Custom config / cloud-init:

                      @acebmxer Did you do:

                      cloud-init clean --logs --seed
                      

                      before 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.

                      1 Reply Last reply Reply Quote 0
                      • B Offline
                        bvitnik @acebmxer
                        last edited by bvitnik

                        @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.1
                        

                        Address should be on the next line:

                              addresses:
                              - 10.100.10.206/24
                        

                        Regarding 50-cloud-init.yaml, AI is lying 😁 .

                        A 1 Reply Last reply Reply Quote 0
                        • A Offline
                          acebmxer @bvitnik
                          last edited by

                          @bvitnik 👍 that worked.

                          B 1 Reply Last reply Reply Quote 1
                          • B Offline
                            bvitnik @acebmxer
                            last edited by

                            @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.

                            1 Reply Last reply Reply Quote 2
                            • First post
                              Last post