Qemu inv schema
Title: VM Inventory
|
|
| Type |
object |
| Required |
No |
| Additional properties |
Not allowed |
Description: Inventory for deploying qemu VMs on PVE.
| 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 |
| - ingress_domains |
No |
array of object |
No |
- |
Specific non ingress routing, via hostname lookup inside the proxy. This allows easy integration of standalone services like mailcow or other standalone deployments that do their own ingress termination.
|
38. Property VM Inventory > target_pve
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"
39. Property VM Inventory > stack_name
Description: Your stack name, needs to be unique within the cloud domain.
40. Property VM 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. |
40.1. Property VM Inventory > static_includes > dhcp_stack
Description: For interacting with kea reservations.
Example:
"dhcp.your-cloud.domain"
40.2. Property VM Inventory > static_includes > proxy_stack
Description: Reloading the proxy.
Example:
"proxy.your-cloud.domain"
40.3. Property VM Inventory > static_includes > postgres_stack
Description: The playbook needs the pve cloud postgres stack where state and general configuration is stored.
Example:
"patroni.your-cloud.domain"
40.4. Property VM Inventory > static_includes > bind_stack
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"
41. Property VM 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 |
41.1. VM 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.
|
41.1.1. Property VM Inventory > include_stacks > include_stacks items > stack_fqdn
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"
41.1.2. Property VM Inventory > include_stacks > include_stacks items > host_group
Description: This is the name of the hosts group of our ansible inventory the included vms/lxcs will be available under.
41.1.3. Property VM Inventory > include_stacks > include_stacks items > qemu_ansible_user
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.
42. Property VM Inventory > root_ssh_pub_key
Description: trusted root key for the cloud init image.
43. Property VM Inventory > pve_ha_group
Description: PVE HA group this vm should be assigned to (optional).
44. Property VM 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. |
44.1. VM Inventory > target_pve_hosts > target_pve_hosts items
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"
45. Property VM 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 |
- |
45.1. VM 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 |
- |
- |
45.1.1. Property VM Inventory > qemus > qemus items > hostname
Description: Optional unique hostname for this node, otherwise pet name random name will be generated.
45.1.2. Property VM 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.
45.1.3. Property VM Inventory > qemus > qemus items > target_host
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"
45.1.4. Property VM 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
}
45.1.5. Property VM Inventory > qemus > qemus items > network_config
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.
45.1.6. Property VM 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. |
45.1.6.1. Property VM Inventory > qemus > qemus items > disk > size
Description: Size of the vms disk.
Example:
"25G"
45.1.6.2. Property VM Inventory > qemus > qemus items > disk > options
|
|
| Type |
object |
| Required |
No |
| Additional properties |
Any type allowed |
Description: Mount options
45.1.6.3. Property VM Inventory > qemus > qemus items > disk > pool
Description: Ceph pool name the vms disk will be created in.
46. Property VM 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 |
46.1. VM 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. |
46.1.1. Property VM Inventory > tcp_proxies > tcp_proxies items > proxy_name
Description: Simple name for the forward. Will be rendered in haproxy configuration so it shouldnt contain special characters.
Examples:
"gitlab-ssh"
"example-postgres"
46.1.2. Property VM Inventory > tcp_proxies > tcp_proxies items > haproxy_port
Description: Frontend port of the proxmox clusters haproxy.
46.1.3. Property VM Inventory > tcp_proxies > tcp_proxies items > node_port
Description: Nodeport of the k8s service.
46.1.4. Property VM Inventory > tcp_proxies > tcp_proxies items > proxy_snippet
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"
46.1.5. Property VM Inventory > tcp_proxies > tcp_proxies items > external
Description: Will also create a forward on the external floating ip of the proxy not only the internal.
47. Property VM Inventory > qemu_default_user
Description: User for cinit.
48. Property VM Inventory > qemu_hashed_pw
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.
49. Property VM 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.
50. Property VM Inventory > qemu_image_url
Description: http(s) download link for cloud init image.
51. Property VM Inventory > qemu_keyboard_layout
Description: Keyboard layout for cloudinit.
52. Property VM Inventory > qemu_network_config
Description: Optional qemu network config as a yaml string that is merged into the cloudinit network config of all qemus.
53. Property VM Inventory > qemu_global_vars
|
|
| Type |
object |
| Required |
No |
| Additional properties |
Any type allowed |
Description: Variables that will be applied set for all qemus vms.
54. Property VM Inventory > plugin
|
|
| Type |
enum (of string) |
| Required |
No |
Description: Id of ansible inventory plugin
Must be one of:
55. Property VM Inventory > ingress_domains
|
|
| Type |
array of object |
| Required |
No |
Description: Specific non ingress routing, via hostname lookup inside the proxy. This allows easy integration of
standalone services like mailcow or other standalone deployments that do their own ingress termination.
|
Array restrictions |
| Min items |
N/A |
| Max items |
N/A |
| Items unicity |
False |
| Additional items |
False |
| Tuple validation |
See below |
55.1. VM Inventory > ingress_domains > ingress_domains items
|
|
| Type |
object |
| Required |
No |
| Additional properties |
Any type allowed |
| Property |
Pattern |
Type |
Deprecated |
Definition |
Title/Description |
| - zone |
No |
string |
No |
- |
Internal zone that is registered in bind. In this case the playbooks will make records in bind pointing to the vms of the stack.
|
| - names |
No |
array of string |
No |
- |
Names of the zone that will be routed to vms of this stack. |
| - external |
No |
boolean |
No |
- |
Whether or not the routing will also bind to the external floating ip of our haproxy.
|
55.1.1. Property VM Inventory > ingress_domains > ingress_domains items > zone
Description: Internal zone that is registered in bind. In this case the playbooks will make records in bind
pointing to the vms of the stack.
55.1.2. Property VM Inventory > ingress_domains > ingress_domains items > names
|
|
| Type |
array of string |
| Required |
No |
Description: Names of the zone that will be routed to vms of this 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 |
| names items |
- |
55.1.2.1. VM Inventory > ingress_domains > ingress_domains items > names > names items
55.1.3. Property VM Inventory > ingress_domains > ingress_domains items > external
Description: Whether or not the routing will also bind to the external floating ip of our haproxy.