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: noDefine 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 nameCloud-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.logtasks:
-
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
-
-
-
O olivierlambert moved this topic from REST API
-
I just moved the thread in the right category

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