Note
This module is part of ansible-base
and included in all Ansible installations. In most cases, you can use the short module name constructed even without specifying the collections:
keyword. Despite that, we recommend you use the FQCN for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.
New in version 2.4: of ansible.builtin
.config
extension to define var expressions and group conditionalsParameter | Choices/Defaults | Configuration | Comments |
---|---|---|---|
compose dictionary | Default: {} | Create vars from jinja2 expressions. | |
groups dictionary | Default: {} | Add hosts to group based on Jinja2 conditionals. | |
keyed_groups list / elements=string | Default: [] | Add hosts to group based on the values of a variable. | |
leading_separator boolean added in 2.11 of ansible.builtin |
| 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. | |
plugin string / required |
| token that ensures this is a source file for the 'constructed' plugin. | |
strict boolean |
| If yes make invalid entries a fatal error, otherwise skip and continue.Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default. | |
use_extra_vars boolean added in 2.11 of ansible.builtin |
| ini entries: [inventory_plugins] env:ANSIBLE_INVENTORY_USE_EXTRA_VARS | Merge extra vars into the available variables for composition (highest precedence). |
use_vars_plugins boolean added in 2.11 of ansible.builtin |
| Normally, for performance reasons, vars plugins get executed after the inventory sources complete the base inventory, this option allows for getting vars related to hosts/groups from those plugins. The host_group_vars (enabled by default) 'vars plugin' is the one responsible for reading host_vars/ and group_vars/ directories. This will execute all vars plugins, even those that are not supposed to execute at the 'inventory' stage. See vars plugins docs for details on 'stage'. |
# inventory.config file in YAML format plugin: constructed strict: False compose: var_sum: var1 + var2 # this variable will only be set if I have a persistent fact cache enabled (and have non expired facts) # `strict: False` will skip this instead of producing an error if it is missing facts. server_type: "ansible_hostname | regex_replace ('(.{6})(.{2}).*', '\\2')" groups: # simple name matching webservers: inventory_hostname.startswith('web') # using ec2 'tags' (assumes aws inventory) development: "'devel' in (ec2_tags|list)" # using other host properties populated in inventory private_only: not (public_dns_name is defined or ip_address is defined) # complex group membership multi_group: (group_names | intersect(['alpha', 'beta', 'omega'])) | length >= 2 keyed_groups: # this creates a group per distro (distro_CentOS, distro_Debian) and assigns the hosts that have matching values to it, # using the default separator "_" - prefix: distro key: ansible_distribution # the following examples assume the first inventory is from the `aws_ec2` plugin # this creates a group per ec2 architecture and assign hosts to the matching ones (arch_x86_64, arch_sparc, etc) - prefix: arch key: architecture # this creates a group per ec2 region like "us_west_1" - prefix: "" separator: "" key: placement.region # this creates a common parent group for all ec2 availability zones - key: placement.availability_zone parent_group: all_ec2_zones
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/builtin/constructed_inventory.html