031 Display iocage lists and dictionaries.¶
Extending example 030.
Tree¶
shell> tree .
.
├── ansible.cfg
├── iocage-hosts.ini
└── pb-iocage-display-lists.yml
Synopsis¶
On two iocage hosts:
iocage_01
iocage_02
In the playbook pb-iocage-display-lists.yml, use the module vbotka.freebsd.iocage to:
create and display iocage lists and dictionaries.
Notes¶
Quoting from man iocage:
list List the specified dataset type. By default, all jails are
listed.
Options:
[--http] Changes [-R | --remote] to use HTTP.
[-H | -h | --header] Used in scripting. Use tabs for sepa-
rators.
[-P | --plugins] Shows plugins installed on the system.
[-PRO] Lists official plugins available for
download.
[-R | --remote] Shows available RELEASE options for re-
mote.
[-b | -r | --base | --release | dataset_type]
List all bases.
[-l | --long] Shows JID, NAME, BOOT, STATE, TYPE, RE-
LEASE, IP4, IP6, and TEMPLATE informa-
tion.
[-q | --quick] Lists all jails with less processing
and fields.
[-s | --sort TEXT] Sorts the list by the given type.
[-t | --template | dataset_type]
Lists all templates.
Lists at iocage_01¶
[iocage_01]# iocage list -r
+---------------+
| Bases fetched |
+===============+
| 13.3-RELEASE |
+---------------+
| 13.4-RELEASE |
+---------------+
[iocage_01]# iocage list -P
+-----+------+------+-------+------+---------+-----+-----+----------+--------+---------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | PORTAL | DOC_URL |
+=====+======+======+=======+======+=========+=====+=====+==========+========+=========+
+-----+------+------+-------+------+---------+-----+-----+----------+--------+---------+
[iocage_01]# iocage list -lt
+------+----------------+------+-------+----------+-----------------+---------------------+-----+----------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+======+================+======+=======+==========+=================+=====================+=====+==========+==========+
| None | ansible_client | off | down | template | 13.4-RELEASE-p2 | vnet0|10.1.0.198/24 | - | - | no |
+------+----------------+------+-------+----------+-----------------+---------------------+-----+----------+----------+
[iocage_01]# iocage list -l
+-----+----------+------+-------+------+-----------------+---------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+=====================+=====+================+==========+
| 134 | test_101 | off | up | jail | 13.4-RELEASE-p2 | vnet0|10.1.0.101/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+---------------------+-----+----------------+----------+
| 135 | test_102 | off | up | jail | 13.4-RELEASE-p2 | vnet0|10.1.0.102/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+---------------------+-----+----------------+----------+
| 136 | test_103 | off | up | jail | 13.4-RELEASE-p2 | vnet0|10.1.0.103/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+---------------------+-----+----------------+----------+
Lists at iocage_02¶
[iocage_02]# iocage list -r
+---------------+
| Bases fetched |
+===============+
| 14.1-RELEASE |
+---------------+
[iocage_02]# iocage list -P
+-----+------+------+-------+------+---------+-----+-----+----------+--------+---------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | PORTAL | DOC_URL |
+=====+======+======+=======+======+=========+=====+=====+==========+========+=========+
+-----+------+------+-------+------+---------+-----+-----+----------+--------+---------+
[iocage_02]# iocage list -lt
+------+----------------+------+-------+----------+-----------------+-------------------+-----+----------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+======+================+======+=======+==========+=================+===================+=====+==========+==========+
| None | ansible_client | off | down | template | 14.1-RELEASE-p6 | em0|10.1.0.199/24 | - | - | no |
+------+----------------+------+-------+----------+-----------------+-------------------+-----+----------+----------+
[iocage_02]# iocage list -l
+-----+----------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+===================+=====+================+==========+
| 170 | test_111 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.111/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
| 171 | test_112 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.112/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
| 172 | test_113 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.113/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
Inventory iocage-hosts.ini¶
iocage_01 ansible_host=10.1.0.18
iocage_02 ansible_host=10.1.0.73
[iocage]
iocage_01
iocage_02
[iocage:vars]
ansible_user=admin
ansible_python_interpreter=auto_silent
Playbook pb-iocage-display-lists.yml¶
- name: Display iocage lists and dictionaries.
hosts: iocage
environment:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
tasks:
- name: Set iocage lists and dictionaries.
vbotka.freebsd.iocage:
- name: Display iocage lists and dictionaries (omit properties).
vars:
tkeys: "{{ iocage_templates.keys() }}"
tvals: "{{ iocage_templates.values()
| list
| community.general.remove_keys(target=['properties']) }}"
jkeys: "{{ iocage_jails.keys() }}"
jvals: "{{ iocage_jails.values()
| list
| community.general.remove_keys(target=['properties']) }}"
ansible.builtin.debug:
msg: |
iocage_releases: {{ iocage_releases }}
iocage_plugins:
{{ iocage_plugins | to_nice_yaml(indent=2) | indent(2) }}
iocage_templates:
{{ dict(tkeys|zip(tvals)) | to_nice_yaml(indent=2) | indent(2) }}
iocage_jails:
{{ dict(jkeys|zip(jvals)) | to_nice_yaml(indent=2) | indent(2) }}
- name: "Display templates and jails properties={{ properties | d(false) }}"
when: properties | d(false) | bool
ansible.builtin.debug:
msg: |
iocage_templates:
{{ iocage_templates | to_nice_yaml(indent=2) | indent(2) }}
iocage_jails:
{{ iocage_jails | to_nice_yaml(indent=2) | indent(2) }}
Playbook output¶
(env) > ansible-playbook pb-iocage-display-lists.yml -i iocage-hosts.ini
PLAY [Display iocage lists and dictionaries.] **************************************************
TASK [Set iocage lists and dictionaries.] ******************************************************
ok: [iocage_01]
ok: [iocage_02]
TASK [Display iocage lists and dictionaries (omit properties).] ********************************
ok: [iocage_01] =>
msg: |-
iocage_releases: ['13.3-RELEASE', '13.4-RELEASE']
iocage_plugins:
{}
iocage_templates:
ansible_client:
basejail: 'no'
boot: 'off'
ip4: vnet0|10.1.0.198/24
ip6: '-'
jid: '-'
name: ansible_client
release: 13.4-RELEASE-p2
state: down
template: '-'
type: template
iocage_jails:
test_101:
basejail: 'no'
boot: 'off'
ip4: vnet0|10.1.0.101/24
ip6: '-'
jid: '134'
name: test_101
release: 13.4-RELEASE-p2
state: up
template: ansible_client
type: jail
test_102:
basejail: 'no'
boot: 'off'
ip4: vnet0|10.1.0.102/24
ip6: '-'
jid: '135'
name: test_102
release: 13.4-RELEASE-p2
state: up
template: ansible_client
type: jail
test_103:
basejail: 'no'
boot: 'off'
ip4: vnet0|10.1.0.103/24
ip6: '-'
jid: '136'
name: test_103
release: 13.4-RELEASE-p2
state: up
template: ansible_client
type: jail
ok: [iocage_02] =>
msg: |-
iocage_releases: ['14.1-RELEASE']
iocage_plugins:
{}
iocage_templates:
ansible_client:
basejail: 'no'
boot: 'off'
ip4: em0|10.1.0.199/24
ip6: '-'
jid: None
name: ansible_client
release: 14.1-RELEASE-p6
state: down
template: '-'
type: template
iocage_jails:
test_111:
basejail: 'no'
boot: 'off'
ip4: em0|10.1.0.111/24
ip6: '-'
jid: '170'
name: test_111
release: 14.1-RELEASE-p6
state: up
template: ansible_client
type: jail
test_112:
basejail: 'no'
boot: 'off'
ip4: em0|10.1.0.112/24
ip6: '-'
jid: '171'
name: test_112
release: 14.1-RELEASE-p6
state: up
template: ansible_client
type: jail
test_113:
basejail: 'no'
boot: 'off'
ip4: em0|10.1.0.113/24
ip6: '-'
jid: '172'
name: test_113
release: 14.1-RELEASE-p6
state: up
template: ansible_client
type: jail
TASK [Display templates and jails properties=False] ********************************************
skipping: [iocage_01]
skipping: [iocage_02]
PLAY RECAP *************************************************************************************
iocage_01: ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
iocage_02: ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0