85 lines
2.7 KiB
YAML
85 lines
2.7 KiB
YAML
---
|
|
# Create a Proxmox VM for Single Node OpenShift on VLAN40 (192.168.40.0/24).
|
|
# Uses q35 machine type with UEFI (required for SNO / RHCOS).
|
|
# An empty ide2 CD-ROM slot is created here so the boot order can reference it;
|
|
# the deploy_openshift.yml play loads the actual ISO into it after generation.
|
|
|
|
- name: Build net0 string
|
|
ansible.builtin.set_fact:
|
|
# Proxmox net format: model[=macaddr],bridge=<bridge>[,tag=<vlan>]
|
|
_sno_net0: >-
|
|
virtio{{
|
|
'=' + sno_mac if sno_mac | length > 0 else ''
|
|
}},bridge={{ sno_bridge }},tag={{ sno_vlan }}
|
|
|
|
- name: Create SNO VM in Proxmox
|
|
community.proxmox.proxmox_kvm:
|
|
api_host: "{{ hostvars['proxmox_api']['ansible_host'] }}"
|
|
api_user: "{{ proxmox_api_user }}"
|
|
api_port: "{{ hostvars['proxmox_api']['ansible_port'] }}"
|
|
api_token_id: "{{ proxmox_api_token_id }}"
|
|
api_token_secret: "{{ proxmox_api_token_secret }}"
|
|
validate_certs: "{{ proxmox_validate_certs }}"
|
|
node: "{{ proxmox_node }}"
|
|
vmid: "{{ sno_vm_id | default(omit, true) }}"
|
|
name: "{{ sno_vm_name }}"
|
|
cores: "{{ sno_cpu }}"
|
|
memory: "{{ sno_memory_mb }}"
|
|
cpu: host
|
|
numa_enabled: true
|
|
machine: q35
|
|
bios: ovmf
|
|
efidisk0:
|
|
storage: "{{ proxmox_storage }}"
|
|
format: raw
|
|
efitype: 4m
|
|
pre_enrolled_keys: false
|
|
scsi:
|
|
scsi0: "{{ proxmox_storage }}:{{ sno_disk_gb }},format=raw,iothread=1,cache=writeback"
|
|
scsihw: virtio-scsi-single
|
|
ide:
|
|
ide2: none,media=cdrom
|
|
net:
|
|
net0: "{{ _sno_net0 }}"
|
|
boot: "order=scsi0;ide2"
|
|
onboot: true
|
|
state: present
|
|
register: proxmox_vm_result
|
|
|
|
- name: Retrieve VM info
|
|
community.proxmox.proxmox_vm_info:
|
|
api_host: "{{ hostvars['proxmox_api']['ansible_host'] }}"
|
|
api_user: "{{ proxmox_api_user }}"
|
|
api_port: "{{ hostvars['proxmox_api']['ansible_port'] }}"
|
|
api_token_id: "{{ proxmox_api_token_id }}"
|
|
api_token_secret: "{{ proxmox_api_token_secret }}"
|
|
validate_certs: "{{ proxmox_validate_certs }}"
|
|
node: "{{ proxmox_node }}"
|
|
name: "{{ sno_vm_name }}"
|
|
type: qemu
|
|
config: current
|
|
register: proxmox_vm_info
|
|
retries: 5
|
|
|
|
- name: Set VM ID fact for subsequent plays
|
|
ansible.builtin.set_fact:
|
|
sno_vm_id: "{{ proxmox_vm_info.proxmox_vms[0].vmid }}"
|
|
cacheable: true
|
|
|
|
- name: Extract MAC address from VM config
|
|
ansible.builtin.set_fact:
|
|
# net0 format: virtio=52:54:00:xx:xx:xx,bridge=vmbr0,tag=40
|
|
sno_mac: >-
|
|
{{ proxmox_vm_info.proxmox_vms[0].config.net0
|
|
| regex_search('([0-9A-Fa-f]{2}(?::[0-9A-Fa-f]{2}){5})', '\1')
|
|
| first }}
|
|
cacheable: true
|
|
when: sno_mac | length == 0
|
|
|
|
- name: Display VM details
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "VM Name : {{ sno_vm_name }}"
|
|
- "VM ID : {{ sno_vm_id }}"
|
|
- "MAC : {{ sno_mac }}"
|