Project
Dictionary project
The project variable is a dictionary of jails. The vmm attribute stores
the host on which the jail is running.
project:
logserv_1:
class: [logserv]
vmm: iocage_01
http_1:
class: [http, logclient]
vmm: iocage_02
db_1:
class: [db, logclient]
vmm: iocage_02
http_2:
class: [http, logclient]
vmm: iocage_04
db_2:
class: [db, logclient]
vmm: iocage_04
Dictionary vmm
Declare vmm as a dictionary of hosts running the jails.
vmm_groups: "{{ dict(project | dict2items | groupby('value.vmm')) }}"
vmm: "{{ dict(vmm_groups.keys() | zip(vmm_groups.values() | map('items2dict'))) }}"
gives
vmm:
iocage_01:
logserv_1:
class:
- logserv
vmm: iocage_01
iocage_02:
db_1:
class:
- db
- logclient
vmm: iocage_02
http_1:
class:
- http
- logclient
vmm: iocage_02
iocage_04:
db_2:
class:
- db
- logclient
vmm: iocage_04
http_2:
class:
- http
- logclient
vmm: iocage_04
Dictionary class
Declare class as a dictionary mapping classes to their members.
class_list: "{{ project | dict2items }}"
class_keys: "{{ class_list | map(attribute='value.class') | flatten | unique | sort }}"
class: |
{% filter from_yaml %}
{% for k in class_keys %}
{{ k }}: {{ class_list | selectattr('value.class', 'contains', k) | map(attribute='key') }}
{% endfor %}
{% endfilter %}
gives
class:
db:
- db_1
- db_2
http:
- http_1
- http_2
logclient:
- http_1
- db_1
- http_2
- db_2
logserv:
- logserv_1