kubevirt – KubeVirt inventory source
Note
This inventory plugin is part of the kubevirt.core collection.
To install it, use: ansible-galaxy collection install kubevirt.core.
You need further requirements to be able to use this inventory plugin,
see Requirements for details.
To use it in a playbook, specify: kubevirt.core.kubevirt.
Synopsis
- Fetch running VirtualMachineInstances for one or more namespaces with an optional label selector. 
- Groups by namespace, namespace_vmis and labels. 
- Uses the kubectl connection plugin to access the Kubernetes cluster. 
- Uses kubevirt.(yml|yaml) YAML configuration file to set parameter values. 
Requirements
The below requirements are needed on the local controller node that executes this inventory.
- python >= 3.6 
- kubernetes >= 12.0.0 
- PyYAML >= 3.11 
Parameters
| Parameter | Comments | 
|---|---|
| Toggle to enable/disable the caching of the inventory’s source data, requires a cache plugin setup to work. Choices: Configuration: 
 | |
| Cache connection data or path, read cache plugin documentation for specifics. Configuration: 
 | |
| Cache plugin to use for the inventory’s source data. Default: :ansible-option-default:`"memory"` Configuration: 
 | |
| Prefix to use for cache plugin files/tables Default: :ansible-option-default:`"ansible\_inventory\_"` Configuration: 
 | |
| Cache duration in seconds Default: :ansible-option-default:`3600` Configuration: 
 | |
| Create vars from jinja2 expressions. Default: :ansible-option-default:`{}` | |
| Optional list of cluster connection settings. If no connections are provided, the default ~/.kube/config and active context will be used, and objects will be returned for all namespaces the active user is authorized to access. | |
| Token used to authenticate with the API. Can also be specified via K8S_AUTH_API_KEY environment variable. | |
| Specify the used KubeVirt API version. | |
| Path to a CA certificate used to authenticate with the API. Can also be specified via K8S_AUTH_SSL_CA_CERT environment variable. | |
| Path to a certificate used to authenticate with the API. Can also be specified via K8S_AUTH_CERT_FILE environment variable. | |
| Path to a key file used to authenticate with the API. Can also be specified via K8S_AUTH_KEY_FILE environment variable. | |
| The name of a context found in the config file. Can also be specified via K8S_AUTH_CONTEXT environment variable. | |
| Provide a URL for accessing the API. Can also be specified via K8S_AUTH_HOST environment variable. | |
| Enable kubesecondarydns derived host names when using a secondary network interface. Choices: | |
| Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from ~/.kube/config. Can also be specified via K8S_AUTH_KUBECONFIG environment variable. | |
| Define a label selector to select a subset of the fetched VirtualMachineInstances. | |
| Optional name to assign to the cluster. If not provided, a name is constructed from the server and port. | |
| List of namespaces. If not specified, will fetch all VirtualMachineInstances for all namespaces the user is authorized to access. | |
| In case multiple networks are attached to a VirtualMachineInstance, define which interface should be returned as primary IP address. | |
| Provide a password for authenticating with the API. Can also be specified via K8S_AUTH_PASSWORD environment variable. | |
| Enable the use of services to establish an SSH connection to the VirtualMachine. Choices: | |
| Provide a username for authenticating with the API. Can also be specified via K8S_AUTH_USERNAME environment variable. | |
| Whether or not to verify the API server’s SSL certificates. Can also be specified via K8S_AUTH_VERIFY_SSL environment variable. Choices: | |
| Add hosts to group based on Jinja2 conditionals. Default: :ansible-option-default:`{}` | |
| Specify the format of the host in the inventory group. Available specifiers: name, namespace, uid. | |
| Add hosts to group based on the values of a variable. Default: :ansible-option-default:`[]` | |
| The default value when the host variable’s value is an empty string. This option is mutually exclusive with  | |
| The key from input dictionary used to generate groups | |
| parent group for keyed group | |
| A keyed group name will start with this prefix Default: :ansible-option-default:`""` | |
| separator used to build the keyed group name Default: :ansible-option-default:`"\_"` | |
| Set this option to False to omit the  This option is mutually exclusive with  Choices: | |
| Use in conjunction with keyed_groups. By default, a keyed group that does not have a prefix or a separator provided will have a name that starts with an underscore. This is because the default prefix is “” and the default separator is “_”. Set this option to False to omit the leading underscore (or other separator) if no prefix is given. If the group name is derived from a mapping the separator is still used to concatenate the items. To not use a separator in the group name at all, set the separator for the keyed group to an empty string instead. Choices: | |
| Token that ensures this is a source file for the “kubevirt” plugin. Choices: | |
| If  Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default. Choices: | |
| Merge extra vars into the available variables for composition (highest precedence). Choices: Configuration: 
 | 
Examples
# Filename must end with kubevirt.[yml|yaml]
# Authenticate with token, and return all VirtualMachineInstances for all accessible namespaces
plugin: kubevirt.core.kubevirt
connections:
- host: https://192.168.64.4:8443
  api_key: xxxxxxxxxxxxxxxx
  validate_certs: false
# Use default config (~/.kube/config) file and active context, and return VirtualMachineInstances
# from namespace testing with interfaces connected to network bridge-network
plugin: kubevirt.core.kubevirt
connections:
- namespaces:
  - testing
  network_name: bridge-network
# Use default config (~/.kube/config) file and active context, and return VirtualMachineInstances
# from namespace testing with label app=test
plugin: kubevirt.core.kubevirt
connections:
- namespaces:
  - testing
  label_selector: app=test
# Use a custom config file, and a specific context.
plugin: kubevirt.core.kubevirt
connections:
- kubeconfig: /path/to/config
  context: 'awx/192-168-64-4:8443/developer'