[PR #9262/23d97fa4 backport][stable-10] Add inventory plugin iocage (#9378)
Add inventory plugin iocage (#9262)
* Add inventory plugin iocage #9261
* inventory/iocage.py BOTMETA entry added.
* Remove missing methods from the test.
* Avoid shell mode.
* Parameter host is optional default=localhost
* Fix AnsibleError calls.
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* iocage_data removed. Not necessarily defined at this point.
* Description mentions that remote hosts are contacted via SSH.
* test inventory iocage
* Create get_jails and get_properties in iocage plugin to simplify testing.
* Update test_iocage.py
* Add fixtures iocage_*
* Update documentation.
* Update documentation.
* Update documentation.
* Fix localhost environment.
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/iocage.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 23d97fa4b0
)
Co-authored-by: Vladimir Botka <vbotka@gmail.com>
pull/9380/head
parent
f6fa7fb273
commit
60ba39da58
|
@ -213,6 +213,8 @@ files:
|
|||
maintainers: opoplawski
|
||||
$inventories/gitlab_runners.py:
|
||||
maintainers: morph027
|
||||
$inventories/iocage.py:
|
||||
maintainers: vbotka
|
||||
$inventories/icinga2.py:
|
||||
maintainers: BongoEADGC6
|
||||
$inventories/linode.py:
|
||||
|
|
|
@ -0,0 +1,266 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (c) 2024 Vladimir Botka <vbotka@gmail.com>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
DOCUMENTATION = '''
|
||||
name: iocage
|
||||
short_description: iocage inventory source
|
||||
version_added: 10.2.0
|
||||
author:
|
||||
- Vladimir Botka (@vbotka)
|
||||
requirements:
|
||||
- iocage >= 1.8
|
||||
description:
|
||||
- Get inventory hosts from the iocage jail manager running on O(host).
|
||||
- By default, O(host) is V(localhost). If O(host) is not V(localhost) it
|
||||
is expected that the user running Ansible on the controller can
|
||||
connect to the O(host) account O(user) with SSH non-interactively and
|
||||
execute the command C(iocage list).
|
||||
- Uses a configuration file as an inventory source, it must end
|
||||
in C(.iocage.yml) or C(.iocage.yaml).
|
||||
extends_documentation_fragment:
|
||||
- ansible.builtin.constructed
|
||||
- ansible.builtin.inventory_cache
|
||||
options:
|
||||
plugin:
|
||||
description:
|
||||
- The name of this plugin, it should always be set to
|
||||
V(community.general.iocage) for this plugin to recognize
|
||||
it as its own.
|
||||
required: true
|
||||
choices: ['community.general.iocage']
|
||||
type: str
|
||||
host:
|
||||
description: The IP/hostname of the C(iocage) host.
|
||||
type: str
|
||||
default: localhost
|
||||
user:
|
||||
description:
|
||||
- C(iocage) user.
|
||||
It is expected that the O(user) is able to connect to the
|
||||
O(host) with SSH and execute the command C(iocage list).
|
||||
This option is not required if O(host) is V(localhost).
|
||||
type: str
|
||||
get_properties:
|
||||
description:
|
||||
- Get jails' properties.
|
||||
Creates dictionary C(iocage_properties) for each added host.
|
||||
type: boolean
|
||||
default: false
|
||||
env:
|
||||
description: O(user)'s environment on O(host).
|
||||
type: dict
|
||||
default: {}
|
||||
notes:
|
||||
- You might want to test the command C(ssh user@host iocage list -l) on
|
||||
the controller before using this inventory plugin with O(user) specified
|
||||
and with O(host) other than V(localhost).
|
||||
- If you run this inventory plugin on V(localhost) C(ssh) is not used.
|
||||
In this case, test the command C(iocage list -l).
|
||||
- This inventory plugin creates variables C(iocage_*) for each added host.
|
||||
- The values of these variables are collected from the output of the
|
||||
command C(iocage list -l).
|
||||
- The names of these variables correspond to the output columns.
|
||||
- The column C(NAME) is used to name the added host.
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
# file name must end with iocage.yaml or iocage.yml
|
||||
plugin: community.general.iocage
|
||||
host: 10.1.0.73
|
||||
user: admin
|
||||
|
||||
# user is not required if iocage is running on localhost (default)
|
||||
plugin: community.general.iocage
|
||||
|
||||
# run cryptography without legacy algorithms
|
||||
plugin: community.general.iocage
|
||||
host: 10.1.0.73
|
||||
user: admin
|
||||
env:
|
||||
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
|
||||
|
||||
# enable cache
|
||||
plugin: community.general.iocage
|
||||
host: 10.1.0.73
|
||||
user: admin
|
||||
env:
|
||||
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
|
||||
cache: true
|
||||
|
||||
# see inventory plugin ansible.builtin.constructed
|
||||
plugin: community.general.iocage
|
||||
host: 10.1.0.73
|
||||
user: admin
|
||||
env:
|
||||
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
|
||||
cache: true
|
||||
strict: false
|
||||
compose:
|
||||
ansible_host: iocage_ip4
|
||||
release: iocage_release | split('-') | first
|
||||
groups:
|
||||
test: inventory_hostname.startswith('test')
|
||||
keyed_groups:
|
||||
- prefix: distro
|
||||
key: iocage_release
|
||||
- prefix: state
|
||||
key: iocage_state
|
||||
'''
|
||||
|
||||
import re
|
||||
import os
|
||||
from subprocess import Popen, PIPE
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleParserError
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
def _parse_ip4(ip4):
|
||||
if ip4 == '-':
|
||||
return ip4
|
||||
return re.split('\\||/', ip4)[1]
|
||||
|
||||
|
||||
class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||
''' Host inventory parser for ansible using iocage as source. '''
|
||||
|
||||
NAME = 'community.general.iocage'
|
||||
IOCAGE = '/usr/local/bin/iocage'
|
||||
|
||||
def __init__(self):
|
||||
super(InventoryModule, self).__init__()
|
||||
|
||||
def verify_file(self, path):
|
||||
valid = False
|
||||
if super(InventoryModule, self).verify_file(path):
|
||||
if path.endswith(('iocage.yaml', 'iocage.yml')):
|
||||
valid = True
|
||||
else:
|
||||
self.display.vvv('Skipping due to inventory source not ending in "iocage.yaml" nor "iocage.yml"')
|
||||
return valid
|
||||
|
||||
def parse(self, inventory, loader, path, cache=True):
|
||||
super(InventoryModule, self).parse(inventory, loader, path)
|
||||
|
||||
self._read_config_data(path)
|
||||
cache_key = self.get_cache_key(path)
|
||||
|
||||
user_cache_setting = self.get_option('cache')
|
||||
attempt_to_read_cache = user_cache_setting and cache
|
||||
cache_needs_update = user_cache_setting and not cache
|
||||
|
||||
if attempt_to_read_cache:
|
||||
try:
|
||||
results = self._cache[cache_key]
|
||||
except KeyError:
|
||||
cache_needs_update = True
|
||||
if not attempt_to_read_cache or cache_needs_update:
|
||||
results = self.get_inventory(path)
|
||||
if cache_needs_update:
|
||||
self._cache[cache_key] = results
|
||||
|
||||
self.populate(results)
|
||||
|
||||
def get_inventory(self, path):
|
||||
host = self.get_option('host')
|
||||
env = self.get_option('env')
|
||||
get_properties = self.get_option('get_properties')
|
||||
|
||||
cmd = []
|
||||
my_env = os.environ.copy()
|
||||
if host == 'localhost':
|
||||
my_env.update({str(k): str(v) for k, v in env.items()})
|
||||
else:
|
||||
user = self.get_option('user')
|
||||
cmd.append("ssh")
|
||||
cmd.append(f"{user}@{host}")
|
||||
cmd.extend([f"{k}={v}" for k, v in env.items()])
|
||||
cmd.append(self.IOCAGE)
|
||||
|
||||
cmd_list = cmd.copy()
|
||||
cmd_list.append('list')
|
||||
cmd_list.append('--header')
|
||||
cmd_list.append('--long')
|
||||
try:
|
||||
p = Popen(cmd_list, stdout=PIPE, stderr=PIPE, env=my_env)
|
||||
stdout, stderr = p.communicate()
|
||||
if p.returncode != 0:
|
||||
raise AnsibleError('Failed to run cmd=%s, rc=%s, stderr=%s' %
|
||||
(cmd_list, p.returncode, to_native(stderr)))
|
||||
|
||||
try:
|
||||
t_stdout = to_text(stdout, errors='surrogate_or_strict')
|
||||
except UnicodeError as e:
|
||||
raise AnsibleError('Invalid (non unicode) input returned: %s' % to_native(e)) from e
|
||||
|
||||
except Exception as e:
|
||||
raise AnsibleParserError('Failed to parse %s: %s' %
|
||||
(to_native(path), to_native(e))) from e
|
||||
|
||||
results = {'_meta': {'hostvars': {}}}
|
||||
self.get_jails(t_stdout, results)
|
||||
|
||||
if get_properties:
|
||||
for hostname, host_vars in results['_meta']['hostvars'].items():
|
||||
cmd_get_properties = cmd.copy()
|
||||
cmd_get_properties.append("get")
|
||||
cmd_get_properties.append("--all")
|
||||
cmd_get_properties.append(f"{hostname}")
|
||||
try:
|
||||
p = Popen(cmd_get_properties, stdout=PIPE, stderr=PIPE, env=my_env)
|
||||
stdout, stderr = p.communicate()
|
||||
if p.returncode != 0:
|
||||
raise AnsibleError('Failed to run cmd=%s, rc=%s, stderr=%s' %
|
||||
(cmd_get_properties, p.returncode, to_native(stderr)))
|
||||
|
||||
try:
|
||||
t_stdout = to_text(stdout, errors='surrogate_or_strict')
|
||||
except UnicodeError as e:
|
||||
raise AnsibleError('Invalid (non unicode) input returned: %s' % to_native(e)) from e
|
||||
|
||||
except Exception as e:
|
||||
raise AnsibleError('Failed to get properties: %s' % to_native(e)) from e
|
||||
|
||||
self.get_properties(t_stdout, results, hostname)
|
||||
|
||||
return results
|
||||
|
||||
def get_jails(self, t_stdout, results):
|
||||
jails = [x.split() for x in t_stdout.splitlines()]
|
||||
for jail in jails:
|
||||
iocage_name = jail[1]
|
||||
results['_meta']['hostvars'][iocage_name] = {}
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_jid'] = jail[0]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_boot'] = jail[2]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_state'] = jail[3]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_type'] = jail[4]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_release'] = jail[5]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_ip4'] = _parse_ip4(jail[6])
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_ip6'] = jail[7]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_template'] = jail[8]
|
||||
results['_meta']['hostvars'][iocage_name]['iocage_basejail'] = jail[9]
|
||||
|
||||
def get_properties(self, t_stdout, results, hostname):
|
||||
properties = dict([x.split(':', 1) for x in t_stdout.splitlines()])
|
||||
results['_meta']['hostvars'][hostname]['iocage_properties'] = properties
|
||||
|
||||
def populate(self, results):
|
||||
strict = self.get_option('strict')
|
||||
|
||||
for hostname, host_vars in results['_meta']['hostvars'].items():
|
||||
self.inventory.add_host(hostname, group='all')
|
||||
for var, value in host_vars.items():
|
||||
self.inventory.set_variable(hostname, var, value)
|
||||
self._set_composite_vars(self.get_option('compose'), host_vars, hostname, strict=True)
|
||||
self._add_host_to_composed_groups(self.get_option('groups'), host_vars, hostname, strict=strict)
|
||||
self._add_host_to_keyed_groups(self.get_option('keyed_groups'), host_vars, hostname, strict=strict)
|
|
@ -0,0 +1,460 @@
|
|||
all:
|
||||
children:
|
||||
test:
|
||||
hosts:
|
||||
test_101:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.101
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_properties:
|
||||
CONFIG_VERSION: '28'
|
||||
allow_chflags: '0'
|
||||
allow_mlock: '0'
|
||||
allow_mount: '0'
|
||||
allow_mount_devfs: '0'
|
||||
allow_mount_fusefs: '0'
|
||||
allow_mount_nullfs: '0'
|
||||
allow_mount_procfs: '0'
|
||||
allow_mount_tmpfs: '0'
|
||||
allow_mount_zfs: '0'
|
||||
allow_quotas: '0'
|
||||
allow_raw_sockets: '0'
|
||||
allow_set_hostname: '1'
|
||||
allow_socket_af: '0'
|
||||
allow_sysvipc: '0'
|
||||
allow_tun: '0'
|
||||
allow_vmm: '0'
|
||||
assign_localhost: '0'
|
||||
available: readonly
|
||||
basejail: '1'
|
||||
boot: '0'
|
||||
bpf: '0'
|
||||
children_max: '0'
|
||||
comment: none
|
||||
compression: lz4
|
||||
compressratio: readonly
|
||||
coredumpsize: 'off'
|
||||
count: '1'
|
||||
cpuset: 'off'
|
||||
cputime: 'off'
|
||||
datasize: 'off'
|
||||
dedup: 'off'
|
||||
defaultrouter: 10.1.0.10
|
||||
defaultrouter6: auto
|
||||
depends: none
|
||||
devfs_ruleset: '4'
|
||||
dhcp: '0'
|
||||
enforce_statfs: '2'
|
||||
exec_clean: '1'
|
||||
exec_created: /usr/bin/true
|
||||
exec_fib: '0'
|
||||
exec_jail_user: root
|
||||
exec_poststart: /usr/bin/true
|
||||
exec_poststop: /usr/bin/true
|
||||
exec_prestart: /usr/bin/true
|
||||
exec_prestop: /usr/bin/true
|
||||
exec_start: /bin/sh /etc/rc
|
||||
exec_stop: /bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user: '0'
|
||||
exec_system_user: root
|
||||
exec_timeout: '60'
|
||||
host_domainname: none
|
||||
host_hostname: ansible-client
|
||||
host_hostuuid: test_101
|
||||
host_time: '1'
|
||||
hostid: 34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check: '0'
|
||||
interfaces: vnet0:bridge0
|
||||
ip4: new
|
||||
ip4_addr: vnet0|10.1.0.101/24
|
||||
ip4_saddrsel: '1'
|
||||
ip6: new
|
||||
ip6_addr: none
|
||||
ip6_saddrsel: '1'
|
||||
ip_hostname: '0'
|
||||
jail_zfs: '0'
|
||||
jail_zfs_dataset: iocage/jails/test_101/data
|
||||
jail_zfs_mountpoint: none
|
||||
last_started: none
|
||||
localhost_ip: none
|
||||
login_flags: -f root
|
||||
mac_prefix: 3e4a92
|
||||
maxproc: 'off'
|
||||
memorylocked: 'off'
|
||||
memoryuse: 'off'
|
||||
min_dyn_devfs_ruleset: '1000'
|
||||
mount_devfs: '1'
|
||||
mount_fdescfs: '1'
|
||||
mount_linprocfs: '0'
|
||||
mount_procfs: '0'
|
||||
mountpoint: readonly
|
||||
msgqqueued: 'off'
|
||||
msgqsize: 'off'
|
||||
nat: '0'
|
||||
nat_backend: ipfw
|
||||
nat_forwards: none
|
||||
nat_interface: none
|
||||
nat_prefix: '172.16'
|
||||
nmsgq: 'off'
|
||||
notes: vmm=iocage_01
|
||||
nsem: 'off'
|
||||
nsemop: 'off'
|
||||
nshm: 'off'
|
||||
nthr: 'off'
|
||||
openfiles: 'off'
|
||||
origin: readonly
|
||||
owner: root
|
||||
pcpu: 'off'
|
||||
plugin_name: none
|
||||
plugin_repository: none
|
||||
priority: '99'
|
||||
pseudoterminals: 'off'
|
||||
quota: none
|
||||
readbps: 'off'
|
||||
readiops: 'off'
|
||||
release: 13.4-RELEASE-p2
|
||||
reservation: none
|
||||
resolver: /etc/resolv.conf
|
||||
rlimits: 'off'
|
||||
rtsold: '0'
|
||||
securelevel: '2'
|
||||
shmsize: 'off'
|
||||
stacksize: 'off'
|
||||
state: down
|
||||
stop_timeout: '30'
|
||||
swapuse: 'off'
|
||||
sync_state: none
|
||||
sync_target: none
|
||||
sync_tgt_zpool: none
|
||||
sysvmsg: new
|
||||
sysvsem: new
|
||||
sysvshm: new
|
||||
template: '0'
|
||||
type: jail
|
||||
used: readonly
|
||||
vmemoryuse: 'off'
|
||||
vnet: '1'
|
||||
vnet0_mac: none
|
||||
vnet0_mtu: auto
|
||||
vnet1_mac: none
|
||||
vnet1_mtu: auto
|
||||
vnet2_mac: none
|
||||
vnet2_mtu: auto
|
||||
vnet3_mac: none
|
||||
vnet3_mtu: auto
|
||||
vnet_default_interface: auto
|
||||
vnet_default_mtu: '1500'
|
||||
vnet_interfaces: none
|
||||
wallclock: 'off'
|
||||
writebps: 'off'
|
||||
writeiops: 'off'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
||||
test_102:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.102
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_properties:
|
||||
CONFIG_VERSION: '28'
|
||||
allow_chflags: '0'
|
||||
allow_mlock: '0'
|
||||
allow_mount: '0'
|
||||
allow_mount_devfs: '0'
|
||||
allow_mount_fusefs: '0'
|
||||
allow_mount_nullfs: '0'
|
||||
allow_mount_procfs: '0'
|
||||
allow_mount_tmpfs: '0'
|
||||
allow_mount_zfs: '0'
|
||||
allow_quotas: '0'
|
||||
allow_raw_sockets: '0'
|
||||
allow_set_hostname: '1'
|
||||
allow_socket_af: '0'
|
||||
allow_sysvipc: '0'
|
||||
allow_tun: '0'
|
||||
allow_vmm: '0'
|
||||
assign_localhost: '0'
|
||||
available: readonly
|
||||
basejail: '1'
|
||||
boot: '0'
|
||||
bpf: '0'
|
||||
children_max: '0'
|
||||
comment: none
|
||||
compression: lz4
|
||||
compressratio: readonly
|
||||
coredumpsize: 'off'
|
||||
count: '1'
|
||||
cpuset: 'off'
|
||||
cputime: 'off'
|
||||
datasize: 'off'
|
||||
dedup: 'off'
|
||||
defaultrouter: 10.1.0.10
|
||||
defaultrouter6: auto
|
||||
depends: none
|
||||
devfs_ruleset: '4'
|
||||
dhcp: '0'
|
||||
enforce_statfs: '2'
|
||||
exec_clean: '1'
|
||||
exec_created: /usr/bin/true
|
||||
exec_fib: '0'
|
||||
exec_jail_user: root
|
||||
exec_poststart: /usr/bin/true
|
||||
exec_poststop: /usr/bin/true
|
||||
exec_prestart: /usr/bin/true
|
||||
exec_prestop: /usr/bin/true
|
||||
exec_start: /bin/sh /etc/rc
|
||||
exec_stop: /bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user: '0'
|
||||
exec_system_user: root
|
||||
exec_timeout: '60'
|
||||
host_domainname: none
|
||||
host_hostname: ansible-client
|
||||
host_hostuuid: test_102
|
||||
host_time: '1'
|
||||
hostid: 34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check: '0'
|
||||
interfaces: vnet0:bridge0
|
||||
ip4: new
|
||||
ip4_addr: vnet0|10.1.0.102/24
|
||||
ip4_saddrsel: '1'
|
||||
ip6: new
|
||||
ip6_addr: none
|
||||
ip6_saddrsel: '1'
|
||||
ip_hostname: '0'
|
||||
jail_zfs: '0'
|
||||
jail_zfs_dataset: iocage/jails/test_102/data
|
||||
jail_zfs_mountpoint: none
|
||||
last_started: none
|
||||
localhost_ip: none
|
||||
login_flags: -f root
|
||||
mac_prefix: 3e4a92
|
||||
maxproc: 'off'
|
||||
memorylocked: 'off'
|
||||
memoryuse: 'off'
|
||||
min_dyn_devfs_ruleset: '1000'
|
||||
mount_devfs: '1'
|
||||
mount_fdescfs: '1'
|
||||
mount_linprocfs: '0'
|
||||
mount_procfs: '0'
|
||||
mountpoint: readonly
|
||||
msgqqueued: 'off'
|
||||
msgqsize: 'off'
|
||||
nat: '0'
|
||||
nat_backend: ipfw
|
||||
nat_forwards: none
|
||||
nat_interface: none
|
||||
nat_prefix: '172.16'
|
||||
nmsgq: 'off'
|
||||
notes: vmm=iocage_01
|
||||
nsem: 'off'
|
||||
nsemop: 'off'
|
||||
nshm: 'off'
|
||||
nthr: 'off'
|
||||
openfiles: 'off'
|
||||
origin: readonly
|
||||
owner: root
|
||||
pcpu: 'off'
|
||||
plugin_name: none
|
||||
plugin_repository: none
|
||||
priority: '99'
|
||||
pseudoterminals: 'off'
|
||||
quota: none
|
||||
readbps: 'off'
|
||||
readiops: 'off'
|
||||
release: 13.4-RELEASE-p2
|
||||
reservation: none
|
||||
resolver: /etc/resolv.conf
|
||||
rlimits: 'off'
|
||||
rtsold: '0'
|
||||
securelevel: '2'
|
||||
shmsize: 'off'
|
||||
stacksize: 'off'
|
||||
state: down
|
||||
stop_timeout: '30'
|
||||
swapuse: 'off'
|
||||
sync_state: none
|
||||
sync_target: none
|
||||
sync_tgt_zpool: none
|
||||
sysvmsg: new
|
||||
sysvsem: new
|
||||
sysvshm: new
|
||||
template: '0'
|
||||
type: jail
|
||||
used: readonly
|
||||
vmemoryuse: 'off'
|
||||
vnet: '1'
|
||||
vnet0_mac: none
|
||||
vnet0_mtu: auto
|
||||
vnet1_mac: none
|
||||
vnet1_mtu: auto
|
||||
vnet2_mac: none
|
||||
vnet2_mtu: auto
|
||||
vnet3_mac: none
|
||||
vnet3_mtu: auto
|
||||
vnet_default_interface: auto
|
||||
vnet_default_mtu: '1500'
|
||||
vnet_interfaces: none
|
||||
wallclock: 'off'
|
||||
writebps: 'off'
|
||||
writeiops: 'off'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
||||
test_103:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.103
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_properties:
|
||||
CONFIG_VERSION: '28'
|
||||
allow_chflags: '0'
|
||||
allow_mlock: '0'
|
||||
allow_mount: '0'
|
||||
allow_mount_devfs: '0'
|
||||
allow_mount_fusefs: '0'
|
||||
allow_mount_nullfs: '0'
|
||||
allow_mount_procfs: '0'
|
||||
allow_mount_tmpfs: '0'
|
||||
allow_mount_zfs: '0'
|
||||
allow_quotas: '0'
|
||||
allow_raw_sockets: '0'
|
||||
allow_set_hostname: '1'
|
||||
allow_socket_af: '0'
|
||||
allow_sysvipc: '0'
|
||||
allow_tun: '0'
|
||||
allow_vmm: '0'
|
||||
assign_localhost: '0'
|
||||
available: readonly
|
||||
basejail: '1'
|
||||
boot: '0'
|
||||
bpf: '0'
|
||||
children_max: '0'
|
||||
comment: none
|
||||
compression: lz4
|
||||
compressratio: readonly
|
||||
coredumpsize: 'off'
|
||||
count: '1'
|
||||
cpuset: 'off'
|
||||
cputime: 'off'
|
||||
datasize: 'off'
|
||||
dedup: 'off'
|
||||
defaultrouter: 10.1.0.10
|
||||
defaultrouter6: auto
|
||||
depends: none
|
||||
devfs_ruleset: '4'
|
||||
dhcp: '0'
|
||||
enforce_statfs: '2'
|
||||
exec_clean: '1'
|
||||
exec_created: /usr/bin/true
|
||||
exec_fib: '0'
|
||||
exec_jail_user: root
|
||||
exec_poststart: /usr/bin/true
|
||||
exec_poststop: /usr/bin/true
|
||||
exec_prestart: /usr/bin/true
|
||||
exec_prestop: /usr/bin/true
|
||||
exec_start: /bin/sh /etc/rc
|
||||
exec_stop: /bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user: '0'
|
||||
exec_system_user: root
|
||||
exec_timeout: '60'
|
||||
host_domainname: none
|
||||
host_hostname: ansible-client
|
||||
host_hostuuid: test_103
|
||||
host_time: '1'
|
||||
hostid: 34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check: '0'
|
||||
interfaces: vnet0:bridge0
|
||||
ip4: new
|
||||
ip4_addr: vnet0|10.1.0.103/24
|
||||
ip4_saddrsel: '1'
|
||||
ip6: new
|
||||
ip6_addr: none
|
||||
ip6_saddrsel: '1'
|
||||
ip_hostname: '0'
|
||||
jail_zfs: '0'
|
||||
jail_zfs_dataset: iocage/jails/test_103/data
|
||||
jail_zfs_mountpoint: none
|
||||
last_started: none
|
||||
localhost_ip: none
|
||||
login_flags: -f root
|
||||
mac_prefix: 3e4a92
|
||||
maxproc: 'off'
|
||||
memorylocked: 'off'
|
||||
memoryuse: 'off'
|
||||
min_dyn_devfs_ruleset: '1000'
|
||||
mount_devfs: '1'
|
||||
mount_fdescfs: '1'
|
||||
mount_linprocfs: '0'
|
||||
mount_procfs: '0'
|
||||
mountpoint: readonly
|
||||
msgqqueued: 'off'
|
||||
msgqsize: 'off'
|
||||
nat: '0'
|
||||
nat_backend: ipfw
|
||||
nat_forwards: none
|
||||
nat_interface: none
|
||||
nat_prefix: '172.16'
|
||||
nmsgq: 'off'
|
||||
notes: vmm=iocage_01
|
||||
nsem: 'off'
|
||||
nsemop: 'off'
|
||||
nshm: 'off'
|
||||
nthr: 'off'
|
||||
openfiles: 'off'
|
||||
origin: readonly
|
||||
owner: root
|
||||
pcpu: 'off'
|
||||
plugin_name: none
|
||||
plugin_repository: none
|
||||
priority: '99'
|
||||
pseudoterminals: 'off'
|
||||
quota: none
|
||||
readbps: 'off'
|
||||
readiops: 'off'
|
||||
release: 13.4-RELEASE-p2
|
||||
reservation: none
|
||||
resolver: /etc/resolv.conf
|
||||
rlimits: 'off'
|
||||
rtsold: '0'
|
||||
securelevel: '2'
|
||||
shmsize: 'off'
|
||||
stacksize: 'off'
|
||||
state: down
|
||||
stop_timeout: '30'
|
||||
swapuse: 'off'
|
||||
sync_state: none
|
||||
sync_target: none
|
||||
sync_tgt_zpool: none
|
||||
sysvmsg: new
|
||||
sysvsem: new
|
||||
sysvshm: new
|
||||
template: '0'
|
||||
type: jail
|
||||
used: readonly
|
||||
vmemoryuse: 'off'
|
||||
vnet: '1'
|
||||
vnet0_mac: none
|
||||
vnet0_mtu: auto
|
||||
vnet1_mac: none
|
||||
vnet1_mtu: auto
|
||||
vnet2_mac: none
|
||||
vnet2_mtu: auto
|
||||
vnet3_mac: none
|
||||
vnet3_mtu: auto
|
||||
vnet_default_interface: auto
|
||||
vnet_default_mtu: '1500'
|
||||
vnet_interfaces: none
|
||||
wallclock: 'off'
|
||||
writebps: 'off'
|
||||
writeiops: 'off'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,3 @@
|
|||
- test_101 off down jail 13.4-RELEASE-p2 vnet0|10.1.0.101/24 - ansible_client yes
|
||||
- test_102 off down jail 13.4-RELEASE-p2 vnet0|10.1.0.102/24 - ansible_client yes
|
||||
- test_103 off down jail 13.4-RELEASE-p2 vnet0|10.1.0.103/24 - ansible_client yes
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,32 @@
|
|||
_meta:
|
||||
hostvars:
|
||||
test_101:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.101
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
||||
test_102:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.102
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
||||
test_103:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.103
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,11 @@
|
|||
CONFIG_VERSION:28
|
||||
notes:abbridged_properties
|
||||
allow_chflags:0
|
||||
allow_mlock:0
|
||||
allow_mount:0
|
||||
allow_mount_devfs:0
|
||||
allow_mount_fusefs:0
|
||||
allow_mount_nullfs:0
|
||||
allow_mount_procfs:0
|
||||
allow_mount_tmpfs:0
|
||||
allow_mount_zfs:0
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,458 @@
|
|||
_meta:
|
||||
hostvars:
|
||||
test_101:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.101
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_properties:
|
||||
CONFIG_VERSION: '28'
|
||||
allow_chflags: '0'
|
||||
allow_mlock: '0'
|
||||
allow_mount: '0'
|
||||
allow_mount_devfs: '0'
|
||||
allow_mount_fusefs: '0'
|
||||
allow_mount_nullfs: '0'
|
||||
allow_mount_procfs: '0'
|
||||
allow_mount_tmpfs: '0'
|
||||
allow_mount_zfs: '0'
|
||||
allow_quotas: '0'
|
||||
allow_raw_sockets: '0'
|
||||
allow_set_hostname: '1'
|
||||
allow_socket_af: '0'
|
||||
allow_sysvipc: '0'
|
||||
allow_tun: '0'
|
||||
allow_vmm: '0'
|
||||
assign_localhost: '0'
|
||||
available: readonly
|
||||
basejail: '1'
|
||||
boot: '0'
|
||||
bpf: '0'
|
||||
children_max: '0'
|
||||
comment: none
|
||||
compression: lz4
|
||||
compressratio: readonly
|
||||
coredumpsize: 'off'
|
||||
count: '1'
|
||||
cpuset: 'off'
|
||||
cputime: 'off'
|
||||
datasize: 'off'
|
||||
dedup: 'off'
|
||||
defaultrouter: 10.1.0.10
|
||||
defaultrouter6: auto
|
||||
depends: none
|
||||
devfs_ruleset: '4'
|
||||
dhcp: '0'
|
||||
enforce_statfs: '2'
|
||||
exec_clean: '1'
|
||||
exec_created: /usr/bin/true
|
||||
exec_fib: '0'
|
||||
exec_jail_user: root
|
||||
exec_poststart: /usr/bin/true
|
||||
exec_poststop: /usr/bin/true
|
||||
exec_prestart: /usr/bin/true
|
||||
exec_prestop: /usr/bin/true
|
||||
exec_start: /bin/sh /etc/rc
|
||||
exec_stop: /bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user: '0'
|
||||
exec_system_user: root
|
||||
exec_timeout: '60'
|
||||
host_domainname: none
|
||||
host_hostname: ansible-client
|
||||
host_hostuuid: test_101
|
||||
host_time: '1'
|
||||
hostid: 34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check: '0'
|
||||
interfaces: vnet0:bridge0
|
||||
ip4: new
|
||||
ip4_addr: vnet0|10.1.0.101/24
|
||||
ip4_saddrsel: '1'
|
||||
ip6: new
|
||||
ip6_addr: none
|
||||
ip6_saddrsel: '1'
|
||||
ip_hostname: '0'
|
||||
jail_zfs: '0'
|
||||
jail_zfs_dataset: iocage/jails/test_101/data
|
||||
jail_zfs_mountpoint: none
|
||||
last_started: none
|
||||
localhost_ip: none
|
||||
login_flags: -f root
|
||||
mac_prefix: 3e4a92
|
||||
maxproc: 'off'
|
||||
memorylocked: 'off'
|
||||
memoryuse: 'off'
|
||||
min_dyn_devfs_ruleset: '1000'
|
||||
mount_devfs: '1'
|
||||
mount_fdescfs: '1'
|
||||
mount_linprocfs: '0'
|
||||
mount_procfs: '0'
|
||||
mountpoint: readonly
|
||||
msgqqueued: 'off'
|
||||
msgqsize: 'off'
|
||||
nat: '0'
|
||||
nat_backend: ipfw
|
||||
nat_forwards: none
|
||||
nat_interface: none
|
||||
nat_prefix: '172.16'
|
||||
nmsgq: 'off'
|
||||
notes: vmm=iocage_01
|
||||
nsem: 'off'
|
||||
nsemop: 'off'
|
||||
nshm: 'off'
|
||||
nthr: 'off'
|
||||
openfiles: 'off'
|
||||
origin: readonly
|
||||
owner: root
|
||||
pcpu: 'off'
|
||||
plugin_name: none
|
||||
plugin_repository: none
|
||||
priority: '99'
|
||||
pseudoterminals: 'off'
|
||||
quota: none
|
||||
readbps: 'off'
|
||||
readiops: 'off'
|
||||
release: 13.4-RELEASE-p2
|
||||
reservation: none
|
||||
resolver: /etc/resolv.conf
|
||||
rlimits: 'off'
|
||||
rtsold: '0'
|
||||
securelevel: '2'
|
||||
shmsize: 'off'
|
||||
stacksize: 'off'
|
||||
state: down
|
||||
stop_timeout: '30'
|
||||
swapuse: 'off'
|
||||
sync_state: none
|
||||
sync_target: none
|
||||
sync_tgt_zpool: none
|
||||
sysvmsg: new
|
||||
sysvsem: new
|
||||
sysvshm: new
|
||||
template: '0'
|
||||
type: jail
|
||||
used: readonly
|
||||
vmemoryuse: 'off'
|
||||
vnet: '1'
|
||||
vnet0_mac: none
|
||||
vnet0_mtu: auto
|
||||
vnet1_mac: none
|
||||
vnet1_mtu: auto
|
||||
vnet2_mac: none
|
||||
vnet2_mtu: auto
|
||||
vnet3_mac: none
|
||||
vnet3_mtu: auto
|
||||
vnet_default_interface: auto
|
||||
vnet_default_mtu: '1500'
|
||||
vnet_interfaces: none
|
||||
wallclock: 'off'
|
||||
writebps: 'off'
|
||||
writeiops: 'off'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
||||
test_102:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.102
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_properties:
|
||||
CONFIG_VERSION: '28'
|
||||
allow_chflags: '0'
|
||||
allow_mlock: '0'
|
||||
allow_mount: '0'
|
||||
allow_mount_devfs: '0'
|
||||
allow_mount_fusefs: '0'
|
||||
allow_mount_nullfs: '0'
|
||||
allow_mount_procfs: '0'
|
||||
allow_mount_tmpfs: '0'
|
||||
allow_mount_zfs: '0'
|
||||
allow_quotas: '0'
|
||||
allow_raw_sockets: '0'
|
||||
allow_set_hostname: '1'
|
||||
allow_socket_af: '0'
|
||||
allow_sysvipc: '0'
|
||||
allow_tun: '0'
|
||||
allow_vmm: '0'
|
||||
assign_localhost: '0'
|
||||
available: readonly
|
||||
basejail: '1'
|
||||
boot: '0'
|
||||
bpf: '0'
|
||||
children_max: '0'
|
||||
comment: none
|
||||
compression: lz4
|
||||
compressratio: readonly
|
||||
coredumpsize: 'off'
|
||||
count: '1'
|
||||
cpuset: 'off'
|
||||
cputime: 'off'
|
||||
datasize: 'off'
|
||||
dedup: 'off'
|
||||
defaultrouter: 10.1.0.10
|
||||
defaultrouter6: auto
|
||||
depends: none
|
||||
devfs_ruleset: '4'
|
||||
dhcp: '0'
|
||||
enforce_statfs: '2'
|
||||
exec_clean: '1'
|
||||
exec_created: /usr/bin/true
|
||||
exec_fib: '0'
|
||||
exec_jail_user: root
|
||||
exec_poststart: /usr/bin/true
|
||||
exec_poststop: /usr/bin/true
|
||||
exec_prestart: /usr/bin/true
|
||||
exec_prestop: /usr/bin/true
|
||||
exec_start: /bin/sh /etc/rc
|
||||
exec_stop: /bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user: '0'
|
||||
exec_system_user: root
|
||||
exec_timeout: '60'
|
||||
host_domainname: none
|
||||
host_hostname: ansible-client
|
||||
host_hostuuid: test_102
|
||||
host_time: '1'
|
||||
hostid: 34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check: '0'
|
||||
interfaces: vnet0:bridge0
|
||||
ip4: new
|
||||
ip4_addr: vnet0|10.1.0.102/24
|
||||
ip4_saddrsel: '1'
|
||||
ip6: new
|
||||
ip6_addr: none
|
||||
ip6_saddrsel: '1'
|
||||
ip_hostname: '0'
|
||||
jail_zfs: '0'
|
||||
jail_zfs_dataset: iocage/jails/test_102/data
|
||||
jail_zfs_mountpoint: none
|
||||
last_started: none
|
||||
localhost_ip: none
|
||||
login_flags: -f root
|
||||
mac_prefix: 3e4a92
|
||||
maxproc: 'off'
|
||||
memorylocked: 'off'
|
||||
memoryuse: 'off'
|
||||
min_dyn_devfs_ruleset: '1000'
|
||||
mount_devfs: '1'
|
||||
mount_fdescfs: '1'
|
||||
mount_linprocfs: '0'
|
||||
mount_procfs: '0'
|
||||
mountpoint: readonly
|
||||
msgqqueued: 'off'
|
||||
msgqsize: 'off'
|
||||
nat: '0'
|
||||
nat_backend: ipfw
|
||||
nat_forwards: none
|
||||
nat_interface: none
|
||||
nat_prefix: '172.16'
|
||||
nmsgq: 'off'
|
||||
notes: vmm=iocage_01
|
||||
nsem: 'off'
|
||||
nsemop: 'off'
|
||||
nshm: 'off'
|
||||
nthr: 'off'
|
||||
openfiles: 'off'
|
||||
origin: readonly
|
||||
owner: root
|
||||
pcpu: 'off'
|
||||
plugin_name: none
|
||||
plugin_repository: none
|
||||
priority: '99'
|
||||
pseudoterminals: 'off'
|
||||
quota: none
|
||||
readbps: 'off'
|
||||
readiops: 'off'
|
||||
release: 13.4-RELEASE-p2
|
||||
reservation: none
|
||||
resolver: /etc/resolv.conf
|
||||
rlimits: 'off'
|
||||
rtsold: '0'
|
||||
securelevel: '2'
|
||||
shmsize: 'off'
|
||||
stacksize: 'off'
|
||||
state: down
|
||||
stop_timeout: '30'
|
||||
swapuse: 'off'
|
||||
sync_state: none
|
||||
sync_target: none
|
||||
sync_tgt_zpool: none
|
||||
sysvmsg: new
|
||||
sysvsem: new
|
||||
sysvshm: new
|
||||
template: '0'
|
||||
type: jail
|
||||
used: readonly
|
||||
vmemoryuse: 'off'
|
||||
vnet: '1'
|
||||
vnet0_mac: none
|
||||
vnet0_mtu: auto
|
||||
vnet1_mac: none
|
||||
vnet1_mtu: auto
|
||||
vnet2_mac: none
|
||||
vnet2_mtu: auto
|
||||
vnet3_mac: none
|
||||
vnet3_mtu: auto
|
||||
vnet_default_interface: auto
|
||||
vnet_default_mtu: '1500'
|
||||
vnet_interfaces: none
|
||||
wallclock: 'off'
|
||||
writebps: 'off'
|
||||
writeiops: 'off'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
||||
test_103:
|
||||
iocage_basejail: 'yes'
|
||||
iocage_boot: 'off'
|
||||
iocage_ip4: 10.1.0.103
|
||||
iocage_ip6: '-'
|
||||
iocage_jid: '-'
|
||||
iocage_properties:
|
||||
CONFIG_VERSION: '28'
|
||||
allow_chflags: '0'
|
||||
allow_mlock: '0'
|
||||
allow_mount: '0'
|
||||
allow_mount_devfs: '0'
|
||||
allow_mount_fusefs: '0'
|
||||
allow_mount_nullfs: '0'
|
||||
allow_mount_procfs: '0'
|
||||
allow_mount_tmpfs: '0'
|
||||
allow_mount_zfs: '0'
|
||||
allow_quotas: '0'
|
||||
allow_raw_sockets: '0'
|
||||
allow_set_hostname: '1'
|
||||
allow_socket_af: '0'
|
||||
allow_sysvipc: '0'
|
||||
allow_tun: '0'
|
||||
allow_vmm: '0'
|
||||
assign_localhost: '0'
|
||||
available: readonly
|
||||
basejail: '1'
|
||||
boot: '0'
|
||||
bpf: '0'
|
||||
children_max: '0'
|
||||
comment: none
|
||||
compression: lz4
|
||||
compressratio: readonly
|
||||
coredumpsize: 'off'
|
||||
count: '1'
|
||||
cpuset: 'off'
|
||||
cputime: 'off'
|
||||
datasize: 'off'
|
||||
dedup: 'off'
|
||||
defaultrouter: 10.1.0.10
|
||||
defaultrouter6: auto
|
||||
depends: none
|
||||
devfs_ruleset: '4'
|
||||
dhcp: '0'
|
||||
enforce_statfs: '2'
|
||||
exec_clean: '1'
|
||||
exec_created: /usr/bin/true
|
||||
exec_fib: '0'
|
||||
exec_jail_user: root
|
||||
exec_poststart: /usr/bin/true
|
||||
exec_poststop: /usr/bin/true
|
||||
exec_prestart: /usr/bin/true
|
||||
exec_prestop: /usr/bin/true
|
||||
exec_start: /bin/sh /etc/rc
|
||||
exec_stop: /bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user: '0'
|
||||
exec_system_user: root
|
||||
exec_timeout: '60'
|
||||
host_domainname: none
|
||||
host_hostname: ansible-client
|
||||
host_hostuuid: test_103
|
||||
host_time: '1'
|
||||
hostid: 34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check: '0'
|
||||
interfaces: vnet0:bridge0
|
||||
ip4: new
|
||||
ip4_addr: vnet0|10.1.0.103/24
|
||||
ip4_saddrsel: '1'
|
||||
ip6: new
|
||||
ip6_addr: none
|
||||
ip6_saddrsel: '1'
|
||||
ip_hostname: '0'
|
||||
jail_zfs: '0'
|
||||
jail_zfs_dataset: iocage/jails/test_103/data
|
||||
jail_zfs_mountpoint: none
|
||||
last_started: none
|
||||
localhost_ip: none
|
||||
login_flags: -f root
|
||||
mac_prefix: 3e4a92
|
||||
maxproc: 'off'
|
||||
memorylocked: 'off'
|
||||
memoryuse: 'off'
|
||||
min_dyn_devfs_ruleset: '1000'
|
||||
mount_devfs: '1'
|
||||
mount_fdescfs: '1'
|
||||
mount_linprocfs: '0'
|
||||
mount_procfs: '0'
|
||||
mountpoint: readonly
|
||||
msgqqueued: 'off'
|
||||
msgqsize: 'off'
|
||||
nat: '0'
|
||||
nat_backend: ipfw
|
||||
nat_forwards: none
|
||||
nat_interface: none
|
||||
nat_prefix: '172.16'
|
||||
nmsgq: 'off'
|
||||
notes: vmm=iocage_01
|
||||
nsem: 'off'
|
||||
nsemop: 'off'
|
||||
nshm: 'off'
|
||||
nthr: 'off'
|
||||
openfiles: 'off'
|
||||
origin: readonly
|
||||
owner: root
|
||||
pcpu: 'off'
|
||||
plugin_name: none
|
||||
plugin_repository: none
|
||||
priority: '99'
|
||||
pseudoterminals: 'off'
|
||||
quota: none
|
||||
readbps: 'off'
|
||||
readiops: 'off'
|
||||
release: 13.4-RELEASE-p2
|
||||
reservation: none
|
||||
resolver: /etc/resolv.conf
|
||||
rlimits: 'off'
|
||||
rtsold: '0'
|
||||
securelevel: '2'
|
||||
shmsize: 'off'
|
||||
stacksize: 'off'
|
||||
state: down
|
||||
stop_timeout: '30'
|
||||
swapuse: 'off'
|
||||
sync_state: none
|
||||
sync_target: none
|
||||
sync_tgt_zpool: none
|
||||
sysvmsg: new
|
||||
sysvsem: new
|
||||
sysvshm: new
|
||||
template: '0'
|
||||
type: jail
|
||||
used: readonly
|
||||
vmemoryuse: 'off'
|
||||
vnet: '1'
|
||||
vnet0_mac: none
|
||||
vnet0_mtu: auto
|
||||
vnet1_mac: none
|
||||
vnet1_mtu: auto
|
||||
vnet2_mac: none
|
||||
vnet2_mtu: auto
|
||||
vnet3_mac: none
|
||||
vnet3_mtu: auto
|
||||
vnet_default_interface: auto
|
||||
vnet_default_mtu: '1500'
|
||||
vnet_interfaces: none
|
||||
wallclock: 'off'
|
||||
writebps: 'off'
|
||||
writeiops: 'off'
|
||||
iocage_release: 13.4-RELEASE-p2
|
||||
iocage_state: down
|
||||
iocage_template: ansible_client
|
||||
iocage_type: jail
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,141 @@
|
|||
CONFIG_VERSION:28
|
||||
allow_chflags:0
|
||||
allow_mlock:0
|
||||
allow_mount:0
|
||||
allow_mount_devfs:0
|
||||
allow_mount_fusefs:0
|
||||
allow_mount_nullfs:0
|
||||
allow_mount_procfs:0
|
||||
allow_mount_tmpfs:0
|
||||
allow_mount_zfs:0
|
||||
allow_quotas:0
|
||||
allow_raw_sockets:0
|
||||
allow_set_hostname:1
|
||||
allow_socket_af:0
|
||||
allow_sysvipc:0
|
||||
allow_tun:0
|
||||
allow_vmm:0
|
||||
assign_localhost:0
|
||||
available:readonly
|
||||
basejail:1
|
||||
boot:0
|
||||
bpf:0
|
||||
children_max:0
|
||||
comment:none
|
||||
compression:lz4
|
||||
compressratio:readonly
|
||||
coredumpsize:off
|
||||
count:1
|
||||
cpuset:off
|
||||
cputime:off
|
||||
datasize:off
|
||||
dedup:off
|
||||
defaultrouter:10.1.0.10
|
||||
defaultrouter6:auto
|
||||
depends:none
|
||||
devfs_ruleset:4
|
||||
dhcp:0
|
||||
enforce_statfs:2
|
||||
exec_clean:1
|
||||
exec_created:/usr/bin/true
|
||||
exec_fib:0
|
||||
exec_jail_user:root
|
||||
exec_poststart:/usr/bin/true
|
||||
exec_poststop:/usr/bin/true
|
||||
exec_prestart:/usr/bin/true
|
||||
exec_prestop:/usr/bin/true
|
||||
exec_start:/bin/sh /etc/rc
|
||||
exec_stop:/bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user:0
|
||||
exec_system_user:root
|
||||
exec_timeout:60
|
||||
host_domainname:none
|
||||
host_hostname:ansible-client
|
||||
host_hostuuid:test_101
|
||||
host_time:1
|
||||
hostid:34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check:0
|
||||
interfaces:vnet0:bridge0
|
||||
ip4:new
|
||||
ip4_addr:vnet0|10.1.0.101/24
|
||||
ip4_saddrsel:1
|
||||
ip6:new
|
||||
ip6_addr:none
|
||||
ip6_saddrsel:1
|
||||
ip_hostname:0
|
||||
jail_zfs:0
|
||||
jail_zfs_dataset:iocage/jails/test_101/data
|
||||
jail_zfs_mountpoint:none
|
||||
last_started:none
|
||||
localhost_ip:none
|
||||
login_flags:-f root
|
||||
mac_prefix:3e4a92
|
||||
maxproc:off
|
||||
memorylocked:off
|
||||
memoryuse:off
|
||||
min_dyn_devfs_ruleset:1000
|
||||
mount_devfs:1
|
||||
mount_fdescfs:1
|
||||
mount_linprocfs:0
|
||||
mount_procfs:0
|
||||
mountpoint:readonly
|
||||
msgqqueued:off
|
||||
msgqsize:off
|
||||
nat:0
|
||||
nat_backend:ipfw
|
||||
nat_forwards:none
|
||||
nat_interface:none
|
||||
nat_prefix:172.16
|
||||
nmsgq:off
|
||||
notes:vmm=iocage_01
|
||||
nsem:off
|
||||
nsemop:off
|
||||
nshm:off
|
||||
nthr:off
|
||||
openfiles:off
|
||||
origin:readonly
|
||||
owner:root
|
||||
pcpu:off
|
||||
plugin_name:none
|
||||
plugin_repository:none
|
||||
priority:99
|
||||
pseudoterminals:off
|
||||
quota:none
|
||||
readbps:off
|
||||
readiops:off
|
||||
release:13.4-RELEASE-p2
|
||||
reservation:none
|
||||
resolver:/etc/resolv.conf
|
||||
rlimits:off
|
||||
rtsold:0
|
||||
securelevel:2
|
||||
shmsize:off
|
||||
stacksize:off
|
||||
state:down
|
||||
stop_timeout:30
|
||||
swapuse:off
|
||||
sync_state:none
|
||||
sync_target:none
|
||||
sync_tgt_zpool:none
|
||||
sysvmsg:new
|
||||
sysvsem:new
|
||||
sysvshm:new
|
||||
template:0
|
||||
type:jail
|
||||
used:readonly
|
||||
vmemoryuse:off
|
||||
vnet:1
|
||||
vnet0_mac:none
|
||||
vnet0_mtu:auto
|
||||
vnet1_mac:none
|
||||
vnet1_mtu:auto
|
||||
vnet2_mac:none
|
||||
vnet2_mtu:auto
|
||||
vnet3_mac:none
|
||||
vnet3_mtu:auto
|
||||
vnet_default_interface:auto
|
||||
vnet_default_mtu:1500
|
||||
vnet_interfaces:none
|
||||
wallclock:off
|
||||
writebps:off
|
||||
writeiops:off
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,141 @@
|
|||
CONFIG_VERSION:28
|
||||
allow_chflags:0
|
||||
allow_mlock:0
|
||||
allow_mount:0
|
||||
allow_mount_devfs:0
|
||||
allow_mount_fusefs:0
|
||||
allow_mount_nullfs:0
|
||||
allow_mount_procfs:0
|
||||
allow_mount_tmpfs:0
|
||||
allow_mount_zfs:0
|
||||
allow_quotas:0
|
||||
allow_raw_sockets:0
|
||||
allow_set_hostname:1
|
||||
allow_socket_af:0
|
||||
allow_sysvipc:0
|
||||
allow_tun:0
|
||||
allow_vmm:0
|
||||
assign_localhost:0
|
||||
available:readonly
|
||||
basejail:1
|
||||
boot:0
|
||||
bpf:0
|
||||
children_max:0
|
||||
comment:none
|
||||
compression:lz4
|
||||
compressratio:readonly
|
||||
coredumpsize:off
|
||||
count:1
|
||||
cpuset:off
|
||||
cputime:off
|
||||
datasize:off
|
||||
dedup:off
|
||||
defaultrouter:10.1.0.10
|
||||
defaultrouter6:auto
|
||||
depends:none
|
||||
devfs_ruleset:4
|
||||
dhcp:0
|
||||
enforce_statfs:2
|
||||
exec_clean:1
|
||||
exec_created:/usr/bin/true
|
||||
exec_fib:0
|
||||
exec_jail_user:root
|
||||
exec_poststart:/usr/bin/true
|
||||
exec_poststop:/usr/bin/true
|
||||
exec_prestart:/usr/bin/true
|
||||
exec_prestop:/usr/bin/true
|
||||
exec_start:/bin/sh /etc/rc
|
||||
exec_stop:/bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user:0
|
||||
exec_system_user:root
|
||||
exec_timeout:60
|
||||
host_domainname:none
|
||||
host_hostname:ansible-client
|
||||
host_hostuuid:test_102
|
||||
host_time:1
|
||||
hostid:34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check:0
|
||||
interfaces:vnet0:bridge0
|
||||
ip4:new
|
||||
ip4_addr:vnet0|10.1.0.102/24
|
||||
ip4_saddrsel:1
|
||||
ip6:new
|
||||
ip6_addr:none
|
||||
ip6_saddrsel:1
|
||||
ip_hostname:0
|
||||
jail_zfs:0
|
||||
jail_zfs_dataset:iocage/jails/test_102/data
|
||||
jail_zfs_mountpoint:none
|
||||
last_started:none
|
||||
localhost_ip:none
|
||||
login_flags:-f root
|
||||
mac_prefix:3e4a92
|
||||
maxproc:off
|
||||
memorylocked:off
|
||||
memoryuse:off
|
||||
min_dyn_devfs_ruleset:1000
|
||||
mount_devfs:1
|
||||
mount_fdescfs:1
|
||||
mount_linprocfs:0
|
||||
mount_procfs:0
|
||||
mountpoint:readonly
|
||||
msgqqueued:off
|
||||
msgqsize:off
|
||||
nat:0
|
||||
nat_backend:ipfw
|
||||
nat_forwards:none
|
||||
nat_interface:none
|
||||
nat_prefix:172.16
|
||||
nmsgq:off
|
||||
notes:vmm=iocage_01
|
||||
nsem:off
|
||||
nsemop:off
|
||||
nshm:off
|
||||
nthr:off
|
||||
openfiles:off
|
||||
origin:readonly
|
||||
owner:root
|
||||
pcpu:off
|
||||
plugin_name:none
|
||||
plugin_repository:none
|
||||
priority:99
|
||||
pseudoterminals:off
|
||||
quota:none
|
||||
readbps:off
|
||||
readiops:off
|
||||
release:13.4-RELEASE-p2
|
||||
reservation:none
|
||||
resolver:/etc/resolv.conf
|
||||
rlimits:off
|
||||
rtsold:0
|
||||
securelevel:2
|
||||
shmsize:off
|
||||
stacksize:off
|
||||
state:down
|
||||
stop_timeout:30
|
||||
swapuse:off
|
||||
sync_state:none
|
||||
sync_target:none
|
||||
sync_tgt_zpool:none
|
||||
sysvmsg:new
|
||||
sysvsem:new
|
||||
sysvshm:new
|
||||
template:0
|
||||
type:jail
|
||||
used:readonly
|
||||
vmemoryuse:off
|
||||
vnet:1
|
||||
vnet0_mac:none
|
||||
vnet0_mtu:auto
|
||||
vnet1_mac:none
|
||||
vnet1_mtu:auto
|
||||
vnet2_mac:none
|
||||
vnet2_mtu:auto
|
||||
vnet3_mac:none
|
||||
vnet3_mtu:auto
|
||||
vnet_default_interface:auto
|
||||
vnet_default_mtu:1500
|
||||
vnet_interfaces:none
|
||||
wallclock:off
|
||||
writebps:off
|
||||
writeiops:off
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,141 @@
|
|||
CONFIG_VERSION:28
|
||||
allow_chflags:0
|
||||
allow_mlock:0
|
||||
allow_mount:0
|
||||
allow_mount_devfs:0
|
||||
allow_mount_fusefs:0
|
||||
allow_mount_nullfs:0
|
||||
allow_mount_procfs:0
|
||||
allow_mount_tmpfs:0
|
||||
allow_mount_zfs:0
|
||||
allow_quotas:0
|
||||
allow_raw_sockets:0
|
||||
allow_set_hostname:1
|
||||
allow_socket_af:0
|
||||
allow_sysvipc:0
|
||||
allow_tun:0
|
||||
allow_vmm:0
|
||||
assign_localhost:0
|
||||
available:readonly
|
||||
basejail:1
|
||||
boot:0
|
||||
bpf:0
|
||||
children_max:0
|
||||
comment:none
|
||||
compression:lz4
|
||||
compressratio:readonly
|
||||
coredumpsize:off
|
||||
count:1
|
||||
cpuset:off
|
||||
cputime:off
|
||||
datasize:off
|
||||
dedup:off
|
||||
defaultrouter:10.1.0.10
|
||||
defaultrouter6:auto
|
||||
depends:none
|
||||
devfs_ruleset:4
|
||||
dhcp:0
|
||||
enforce_statfs:2
|
||||
exec_clean:1
|
||||
exec_created:/usr/bin/true
|
||||
exec_fib:0
|
||||
exec_jail_user:root
|
||||
exec_poststart:/usr/bin/true
|
||||
exec_poststop:/usr/bin/true
|
||||
exec_prestart:/usr/bin/true
|
||||
exec_prestop:/usr/bin/true
|
||||
exec_start:/bin/sh /etc/rc
|
||||
exec_stop:/bin/sh /etc/rc.shutdown
|
||||
exec_system_jail_user:0
|
||||
exec_system_user:root
|
||||
exec_timeout:60
|
||||
host_domainname:none
|
||||
host_hostname:ansible-client
|
||||
host_hostuuid:test_103
|
||||
host_time:1
|
||||
hostid:34333834-3734-5a43-3331-313342464631
|
||||
hostid_strict_check:0
|
||||
interfaces:vnet0:bridge0
|
||||
ip4:new
|
||||
ip4_addr:vnet0|10.1.0.103/24
|
||||
ip4_saddrsel:1
|
||||
ip6:new
|
||||
ip6_addr:none
|
||||
ip6_saddrsel:1
|
||||
ip_hostname:0
|
||||
jail_zfs:0
|
||||
jail_zfs_dataset:iocage/jails/test_103/data
|
||||
jail_zfs_mountpoint:none
|
||||
last_started:none
|
||||
localhost_ip:none
|
||||
login_flags:-f root
|
||||
mac_prefix:3e4a92
|
||||
maxproc:off
|
||||
memorylocked:off
|
||||
memoryuse:off
|
||||
min_dyn_devfs_ruleset:1000
|
||||
mount_devfs:1
|
||||
mount_fdescfs:1
|
||||
mount_linprocfs:0
|
||||
mount_procfs:0
|
||||
mountpoint:readonly
|
||||
msgqqueued:off
|
||||
msgqsize:off
|
||||
nat:0
|
||||
nat_backend:ipfw
|
||||
nat_forwards:none
|
||||
nat_interface:none
|
||||
nat_prefix:172.16
|
||||
nmsgq:off
|
||||
notes:vmm=iocage_01
|
||||
nsem:off
|
||||
nsemop:off
|
||||
nshm:off
|
||||
nthr:off
|
||||
openfiles:off
|
||||
origin:readonly
|
||||
owner:root
|
||||
pcpu:off
|
||||
plugin_name:none
|
||||
plugin_repository:none
|
||||
priority:99
|
||||
pseudoterminals:off
|
||||
quota:none
|
||||
readbps:off
|
||||
readiops:off
|
||||
release:13.4-RELEASE-p2
|
||||
reservation:none
|
||||
resolver:/etc/resolv.conf
|
||||
rlimits:off
|
||||
rtsold:0
|
||||
securelevel:2
|
||||
shmsize:off
|
||||
stacksize:off
|
||||
state:down
|
||||
stop_timeout:30
|
||||
swapuse:off
|
||||
sync_state:none
|
||||
sync_target:none
|
||||
sync_tgt_zpool:none
|
||||
sysvmsg:new
|
||||
sysvsem:new
|
||||
sysvshm:new
|
||||
template:0
|
||||
type:jail
|
||||
used:readonly
|
||||
vmemoryuse:off
|
||||
vnet:1
|
||||
vnet0_mac:none
|
||||
vnet0_mtu:auto
|
||||
vnet1_mac:none
|
||||
vnet1_mtu:auto
|
||||
vnet2_mac:none
|
||||
vnet2_mtu:auto
|
||||
vnet3_mac:none
|
||||
vnet3_mtu:auto
|
||||
vnet_default_interface:auto
|
||||
vnet_default_mtu:1500
|
||||
vnet_interfaces:none
|
||||
wallclock:off
|
||||
writebps:off
|
||||
writeiops:off
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -0,0 +1,112 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (c) 2024 Vladimir Botka <vbotka@gmail.com>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
from ansible.inventory.data import InventoryData
|
||||
from ansible.template import Templar
|
||||
from ansible_collections.community.general.plugins.inventory.iocage import InventoryModule
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def inventory():
|
||||
inv = InventoryModule()
|
||||
inv.inventory = InventoryData()
|
||||
inv.templar = Templar(None)
|
||||
inv.jails = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_jails.txt')
|
||||
inv.js_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage_jails.yml')
|
||||
prpts_101 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_properties_test_101.txt')
|
||||
prpts_102 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_properties_test_102.txt')
|
||||
prpts_103 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_properties_test_103.txt')
|
||||
inv.prpts = {'test_101': prpts_101, 'test_102': prpts_102, 'test_103': prpts_103}
|
||||
inv.ps_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage_properties.yml')
|
||||
inv.ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage_inventory.yml')
|
||||
return inv
|
||||
|
||||
|
||||
def load_txt_data(path):
|
||||
f = open(path, 'r')
|
||||
s = f.read()
|
||||
f.close()
|
||||
return s
|
||||
|
||||
|
||||
def load_yml_data(path):
|
||||
f = open(path, 'r')
|
||||
d = yaml.safe_load(f)
|
||||
f.close()
|
||||
return d
|
||||
|
||||
|
||||
def get_option(option):
|
||||
groups = {}
|
||||
groups['test'] = "inventory_hostname.startswith('test')"
|
||||
|
||||
if option == 'groups':
|
||||
return groups
|
||||
elif option == 'keyed_groups':
|
||||
return []
|
||||
elif option == 'compose':
|
||||
return {}
|
||||
elif option == 'strict':
|
||||
return False
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def test_verify_file_bad_config(inventory):
|
||||
assert inventory.verify_file('foobar.iocage.yml') is False
|
||||
|
||||
|
||||
def test_verify_file(tmp_path, inventory):
|
||||
file = tmp_path / "foobar.iocage.yml"
|
||||
file.touch()
|
||||
assert inventory.verify_file(str(file))
|
||||
|
||||
|
||||
def test_get_jails(inventory):
|
||||
results = {'_meta': {'hostvars': {}}}
|
||||
inventory.get_jails(inventory.jails, results)
|
||||
assert results == inventory.js_ok
|
||||
|
||||
|
||||
def test_get_properties(inventory):
|
||||
results = {'_meta': {'hostvars': {}}}
|
||||
inventory.get_jails(inventory.jails, results)
|
||||
for hostname, host_vars in results['_meta']['hostvars'].items():
|
||||
inventory.get_properties(inventory.prpts[hostname], results, hostname)
|
||||
assert results == inventory.ps_ok
|
||||
|
||||
|
||||
def test_populate(inventory, mocker):
|
||||
results = {'_meta': {'hostvars': {}}}
|
||||
inventory.get_jails(inventory.jails, results)
|
||||
for hostname, host_vars in results['_meta']['hostvars'].items():
|
||||
inventory.get_properties(inventory.prpts[hostname], results, hostname)
|
||||
inventory.get_option = mocker.MagicMock(side_effect=get_option)
|
||||
inventory.populate(results)
|
||||
|
||||
# test
|
||||
hosts = ('test_101', 'test_102', 'test_103')
|
||||
vars = ('iocage_basejail', 'iocage_boot', 'iocage_ip4', 'iocage_ip6', 'iocage_properties',
|
||||
'iocage_release', 'iocage_state', 'iocage_template', 'iocage_type')
|
||||
|
||||
# test host_vars
|
||||
for host in hosts:
|
||||
h = inventory.inventory.get_host(host)
|
||||
for var in vars:
|
||||
assert inventory.ok['all']['children']['test']['hosts'][host][var] == h.get_vars()[var]
|
||||
|
||||
# test groups
|
||||
test_101_info = inventory.inventory.get_host('test_101')
|
||||
test_102_info = inventory.inventory.get_host('test_102')
|
||||
test_103_info = inventory.inventory.get_host('test_103')
|
||||
g = inventory.inventory.groups['test']
|
||||
assert g.hosts == [test_101_info, test_102_info, test_103_info]
|
Loading…
Reference in New Issue