Skip to content

Qemu schema base

Title: VM Base Inventory

Type object
Required No
Additional properties Not allowed

Description: Base inventory that gets inherited by qemu standalone and kubespray nodes.

Property Pattern Type Deprecated Definition Title/Description
+ target_pve No string No - Proxmox cluster name + . + pve cloud domain. This determines the cloud and the proxmox cluster the vms/lxc/k8s luster will be created in.
+ stack_name No string No - Your stack name, needs to be unique within the cloud domain.
- static_includes No object No - For virtual machines we have the option to define tcp_proxies and ingress_domains. If those are set we need certain static includes.
- include_stacks No array of object No - Include other stacks into the ansible inventory, from any pve cloud you are connected to. From here you can freely extend and write your own playbooks.
+ root_ssh_pub_key No string No - trusted root key for the cloud init image.
- pve_ha_group No string No - PVE HA group this vm should be assigned to (optional).
- target_pve_hosts No array of string No - Array of proxmox hosts in the target pve that are eligible for scheduling. If not specified all online hosts are considered.
+ qemus No array of object No - List of qemu vms for the stack.
- tcp_proxies No array of object No - Raw tcp forwards on the clusters haproxy to k8s services exposed via nodeport.
- qemu_default_user No string No - User for cinit.
- qemu_hashed_pw No string No - Pw for default user defaults to hashed 'password' for debian cloud init image. Different cloud init images require different hash methods. You cannot use the same from debian for ubuntu for example.
- qemu_base_parameters No object No - Base parameters applied to all qemus. passed to the proxmox qm cli tool for creating vm.
- qemu_image_url No string No - http(s) download link for cloud init image.
- qemu_keyboard_layout No string No - Keyboard layout for cloudinit.
- qemu_network_config No string No - Optional qemu network config as a yaml string that is merged into the cloudinit network config of all qemus.
- qemu_global_vars No object No - Variables that will be applied set for all qemus vms.
- plugin No enum (of string) No - Id of ansible inventory plugin

18. Property VM Base Inventory > target_pve

Type string
Required Yes

Description: Proxmox cluster name + . + pve cloud domain. This determines the cloud and the proxmox cluster the vms/lxc/k8s luster will be created in.

Example:

"proxmox-cluster-a.your-cloud.domain"

19. Property VM Base Inventory > stack_name

Type string
Required Yes

Description: Your stack name, needs to be unique within the cloud domain.

20. Property VM Base Inventory > static_includes

Type object
Required No
Additional properties Not allowed

Description: For virtual machines we have the option to define tcp_proxies and ingress_domains. If those are set we need certain static includes.

Property Pattern Type Deprecated Definition Title/Description
- dhcp_stack No string No - For interacting with kea reservations.
- proxy_stack No string No - Reloading the proxy.
- postgres_stack No string No - The playbook needs the pve cloud postgres stack where state and general configuration is stored.
- bind_stack No string No - The playbook needs the bind stack to register the general masters recordset and for creating authoritative zones defined in cluster_cert_entries.

20.1. Property VM Base Inventory > static_includes > dhcp_stack

Type string
Required No

Description: For interacting with kea reservations.

Example:

"dhcp.your-cloud.domain"

20.2. Property VM Base Inventory > static_includes > proxy_stack

Type string
Required No

Description: Reloading the proxy.

Example:

"proxy.your-cloud.domain"

20.3. Property VM Base Inventory > static_includes > postgres_stack

Type string
Required No

Description: The playbook needs the pve cloud postgres stack where state and general configuration is stored.

Example:

"patroni.your-cloud.domain"

20.4. Property VM Base Inventory > static_includes > bind_stack

Type string
Required No

Description: The playbook needs the bind stack to register the general masters recordset and for creating authoritative zones defined in cluster_cert_entries.

Example:

"bind.your-cloud.domain"

21. Property VM Base Inventory > include_stacks

Type array of object
Required No

Description: Include other stacks into the ansible inventory, from any pve cloud you are connected to. From here you can freely extend and write your own playbooks.

Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation See below
Each item of this array must be Description
include_stacks items -

21.1. VM Base Inventory > include_stacks > include_stacks items

Type object
Required No
Additional properties Not allowed
Property Pattern Type Deprecated Definition Title/Description
+ stack_fqdn No string No - Target stack fqdn to include (stack name + pve_cloud_domain). Will automatically include it from the right pve cluster.
+ host_group No string No - This is the name of the hosts group of our ansible inventory the included vms/lxcs will be available under.
- qemu_ansible_user No string No - User ansible will use to connect, defaults to admin. If you dont want to use debian cinit images you might need to set something else than admin.
Ubuntu for example wont work if you set the cloud init user to admin.

21.1.1. Property VM Base Inventory > include_stacks > include_stacks items > stack_fqdn

Type string
Required Yes

Description: Target stack fqdn to include (stack name + pve_cloud_domain). Will automatically include it from the right pve cluster.

Examples:

"bind.your-other-cloud.domain"
"other-k8s.your-other-cloud.domain"

21.1.2. Property VM Base Inventory > include_stacks > include_stacks items > host_group

Type string
Required Yes

Description: This is the name of the hosts group of our ansible inventory the included vms/lxcs will be available under.

21.1.3. Property VM Base Inventory > include_stacks > include_stacks items > qemu_ansible_user

Type string
Required No

Description: User ansible will use to connect, defaults to admin. If you dont want to use debian cinit images you might need to set something else than admin. Ubuntu for example wont work if you set the cloud init user to admin.

22. Property VM Base Inventory > root_ssh_pub_key

Type string
Required Yes

Description: trusted root key for the cloud init image.

23. Property VM Base Inventory > pve_ha_group

Type string
Required No

Description: PVE HA group this vm should be assigned to (optional).

24. Property VM Base Inventory > target_pve_hosts

Type array of string
Required No

Description: Array of proxmox hosts in the target pve that are eligible for scheduling. If not specified all online hosts are considered.

Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation See below
Each item of this array must be Description
target_pve_hosts items The hostname of the proxmox host. Just the hostname, no cluster name or cloud domain should be specified, as they are implicit.

24.1. VM Base Inventory > target_pve_hosts > target_pve_hosts items

Type string
Required No

Description: The hostname of the proxmox host. Just the hostname, no cluster name or cloud domain should be specified, as they are implicit.

Example:

"proxmox-host-a"

25. Property VM Base Inventory > qemus

Type array of object
Required Yes

Description: List of qemu vms for the stack.

Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation See below
Each item of this array must be Description
qemus items -

25.1. VM Base Inventory > qemus > qemus items

Type object
Required No
Additional properties Not allowed
Property Pattern Type Deprecated Definition Title/Description
- hostname No string No - Optional unique hostname for this node, otherwise pet name random name will be generated.
- vars No object No - Custom variables for this node specifically, might be useful in your own custom playbooks.
- target_host No string No - Optional specific proxmox host you want to tie this node to on creation. Can of course still be moved afterwards. Cloud domain is implicit and should not be specified.
+ parameters No object No - In accordance with pve qm cli tool, creation parameters mapped (key equals the --key part and value the passed value).
- network_config No string No - Cinit network config yaml string. Will be the last cfg piece that gets merged into the final cloudinit network config. Can be used for overrides.
+ disk No object No - -

25.1.1. Property VM Base Inventory > qemus > qemus items > hostname

Type string
Required No

Description: Optional unique hostname for this node, otherwise pet name random name will be generated.

25.1.2. Property VM Base Inventory > qemus > qemus items > vars

Type object
Required No
Additional properties Any type allowed

Description: Custom variables for this node specifically, might be useful in your own custom playbooks.

25.1.3. Property VM Base Inventory > qemus > qemus items > target_host

Type string
Required No

Description: Optional specific proxmox host you want to tie this node to on creation. Can of course still be moved afterwards. Cloud domain is implicit and should not be specified.

Example:

"proxmox-host-B.proxmox-cluster-A"

25.1.4. Property VM Base Inventory > qemus > qemus items > parameters

Type object
Required Yes
Additional properties Any type allowed

Description: In accordance with pve qm cli tool, creation parameters mapped (key equals the --key part and value the passed value).

Example:

{
    "cores": 1,
    "memory": 1024
}

25.1.5. Property VM Base Inventory > qemus > qemus items > network_config

Type string
Required No

Description: Cinit network config yaml string. Will be the last cfg piece that gets merged into the final cloudinit network config. Can be used for overrides.

25.1.6. Property VM Base Inventory > qemus > qemus items > disk

Type object
Required Yes
Additional properties Not allowed
Property Pattern Type Deprecated Definition Title/Description
+ size No string No - Size of the vms disk.
- options No object No - Mount options
+ pool No string No - Ceph pool name the vms disk will be created in.
25.1.6.1. Property VM Base Inventory > qemus > qemus items > disk > size
Type string
Required Yes

Description: Size of the vms disk.

Example:

"25G"
25.1.6.2. Property VM Base Inventory > qemus > qemus items > disk > options
Type object
Required No
Additional properties Any type allowed

Description: Mount options

25.1.6.3. Property VM Base Inventory > qemus > qemus items > disk > pool
Type string
Required Yes

Description: Ceph pool name the vms disk will be created in.

26. Property VM Base Inventory > tcp_proxies

Type array of object
Required No

Description: Raw tcp forwards on the clusters haproxy to k8s services exposed via nodeport.

Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation See below
Each item of this array must be Description
tcp_proxies items -

26.1. VM Base Inventory > tcp_proxies > tcp_proxies items

Type object
Required No
Additional properties Not allowed
Property Pattern Type Deprecated Definition Title/Description
+ proxy_name No string No - Simple name for the forward. Will be rendered in haproxy configuration so it shouldnt contain special characters.
+ haproxy_port No number No - Frontend port of the proxmox clusters haproxy.
+ node_port No number No - Nodeport of the k8s service.
- proxy_snippet No string No - Additional snippet that will be inserted into the haproxy listen block. Can be used to adjust the forwards settings.
- external No boolean No - Will also create a forward on the external floating ip of the proxy not only the internal.

26.1.1. Property VM Base Inventory > tcp_proxies > tcp_proxies items > proxy_name

Type string
Required Yes

Description: Simple name for the forward. Will be rendered in haproxy configuration so it shouldnt contain special characters.

Examples:

"gitlab-ssh"
"example-postgres"

26.1.2. Property VM Base Inventory > tcp_proxies > tcp_proxies items > haproxy_port

Type number
Required Yes

Description: Frontend port of the proxmox clusters haproxy.

26.1.3. Property VM Base Inventory > tcp_proxies > tcp_proxies items > node_port

Type number
Required Yes

Description: Nodeport of the k8s service.

26.1.4. Property VM Base Inventory > tcp_proxies > tcp_proxies items > proxy_snippet

Type string
Required No

Description: Additional snippet that will be inserted into the haproxy listen block. Can be used to adjust the forwards settings.

Example:

"# long running tcp connections that only rarely transmit data\n# ssh client connection for example\ntimeout client 1h \ntimeout server 1h \n"

26.1.5. Property VM Base Inventory > tcp_proxies > tcp_proxies items > external

Type boolean
Required No

Description: Will also create a forward on the external floating ip of the proxy not only the internal.

27. Property VM Base Inventory > qemu_default_user

Type string
Required No

Description: User for cinit.

28. Property VM Base Inventory > qemu_hashed_pw

Type string
Required No

Description: Pw for default user defaults to hashed 'password' for debian cloud init image. Different cloud init images require different hash methods. You cannot use the same from debian for ubuntu for example.

29. Property VM Base Inventory > qemu_base_parameters

Type object
Required No
Additional properties Any type allowed

Description: Base parameters applied to all qemus. passed to the proxmox qm cli tool for creating vm.

30. Property VM Base Inventory > qemu_image_url

Type string
Required No

Description: http(s) download link for cloud init image.

31. Property VM Base Inventory > qemu_keyboard_layout

Type string
Required No

Description: Keyboard layout for cloudinit.

32. Property VM Base Inventory > qemu_network_config

Type string
Required No

Description: Optional qemu network config as a yaml string that is merged into the cloudinit network config of all qemus.

33. Property VM Base Inventory > qemu_global_vars

Type object
Required No
Additional properties Any type allowed

Description: Variables that will be applied set for all qemus vms.

34. Property VM Base Inventory > plugin

Type enum (of string)
Required No

Description: Id of ansible inventory plugin

Must be one of:

  • "pxc.cloud.qemu_inv"