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'