300 Module vbotka.freebsd.service
Use case
Test the module vbotka.freebsd.service.
Tree
shell> tree .
.
├── ansible.cfg
├── hosts
│ ├── 06_iocage2.yml
│ └── 99_constructed.yml
├── iocage.ini
├── pb-test-01.yml
├── pb-test-02.yml
├── pb-test-03.yml
├── pb-test-04.yml
├── pb-test-05.yml
├── pb-test-06.yml
└── pb-test-07.yml
Synopsis
At all running jails in the managed node:
playbook
pb-test-01.yml: display sshd rcvar.playbook
pb-test-06.yml: display sendmail rcvar.
At the managed node:
playbook
pb-test-02.yml: display sshd rcvarplaybook
pb-test-03.yml: display enabled servicesplaybook
pb-test-04.yml: display sshd statusplaybook
pb-test-05.yml: display sshd commands synopsisplaybook
pb-test-07.yml: start apcupsd.
Requirements
running jails at the iocage host.
Notes
Jail name doesn’t work in iocage jails. Use JID instead.
See also
Jails at managed node
# iocage list -l
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+======+===============+======+=======+======+=================+=======================+=====+==================+==========+
| None | 09caf271 | off | down | jail | 15.1-RELEASE-p1 | DHCP (not running) | - | - | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| None | 1718af82 | off | down | jail | 15.1-RELEASE-p1 | DHCP (not running) | - | - | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 22 | log-server-01 | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.10/24 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 21 | pkg-repo | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.23/24 | - | ansible-pkg-repo | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 18 | repos | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.21/24 | - | ansible-repos | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 19 | repos-devel | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.22/24 | - | ansible-repos | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 28 | test-151 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.189 | - | ansible-client | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 27 | test-152 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.188 | - | ansible-client | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 26 | test-153 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.187 | - | ansible-client | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 23 | www-01 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.116 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 24 | www-02 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.147 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
ansible.cfg
[defaults]
callback_result_format = yaml
deprecation_warnings = false
display_skipped_hosts = false
gathering = explicit
interpreter_python = auto_silent
[connection]
pipelining = true
Inventory iocage.ini
iocage_01 ansible_host=10.1.0.18
iocage_02 ansible_host=10.1.0.73
iocage_03 ansible_host=10.1.0.17
iocage_04 ansible_host=10.1.0.29
[iocage]
iocage_06
[iocage:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent
hosts
plugin: vbotka.freebsd.iocage2
host: iocage_06
user: admin
sudo: true
get_properties: true
compose:
iocage_tags: dict(iocage_properties.notes | regex_findall('(\w+)=([\w\-]+)'))
iocage_classes: iocage_properties.notes | regex_findall('(?<=class=)[\w\-]+|(?<=,)[\w\-]+')
# connection plugin vbotka.freebsd.jailexec
ansible_connection: "'vbotka.freebsd.jailexec'"
ansible_ssh_user: "'admin'"
ansible_jail_host: dict(iocage_properties.notes | regex_findall('(\w+)=([\w\-]+)')).vmm | d('none')
ansible_jail_name: iocage_jid
ansible_jail_privilege_escalation: "'sudo'"
plugin: ansible.builtin.constructed
keyed_groups:
- prefix: state
key: iocage_state
- prefix: vmm
key: iocage_tags.vmm
Display inventory
(env) > ansible-inventory -i hosts --graph
@all:
|--@ungrouped:
|--@state_up:
| |--test-153
| |--repos-devel
| |--pkg-repo
| |--log-server-01
| |--www-02
| |--test-152
| |--repos
| |--www-01
| |--test-151
|--@vmm_iocage_06:
| |--test-153
| |--1718af82
| |--repos-devel
| |--09caf271
| |--pkg-repo
| |--log-server-01
| |--www-02
| |--test-152
| |--repos
| |--www-01
| |--test-151
|--@state_down:
| |--1718af82
| |--09caf271
Playbook pb-test-01.yml
- name: Test module vbotka.freebsd.service. Get running jails sshd rcvar.
hosts: state_up
remote_user: admin
vars:
debug: false
ansible_python_interpreter: auto_silent
sshd_rcvar: "{{ out.stdout | community.general.jc('ini') }}"
tasks:
- name: Get sshd rcvar.
vbotka.freebsd.service:
script: sshd
command: rcvar
register: out
- ansible.builtin.debug:
var: out
when: debug | bool
- ansible.builtin.debug:
var: out.stdout
- ansible.builtin.debug:
var: sshd_rcvar
- ansible.builtin.debug:
var: out.rcvar
Playbook output - jails sshd rcvar
The key and value of rcvar is returned in 1) the attribute rcvar of the registered variable
out.rcvar and in 2) the stdout. Usually, you’ll use the first option. The second option shows
how to use the filter``community.general.jc``.
(env) > ansible-playbook -i hosts pb-test-01.yml
PLAY [Test module vbotka.freebsd.service. Get running jails sshd rcvar.] *******
TASK [Get sshd rcvar.] *********************************************************
ok: [test-153]
ok: [www-02]
ok: [pkg-repo]
ok: [log-server-01]
ok: [test-152]
ok: [repos]
ok: [www-01]
ok: [test-151]
ok: [repos-devel]
TASK [ansible.builtin.debug] ***************************************************
ok: [test-153] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
ok: [repos-devel] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
ok: [pkg-repo] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
ok: [log-server-01] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
ok: [www-02] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
ok: [test-152] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
ok: [repos] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
ok: [www-01] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
ok: [test-151] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
TASK [ansible.builtin.debug] ***************************************************
ok: [www-02] =>
sshd_rcvar:
sshd_enable: 'NO'
ok: [repos-devel] =>
sshd_rcvar:
sshd_enable: 'NO'
ok: [test-153] =>
sshd_rcvar:
sshd_enable: 'YES'
ok: [pkg-repo] =>
sshd_rcvar:
sshd_enable: 'NO'
ok: [log-server-01] =>
sshd_rcvar:
sshd_enable: 'NO'
ok: [repos] =>
sshd_rcvar:
sshd_enable: 'NO'
ok: [test-152] =>
sshd_rcvar:
sshd_enable: 'YES'
ok: [www-01] =>
sshd_rcvar:
sshd_enable: 'NO'
ok: [test-151] =>
sshd_rcvar:
sshd_enable: 'YES'
TASK [ansible.builtin.debug] ***************************************************
ok: [test-153] =>
out.rcvar:
sshd_enable: 'YES'
ok: [pkg-repo] =>
out.rcvar:
sshd_enable: 'NO'
ok: [repos-devel] =>
out.rcvar:
sshd_enable: 'NO'
ok: [log-server-01] =>
out.rcvar:
sshd_enable: 'NO'
ok: [test-152] =>
out.rcvar:
sshd_enable: 'YES'
ok: [www-02] =>
out.rcvar:
sshd_enable: 'NO'
ok: [repos] =>
out.rcvar:
sshd_enable: 'NO'
ok: [www-01] =>
out.rcvar:
sshd_enable: 'NO'
ok: [test-151] =>
out.rcvar:
sshd_enable: 'YES'
PLAY RECAP *********************************************************************
log-server-01 : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
pkg-repo : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
repos : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
repos-devel : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
test-151 : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
test-152 : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
test-153 : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
www-01 : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
www-02 : ok=4 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Playbook pb-test-02.yml
- name: Test module vbotka.freebsd.service. Set dictionary jid_rcvar.
hosts: iocage
vars:
debug: false
jails: "{{ iocage_list_out.stdout | vbotka.freebsd.iocage('jails') }}"
jids: "{{ jails | dict2items
| selectattr('value.state', 'eq', 'up')
| map(attribute='value.jid') }}"
jid_rcvar: "{{ dict(keys | zip(vals)) }}"
keys: "{{ service_out.results | map(attribute='item') }}"
vals: "{{ service_out.results | map(attribute='stdout')
| map('community.general.jc', 'ini') }}"
tasks:
- name: Get iocage list of jails.
environment:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
register: iocage_list_out
changed_when: false
ansible.builtin.command: iocage list --long
- ansible.builtin.debug:
var: iocage_list_out
when: debug | bool
- ansible.builtin.debug:
var: jails | to_yaml
- ansible.builtin.debug:
var: jids | to_yaml
- name: Jails service sshd rcvar.
register: service_out
vbotka.freebsd.service:
jail: "{{ item }}"
script: sshd
command: rcvar
loop: "{{ jids }}"
- ansible.builtin.debug:
var: service_out
when: debug | bool
- ansible.builtin.debug:
var: jid_rcvar
Playbook output - create jid_rcvar
(env) > ansible-playbook -i iocage.ini -e debug=true pb-test-02.yml
PLAY [Test module vbotka.freebsd.service. Set dictionary jid_rcvar.] ***********
TASK [Get iocage list of jails.] ***********************************************
ok: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
iocage_list_out:
ansible_facts:
discovered_interpreter_python: /usr/local/bin/python3.12
changed: false
changed_when_result: false
cmd:
- iocage
- list
- --long
delta: '0:00:00.634091'
end: '2026-08-27 11:29:53.512024'
failed: false
msg: ''
rc: 0
start: '2026-08-27 11:29:52.877933'
stderr: ''
stderr_lines: []
stdout: |-
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+======+===============+======+=======+======+=================+=======================+=====+==================+==========+
| None | 09caf271 | off | down | jail | 15.1-RELEASE-p1 | DHCP (not running) | - | - | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| None | 1718af82 | off | down | jail | 15.1-RELEASE-p1 | DHCP (not running) | - | - | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 22 | log-server-01 | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.10/24 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 21 | pkg-repo | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.23/24 | - | ansible-pkg-repo | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 18 | repos | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.21/24 | - | ansible-repos | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 19 | repos-devel | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.22/24 | - | ansible-repos | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 28 | test-151 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.189 | - | ansible-client | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 27 | test-152 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.188 | - | ansible-client | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 26 | test-153 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.187 | - | ansible-client | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 23 | www-01 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.116 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 24 | www-02 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.147 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
stdout_lines:
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 |
IP6 | TEMPLATE | BASEJAIL |'
- +======+===============+======+=======+======+=================+=======================+=====+==================+==========+
- '| None | 09caf271 | off | down | jail | 15.1-RELEASE-p1 | DHCP (not
running) | - | - | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| None | 1718af82 | off | down | jail | 15.1-RELEASE-p1 | DHCP (not
running) | - | - | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 22 | log-server-01 | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.10/24
| - | ansible-init | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 21 | pkg-repo | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.23/24
| - | ansible-pkg-repo | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 18 | repos | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.21/24
| - | ansible-repos | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 19 | repos-devel | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.22/24
| - | ansible-repos | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 28 | test-151 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.189
| - | ansible-client | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 27 | test-152 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.188
| - | ansible-client | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 26 | test-153 | off | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.187
| - | ansible-client | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 23 | www-01 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.116
| - | ansible-init | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
- '| 24 | www-02 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.147
| - | ansible-init | no |'
- +------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
jails | to_yaml: |-
09caf271:
basejail: 'no'
boot: 'off'
ip4: '-'
ip4_dict:
ip4: []
msg: DHCP (not running)
ip6: '-'
jid: None
release: 15.1-RELEASE-p1
state: down
template: '-'
type: jail
1718af82:
basejail: 'no'
boot: 'off'
ip4: '-'
ip4_dict:
ip4: []
msg: DHCP (not running)
ip6: '-'
jid: None
release: 15.1-RELEASE-p1
state: down
template: '-'
type: jail
log-server-01:
basejail: 'no'
boot: 'on'
ip4: 172.16.99.10
ip4_dict:
ip4:
- {ifc: vnet0, ip: 172.16.99.10, mask: '24'}
msg: ''
ip6: '-'
jid: '22'
release: 15.1-RELEASE-p1
state: up
template: ansible-init
type: jail
pkg-repo:
basejail: 'no'
boot: 'on'
ip4: 172.16.99.23
ip4_dict:
ip4:
- {ifc: vnet0, ip: 172.16.99.23, mask: '24'}
msg: ''
ip6: '-'
jid: '21'
release: 15.1-RELEASE-p1
state: up
template: ansible-pkg-repo
type: jail
repos:
basejail: 'no'
boot: 'on'
ip4: 172.16.99.21
ip4_dict:
ip4:
- {ifc: vnet0, ip: 172.16.99.21, mask: '24'}
msg: ''
ip6: '-'
jid: '18'
release: 15.1-RELEASE-p1
state: up
template: ansible-repos
type: jail
repos-devel:
basejail: 'no'
boot: 'on'
ip4: 172.16.99.22
ip4_dict:
ip4:
- {ifc: vnet0, ip: 172.16.99.22, mask: '24'}
msg: ''
ip6: '-'
jid: '19'
release: 15.1-RELEASE-p1
state: up
template: ansible-repos
type: jail
test-151:
basejail: 'no'
boot: 'off'
ip4: 172.16.99.189
ip4_dict:
ip4:
- {ifc: epair0b, ip: 172.16.99.189, mask: '-'}
msg: ''
ip6: '-'
jid: '28'
release: 15.1-RELEASE-p1
state: up
template: ansible-client
type: jail
test-152:
basejail: 'no'
boot: 'off'
ip4: 172.16.99.188
ip4_dict:
ip4:
- {ifc: epair0b, ip: 172.16.99.188, mask: '-'}
msg: ''
ip6: '-'
jid: '27'
release: 15.1-RELEASE-p1
state: up
template: ansible-client
type: jail
test-153:
basejail: 'no'
boot: 'off'
ip4: 172.16.99.187
ip4_dict:
ip4:
- {ifc: epair0b, ip: 172.16.99.187, mask: '-'}
msg: ''
ip6: '-'
jid: '26'
release: 15.1-RELEASE-p1
state: up
template: ansible-client
type: jail
www-01:
basejail: 'no'
boot: 'on'
ip4: 172.16.99.116
ip4_dict:
ip4:
- {ifc: epair0b, ip: 172.16.99.116, mask: '-'}
msg: ''
ip6: '-'
jid: '23'
release: 15.1-RELEASE-p1
state: up
template: ansible-init
type: jail
www-02:
basejail: 'no'
boot: 'on'
ip4: 172.16.99.147
ip4_dict:
ip4:
- {ifc: epair0b, ip: 172.16.99.147, mask: '-'}
msg: ''
ip6: '-'
jid: '24'
release: 15.1-RELEASE-p1
state: up
template: ansible-init
type: jail
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
jids | to_yaml: |-
['22', '21', '18', '19', '28', '27', '26', '23', '24']
TASK [Jails service sshd rcvar.] ***********************************************
ok: [iocage_06] => (item=22)
ok: [iocage_06] => (item=21)
ok: [iocage_06] => (item=18)
ok: [iocage_06] => (item=19)
ok: [iocage_06] => (item=28)
ok: [iocage_06] => (item=27)
ok: [iocage_06] => (item=26)
ok: [iocage_06] => (item=23)
ok: [iocage_06] => (item=24)
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
service_out:
changed: false
failed: false
msg: All items completed
results:
- ansible_loop_var: item
changed: false
failed: false
item: '22'
rc: 0
rcvar:
sshd_enable: 'NO'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="NO"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '21'
rc: 0
rcvar:
sshd_enable: 'NO'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="NO"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '18'
rc: 0
rcvar:
sshd_enable: 'NO'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="NO"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '19'
rc: 0
rcvar:
sshd_enable: 'NO'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="NO"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '28'
rc: 0
rcvar:
sshd_enable: 'YES'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="YES"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '27'
rc: 0
rcvar:
sshd_enable: 'YES'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="YES"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '26'
rc: 0
rcvar:
sshd_enable: 'YES'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="YES"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '23'
rc: 0
rcvar:
sshd_enable: 'NO'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="NO"
- '# (default: "")'
- ''
- ansible_loop_var: item
changed: false
failed: false
item: '24'
rc: 0
rcvar:
sshd_enable: 'NO'
stderr: ''
stderr_lines: []
stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="NO"
# (default: "")
stdout_lines:
- '# sshd : Secure Shell Daemon'
- '#'
- sshd_enable="NO"
- '# (default: "")'
- ''
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
jid_rcvar:
'18':
sshd_enable: 'NO'
'19':
sshd_enable: 'NO'
'21':
sshd_enable: 'NO'
'22':
sshd_enable: 'NO'
'23':
sshd_enable: 'NO'
'24':
sshd_enable: 'NO'
'26':
sshd_enable: 'YES'
'27':
sshd_enable: 'YES'
'28':
sshd_enable: 'YES'
PLAY RECAP *********************************************************************
iocage_06 : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook pb-test-03.yml
- name: Test module vbotka.freebsd.service. Set dictionary jid_service_enabled.
hosts: iocage
vars:
debug: false
jails: "{{ iocage_list_out.stdout | vbotka.freebsd.iocage('jails') }}"
jids: "{{ jails | dict2items
| selectattr('value.state', 'eq', 'up')
| map(attribute='value.jid') }}"
jid_service_enabled: "{{ dict(keys | zip(vals)) }}"
keys: "{{ service_out.results | map(attribute='item') }}"
vals: "{{ service_out.results | map(attribute='stdout_lines')
| map('map', 'basename') }}"
tasks:
- name: Get iocage list of jails
environment:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
register: iocage_list_out
changed_when: false
ansible.builtin.command: iocage list --long
- name: Jails service list enabled
register: service_out
vbotka.freebsd.service:
jail: "{{ item }}"
list_enabled: true
loop: "{{ jids }}"
- ansible.builtin.debug:
var: service_out
when: debug | bool
- ansible.builtin.debug:
var: jid_service_enabled | to_yaml
Playbook output - enabled services
(env) > ansible-playbook -i iocage.ini -e debug=true pb-test-03.yml
PLAY [Test module vbotka.freebsd.service. Set dictionary jid_service_enabled.] ***
TASK [Get iocage list of jails] ************************************************
ok: [iocage_06]
TASK [Jails service list enabled] **********************************************
ok: [iocage_06] => (item=22)
ok: [iocage_06] => (item=21)
ok: [iocage_06] => (item=18)
ok: [iocage_06] => (item=19)
ok: [iocage_06] => (item=28)
ok: [iocage_06] => (item=27)
ok: [iocage_06] => (item=26)
ok: [iocage_06] => (item=23)
ok: [iocage_06] => (item=24)
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
service_out:
changed: false
failed: false
msg: All items completed
results:
- ansible_loop_var: item
changed: false
failed: false
item: '22'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/ansible_init
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
/usr/local/etc/rc.d/syslog-ng
stdout_lines:
- /etc/rc.d/ansible_init
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- /usr/local/etc/rc.d/syslog-ng
- ansible_loop_var: item
changed: false
failed: false
item: '21'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
/usr/local/etc/rc.d/nginx
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- /usr/local/etc/rc.d/nginx
- ansible_loop_var: item
changed: false
failed: false
item: '18'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
/usr/local/etc/rc.d/git_daemon
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- /usr/local/etc/rc.d/git_daemon
- ansible_loop_var: item
changed: false
failed: false
item: '19'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
/usr/local/etc/rc.d/git_daemon
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- /usr/local/etc/rc.d/git_daemon
- ansible_loop_var: item
changed: false
failed: false
item: '28'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/sshd
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/sshd
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- ansible_loop_var: item
changed: false
failed: false
item: '27'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/sshd
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/sshd
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- ansible_loop_var: item
changed: false
failed: false
item: '26'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/sshd
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/sshd
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- ansible_loop_var: item
changed: false
failed: false
item: '23'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/ansible_init
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
/usr/local/etc/rc.d/syslog-ng
stdout_lines:
- /etc/rc.d/ansible_init
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- /usr/local/etc/rc.d/syslog-ng
- ansible_loop_var: item
changed: false
failed: false
item: '24'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/ansible_init
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/ip6addrctl
/etc/rc.d/motd
/etc/rc.d/netif
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/utx
/etc/rc.d/var_run
/etc/rc.d/virecover
/usr/local/etc/rc.d/syslog-ng
stdout_lines:
- /etc/rc.d/ansible_init
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/ip6addrctl
- /etc/rc.d/motd
- /etc/rc.d/netif
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/utx
- /etc/rc.d/var_run
- /etc/rc.d/virecover
- /usr/local/etc/rc.d/syslog-ng
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
jid_service_enabled | to_yaml: |-
'18': [cleanvar, cron, ip6addrctl, motd, netif, newsyslog, os-release, syslogd, utx,
var_run, virecover, git_daemon]
'19': [cleanvar, cron, ip6addrctl, motd, netif, newsyslog, os-release, syslogd, utx,
var_run, virecover, git_daemon]
'21': [cleanvar, cron, ip6addrctl, motd, netif, newsyslog, os-release, syslogd, utx,
var_run, virecover, nginx]
'22': [ansible_init, cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog,
os-release, utx, var_run, virecover, syslog-ng]
'23': [ansible_init, cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog,
os-release, utx, var_run, virecover, syslog-ng]
'24': [ansible_init, cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog,
os-release, utx, var_run, virecover, syslog-ng]
'26': [cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog, os-release, sshd,
syslogd, utx, var_run, virecover]
'27': [cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog, os-release, sshd,
syslogd, utx, var_run, virecover]
'28': [cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog, os-release, sshd,
syslogd, utx, var_run, virecover]
PLAY RECAP *********************************************************************
iocage_06 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook pb-test-04.yml
- name: Test module vbotka.freebsd.service. Set dictionary jid_service_status.
hosts: iocage
vars:
debug: false
ansible_python_interpreter: auto_silent
jails: "{{ iocage_list_out.stdout | vbotka.freebsd.iocage('jails') }}"
jids: "{{ jails | dict2items
| selectattr('value.state', 'eq', 'up')
| map(attribute='value.jid') }}"
jid_service_status: "{{ dict(service_out.results
| community.general.json_query('[].[item, status]')) }}"
tasks:
- name: Get iocage list of jails
environment:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
register: iocage_list_out
changed_when: false
ansible.builtin.command: iocage list --long
- name: Jails sshd status
register: service_out
vbotka.freebsd.service:
jail: "{{ item }}"
script: sshd
command: status
loop: "{{ jids }}"
- ansible.builtin.debug:
var: service_out
when: debug | bool
- ansible.builtin.debug:
var: jid_service_status | to_nice_yaml
Playbook output - sshd status
(env) > ansible-playbook -i iocage.ini pb-test-04.yml
PLAY [Test module vbotka.freebsd.service. Set dictionary jid_service_status.] ***
TASK [Get iocage list of jails] ************************************************
ok: [iocage_06]
TASK [Jails sshd status] *******************************************************
ok: [iocage_06] => (item=22)
ok: [iocage_06] => (item=21)
ok: [iocage_06] => (item=18)
ok: [iocage_06] => (item=19)
ok: [iocage_06] => (item=28)
ok: [iocage_06] => (item=27)
ok: [iocage_06] => (item=26)
ok: [iocage_06] => (item=23)
ok: [iocage_06] => (item=24)
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
jid_service_status | to_nice_yaml: |-
'18': stopped
'19': stopped
'21': stopped
'22': stopped
'23': stopped
'24': stopped
'26': running
'27': running
'28': running
PLAY RECAP *********************************************************************
iocage_06 : ok=3 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Playbook pb-test-05.yml
- name: Test module vbotka.freebsd.service. Get script commands synopsis.
hosts: iocage
vars:
ansible_python_interpreter: auto_silent
jails: "{{ iocage_list_out.stdout | vbotka.freebsd.iocage('jails') }}"
jids: "{{ jails | dict2items
| selectattr('value.state', 'eq', 'up')
| map(attribute='value.jid') }}"
commands: "{{ script_commands.synopsis.cmds +
script_commands.synopsis.prefix
| product(script_commands.synopsis.cmds)
| map('join') }}"
tasks:
- name: Get iocage list of jails
environment:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
register: iocage_list_out
changed_when: false
ansible.builtin.command: iocage list --long
- name: Jails sshd commands synopsis
register: script_commands
vbotka.freebsd.service:
jail: "{{ jids.0 }}"
script: sshd
synopsis: true
- ansible.builtin.debug:
var: script_commands
- ansible.builtin.debug:
var: commands | to_yaml
Playbook output - sshd commands synopsis
(env) > ansible-playbook -i iocage.ini pb-test-05.yml
PLAY [Test module vbotka.freebsd.service. Get script commands synopsis.] *******
TASK [Get iocage list of jails] ************************************************
ok: [iocage_06]
TASK [Jails sshd commands synopsis] ********************************************
ok: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
script_commands:
changed: false
failed: false
rc: 0
stderr: |-
Usage: /etc/rc.d/sshd [fast|force|one|quiet](start|stop|restart|rcvar|enable|disable|delete|enabled|describe|extracommands|configtest|keygen|reload|status|poll)
stderr_lines:
- 'Usage: /etc/rc.d/sshd [fast|force|one|quiet](start|stop|restart|rcvar|enable|disable|delete|enabled|describe|extracommands|configtest|keygen|reload|status|poll)'
stdout: ''
stdout_lines: []
synopsis:
cmds:
- start
- stop
- restart
- rcvar
- enable
- disable
- delete
- enabled
- describe
- extracommands
- configtest
- keygen
- reload
- status
- poll
prefix:
- fast
- force
- one
- quiet
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
commands | to_yaml: |-
[start, stop, restart, rcvar, enable, disable, delete, enabled, describe, extracommands,
configtest, keygen, reload, status, poll, faststart, faststop, fastrestart, fastrcvar,
fastenable, fastdisable, fastdelete, fastenabled, fastdescribe, fastextracommands,
fastconfigtest, fastkeygen, fastreload, faststatus, fastpoll, forcestart, forcestop,
forcerestart, forcercvar, forceenable, forcedisable, forcedelete, forceenabled,
forcedescribe, forceextracommands, forceconfigtest, forcekeygen, forcereload, forcestatus,
forcepoll, onestart, onestop, onerestart, onercvar, oneenable, onedisable, onedelete,
oneenabled, onedescribe, oneextracommands, oneconfigtest, onekeygen, onereload,
onestatus, onepoll, quietstart, quietstop, quietrestart, quietrcvar, quietenable,
quietdisable, quietdelete, quietenabled, quietdescribe, quietextracommands, quietconfigtest,
quietkeygen, quietreload, quietstatus, quietpoll]
PLAY RECAP *********************************************************************
iocage_06 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook pb-test-06.yml
- name: Test module vbotka.freebsd.service. Get running jails sendmail rcvar(s).
hosts: state_up
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
tasks:
- name: Get sendmail rcvar(s).
vbotka.freebsd.service:
script: sendmail
command: rcvar
register: out
- ansible.builtin.debug:
var: out.rcvar
Playbook output - sendmail rcvar
shell> ansible-playbook -i hosts pb-test-06.yml
PLAY [Test module vbotka.freebsd.service. Get running jails sendmail rcvar(s).] ***
TASK [Get sendmail rcvar(s).] **************************************************
ok: [repos-devel]
ok: [log-server-01]
ok: [www-02]
ok: [test-153]
ok: [pkg-repo]
ok: [repos]
ok: [www-01]
ok: [test-152]
ok: [test-151]
TASK [ansible.builtin.debug] ***************************************************
ok: [test-153] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [repos-devel] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [log-server-01] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [pkg-repo] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [www-02] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [test-152] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [www-01] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [repos] =>
out.rcvar:
sendmail_enable: 'NO'
ok: [test-151] =>
out.rcvar:
sendmail_enable: 'NO'
PLAY RECAP *********************************************************************
log-server-01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
pkg-repo : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
repos : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
repos-devel : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test-151 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test-152 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test-153 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
www-01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
www-02 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook pb-test-07.yml
- name: Test module vbotka.freebsd.service. Start smartd.
hosts: iocage
vars:
debug: false
start_cmd_enable: "{{ rcvar.rcvar.smartd_enable == 'YES' }}"
start_cmd: "{{ start_cmd_enable | ternary('start', 'onestart') }}"
tasks:
- name: Get smartd rcvar.
register: rcvar
vbotka.freebsd.service:
script: smartd
command: rcvar
- ansible.builtin.debug:
msg: |
rcvar.rcvar: {{ rcvar.rcvar }}
rcvar.rcvar.smartd_enable: {{ rcvar.rcvar.smartd_enable }}
start_cmd_enable: {{ start_cmd_enable }}
start_cmd: {{ start_cmd }}
when: debug | bool
# 500ms is enough to complete 'service smartd (one)start'.
# The status before and after the command are different and dictionary status is returned.
# As a result, the module returns 'changed: true'
- name: Start smartd. By default wait 500ms to complete the command.
register: out
vbotka.freebsd.service:
script: smartd
command: "{{ start_cmd }}"
- ansible.builtin.debug:
var: out
- name: Get smartd status.
register: out
vbotka.freebsd.service:
script: smartd
command: status
- ansible.builtin.debug:
var: out
- name: Stop smartd. By default wait 500ms to complete the command.
register: out
vbotka.freebsd.service:
script: smartd
command: stop
- ansible.builtin.debug:
var: out
# 200ms is not enough to complete 'service smartd (one)start'.
# The status before and after the command do not change and are not returned.
# As a result, the module returns 'changed: false'
# The service smartd is started. See the next status.
- name: Start smartd. Wait 200ms to complete the command.
register: out
vbotka.freebsd.service:
script: smartd
command: "{{ start_cmd }}"
wait: 0.2
- ansible.builtin.debug:
var: out
- name: Get smartd status.
register: out
vbotka.freebsd.service:
script: smartd
command: status
- ansible.builtin.debug:
var: out
Playbook output - start apcupsd
(env) > ansible-playbook -i iocage.ini pb-test-07.yml
PLAY [Test module vbotka.freebsd.service. Start smartd.] ***********************
TASK [Get smartd rcvar.] *******************************************************
ok: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
msg: |-
rcvar.rcvar: {'smartd_enable': 'YES'}
rcvar.rcvar.smartd_enable: YES
start_cmd_enable: True
start_cmd: start
TASK [Start smartd. By default wait 500ms to complete the command.] ************
ok: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
out:
changed: false
failed: false
rc: 0
start: smartd already running? (pid=5752).
stderr: |-
smartd already running? (pid=5752).
stderr_lines:
- smartd already running? (pid=5752).
stdout: ''
stdout_lines: []
TASK [Get smartd status.] ******************************************************
ok: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
out:
changed: false
failed: false
rc: 0
status: running
stderr: ''
stderr_lines: []
stdout: |-
smartd is running as pid 5752.
stdout_lines:
- smartd is running as pid 5752.
TASK [Stop smartd. By default wait 500ms to complete the command.] *************
changed: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
out:
changed: true
failed: false
rc: 0
state:
post: smartd is not running.
pre: smartd is running as pid 5752.
stderr: ''
stderr_lines: []
stdout: |-
Stopping smartd.
Waiting for PIDS: 5752.
stdout_lines:
- Stopping smartd.
- 'Waiting for PIDS: 5752.'
stop: 'Waiting for PIDS: 5752'
TASK [Start smartd. Wait 200ms to complete the command.] ***********************
changed: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
out:
changed: true
failed: false
rc: 0
start: Starting smartd.
state:
post: smartd is running as pid 55934.
pre: smartd is not running.
stderr: ''
stderr_lines: []
stdout: |-
Starting smartd.
stdout_lines:
- Starting smartd.
TASK [Get smartd status.] ******************************************************
ok: [iocage_06]
TASK [ansible.builtin.debug] ***************************************************
ok: [iocage_06] =>
out:
changed: false
failed: false
rc: 0
status: running
stderr: ''
stderr_lines: []
stdout: |-
smartd is running as pid 55934.
stdout_lines:
- smartd is running as pid 55934.
PLAY RECAP *********************************************************************
iocage_06 : ok=12 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0