XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. amititre331
    A
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 2
    • Groups 0

    amititre331

    @amititre331

    0
    Reputation
    1
    Profile views
    2
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    amititre331 Unfollow Follow

    Latest posts made by amititre331

    • RE: Unable to configure Network IP inside the VM throgh API

      @olivierlambert Thanks Olivier Can I get the resolution on this issue I am trying to resolve this issue from last 40 days but still no resolution

      posted in Infrastructure as Code
      A
      amititre331
    • Unable to configure Network IP inside the VM throgh API

      Hi team,

      I am unable to configure the IP inside the VM, I am not using enterprise edition and I am doing it through ansible playbook, I am attaching the playbook here. Can you help me here how to configure the IP inside the VM via API.

      I am using netplan for ubuntu write files method. I installed the xen tools as well inside the template of the vm.


      • name: Create Ubuntu VM on XOA with Static IP - FINAL FIX
        hosts: localhost
        connection: local
        gather_facts: no

        Define Variables

        vars:

        XOA/Xen Parameters (Using your provided values)

        xoa_host: "https://169.104.140.195"
        xoa_pool_uuid: "5b260402-5586-2e3f-56c1-7aa5cd801903"
        vm_name: "testing_guest-tools_Network"
        template_uuid: "9cc86438-d492-ed99-0cfc-b912d320f295"
        xoa_token: "v0kzzePGh0ZNYhIv0GsF81FEPBat7EYTLXghl6vL2nU"

        Network Parameters (Target IP: 169.144.104.200)

        static_ip: 169.104.140.201
        netmask_cidr: 26
        gateway: 169.104.140.193
        dns1: 169.104.140.7
        dns2: 8.8.4.4
        interface_name: enX0 # Confirmed name

        Cloud-Init Configuration

        cloud_init_config_yaml: |
        #cloud-config
        hostname: "{{ vm_name }}"
        manage_etc_hosts: true

        # IMPORTANT: Keep this minimal to avoid conflicts with the 'write_files' block
        network:
          version: 2
          renderer: networkd
        
        # 1. WRITE FILES: Explicitly write the static config to a high-priority file (99)
        write_files:
          - path: /etc/netplan/99-static-ansible.yaml
            permissions: '0644'
            owner: root:root
            content: |
              # This file will override 50-cloud-init.yaml
              network:
                version: 2
                ethernets:
                  {{ interface_name }}:
                    dhcp4: false
                    dhcp6: false
                    addresses: [{{ static_ip }}/{{ netmask_cidr }}]
                    routes:
                      - to: default
                        via: "{{ gateway }}"
                    nameservers:
                      addresses: [{{ dns1 }}, {{ dns2 }}]
                      search: []
        
        # 2. RUN COMMAND: Delete the conflicting file and force application
        runcmd:
          # CRITICAL: Delete the conflicting file created by the template/XOA
          - rm -f /etc/netplan/50-cloud-init.yaml || true
          - rm -f /etc/netplan/01-netcfg.yaml || true
        
          # Apply the new high-priority config (99-static-ansible.yaml)
          - netplan generate
          - netplan apply
        
          # Force a service restart to ensure the configuration is picked up
          - systemctl restart systemd-networkd
          - echo "Static IP {{ static_ip }} configured via file overwrite." >> /var/log/cloud-init-status.log
        

        tasks:

        • name: 1. Create VM on XOA via REST API
          ansible.builtin.uri:
          url: "{{ xoa_host }}/rest/v0/pools/{{ xoa_pool_uuid }}/actions/create_vm?sync=true"
          method: POST
          headers:
          Content-Type: application/json
          Accept: application/json
          Cookie: "authenticationToken={{ xoa_token }}"
          body:
          name_label: "{{ vm_name }}"
          template: "{{ template_uuid }}"
          boot: true
          # Pass the Cloud-Init YAML string
          cloud_config: "{{ cloud_init_config_yaml | to_json }}"
          body_format: json
          status_code: [200, 201]
          validate_certs: no
          register: vm_creation_response

        • name: 2. Display VM Creation API Response
          ansible.builtin.debug:
          var: vm_creation_response.json

      posted in Infrastructure as Code
      A
      amititre331