iocage tags
An iocage tag is a key-value pair applied to a jail to hold metadata about
that jail. Each tag is a label consisting of a key and an optional value. The
iocage tags are stored in the dictionary iocage_tags.
The format for iocage tags used in this guide is tag1=val1 tag2=val2
.... See the regex in the Dictionary iocage_tags section below.
Note
The iocage tags are not related to Ansible Tags in any way. In this
document, a tag means an Ansible tag while iocage tag(s) always
reference the attribute(s) of the dictionary iocage_tags.
Property notes
We use the iocage property notes to store iocage tags. Quoting man
iocage:
PROPERTIES
...
notes="any string"
Custom notes for miscellaneous tagging.
Default: none
Source: local
For example, put the notes into the dictionary clones
clones:
test_111:
clone_from: ansible_client
properties:
ip4_addr: 'em0|10.1.0.111/24'
notes: "vmm={{ inventory_hostname }} swarm=sw_01"
, or into the dictionary swarms
swarms:
sw_01:
count: 3
template: ansible_client
properties:
notes: "vmm={{ inventory_hostname }}"
Then, the playbook pb_iocage_ansible_clients creates jails, for
example, on the host iocage_02
[iocage_02]# iocage list -l
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+====================+=====+================+==========+
| 149 | afa9e515 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.122 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 148 | c1670497 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.135 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 147 | test_111 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.111/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
with notes
[iocage_02]# iocage get notes afa9e515
vmm=iocage_02 swarm=sw_01
[iocage_02]# iocage get notes c1670497
vmm=iocage_02 swarm=sw_01
[iocage_02]# iocage get notes test_111
vmm=iocage_02 swarm=sw_01
Note
The tasks pb-iocage-ansible-clients/swarm.yml create the iocage tag
swarm automatically from the dictionary swarms keys.
See also
The example 206 Create DHCP and fixed IP jails
Dictionary iocage_tags
In the inventory plugin vbotka.freebsd.iocage enable the parameter
get_properties, compose the dictionary iocage_tags, and use it to
create keyed_groups
get_properties: True
compose:
iocage_tags: dict(iocage_properties.notes | regex_findall('(\w+)=([\w\-]+)'))
keyed_groups:
- prefix: swarm
key: iocage_tags.swarm
- prefix: vmm
key: iocage_tags.vmm
Then, this plugin creates the dictionary iocage_tags in each jail
iocage_tags:
swarm: sw_01
vmm: iocage_02
and use it to create the groups
(env) > ansible-inventory -i hosts --graph
@all:
|--@ungrouped:
|--@swarm_sw_01:
| |--afa9e515
| |--c1670497
| |--test_111
|--@vmm_iocage_02:
| |--afa9e515
| |--c1670497
| |--test_111
Hint
In the Index search iocage_tags to see what examples are available.