300 Module vbotka.freebsd.service¶
Use case¶
Test the module vbotka.freebsd.service
Tree¶
shell> tree .
.
├── ansible.cfg
├── hosts
│ ├── 02_iocage.yml
│ └── 99_constructed.yml
├── iocage-hosts.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¶
Playbook pb-test-01.yml: display sshd rcvar on all running jails.
At iocage_02 jails:
Playbook pb-test-02.yml: Display sshd rcvar.
Playbook pb-test-03.yml: Display enabled services.
Playbook pb-test-04.yml: Display sshd status.
Playbook pb-test-05.yml: Display sshd commands synopsis.
Playbook pb-test-06.yml: Display sendmail rcvars.
At iocage_03:
Playbook 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
List jails at iocage_02¶
[iocage_02]# iocage list -l
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+====================+=====+================+==========+
| 149 | afa9e515 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.122 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 148 | c1670497 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.135 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 147 | test_111 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.111/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
Configuration ansible.cfg¶
[defaults]
gathering = explicit
callback_result_format = yaml
[connection]
pipelining = true
Inventory hosts/02_iocage.yml¶
plugin: vbotka.freebsd.iocage
host: 10.1.0.73
user: admin
env:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
Inventory hosts/99_constructed.yml¶
plugin: ansible.builtin.constructed
groups:
up: iocage_state == 'up'
Display inventory¶
(env) > ansible-inventory -i hosts --graph
@all:
|--@ungrouped:
|--@up:
| |--afa9e515
| |--c1670497
| |--test_111
Inventory iocage-hosts.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]
iocage_01
iocage_02
iocage_03
[iocage:vars]
ansible_user=admin
ansible_become=true
Playbook pb-test-01.yml¶
- name: Test module vbotka.freebsd.service. Get running jails sshd rcvar.
hosts: up
remote_user: admin
vars:
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.stdout
- ansible.builtin.debug:
var: sshd_rcvar
- ansible.builtin.debug:
var: out.rcvar
Playbook output. Get running jails sshd rcvar.¶
(env) > ansible-playbook pb-test-01.yml -i hosts
PLAY [Test module vbotka.freebsd.service. Get running jails sshd rcvar.] **********************
TASK [vbotka.freebsd.service] *****************************************************************
changed: [c1670497]
changed: [test_111]
changed: [afa9e515]
TASK [ansible.builtin.debug] ******************************************************************
ok: [afa9e515] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
ok: [c1670497] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
ok: [test_111] =>
out.stdout: |-
# sshd : Secure Shell Daemon
#
sshd_enable="YES"
# (default: "")
TASK [ansible.builtin.debug] ******************************************************************
ok: [afa9e515] =>
sshd_rcvar:
sshd_enable: 'YES'
ok: [test_111] =>
sshd_rcvar:
sshd_enable: 'YES'
ok: [c1670497] =>
sshd_rcvar:
sshd_enable: 'YES'
TASK [ansible.builtin.debug] ******************************************************************
ok: [afa9e515] =>
out.rcvar:
sshd_enable: '"YES"'
ok: [c1670497] =>
out.rcvar:
sshd_enable: '"YES"'
ok: [test_111] =>
out.rcvar:
sshd_enable: '"YES"'
PLAY RECAP ************************************************************************************
afa9e515: ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
c1670497: ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test_111: ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook pb-test-02.yml¶
- name: Test module vbotka.freebsd.service. Set dictionary jid_rcvar.
hosts: iocage
remote_user: admin
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_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. Set dictionary jid_rcvar.¶
(env) > ansible-playbook pb-test-02.yml -i iocage-hosts.ini -l iocage_02 -e debug=true
PLAY [Test module vbotka.freebsd.service. Set dictionary jid_rcvar.] ***************************
TASK [Get iocage list of jails.] ***************************************************************
ok: [iocage_02]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
iocage_list_out:
ansible_facts:
discovered_interpreter_python: /usr/local/bin/python3.11
changed: false
cmd:
- iocage
- list
- --long
delta: '0:00:02.578361'
end: '2025-03-14 08:20:55.036138'
failed: false
msg: ''
rc: 0
start: '2025-03-14 08:20:52.457777'
stderr: ''
stderr_lines: []
stdout: |-
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+====================+=====+================+==========+
| 149 | afa9e515 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.122 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 148 | c1670497 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.135 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 147 | test_111 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.111/24 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
stdout_lines:
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- '| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 |
IP6 | TEMPLATE | BASEJAIL |'
- +=====+==========+======+=======+======+=================+====================+=====+================+==========+
- '| 149 | afa9e515 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.122
| - | ansible_client | no |'
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- '| 148 | c1670497 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.135
| - | ansible_client | no |'
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- '| 147 | test_111 | off | up | jail | 14.1-RELEASE-p6 | em0|10.1.0.111/24 |
- | ansible_client | no |'
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
jails | to_yaml: |-
afa9e515:
basejail: 'no'
boot: 'off'
ip4: 10.1.0.122
ip4_dict:
ip4:
- {ifc: epair0b, ip: 10.1.0.122, mask: '-'}
msg: ''
ip6: '-'
jid: '149'
release: 14.1-RELEASE-p6
state: up
template: ansible_client
type: jail
c1670497:
basejail: 'no'
boot: 'off'
ip4: 10.1.0.135
ip4_dict:
ip4:
- {ifc: epair0b, ip: 10.1.0.135, mask: '-'}
msg: ''
ip6: '-'
jid: '148'
release: 14.1-RELEASE-p6
state: up
template: ansible_client
type: jail
test_111:
basejail: 'no'
boot: 'off'
ip4: 10.1.0.111
ip4_dict:
ip4:
- {ifc: em0, ip: 10.1.0.111, mask: '24'}
msg: ''
ip6: '-'
jid: '147'
release: 14.1-RELEASE-p6
state: up
template: ansible_client
type: jail
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
jids | to_yaml: |-
['149', '148', '147']
TASK [Jails service sshd rcvar.] ***************************************************************
ok: [iocage_02] => (item=149)
ok: [iocage_02] => (item=148)
ok: [iocage_02] => (item=147)
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
service_out:
changed: false
msg: All items completed
results:
- ansible_loop_var: item
changed: false
failed: false
invocation:
module_args:
command: rcvar
env: null
jail: '149'
list_enabled: false
script: sshd
synopsis: false
wait: 0.5
item: '149'
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
invocation:
module_args:
command: rcvar
env: null
jail: '148'
list_enabled: false
script: sshd
synopsis: false
wait: 0.5
item: '148'
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
invocation:
module_args:
command: rcvar
env: null
jail: '147'
list_enabled: false
script: sshd
synopsis: false
wait: 0.5
item: '147'
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: "")'
- ''
skipped: false
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
jid_rcvar:
'147':
sshd_enable: 'YES'
'148':
sshd_enable: 'YES'
'149':
sshd_enable: 'YES'
PLAY RECAP *************************************************************************************
iocage_02: 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
remote_user: admin
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_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. Display enabled services.¶
(env) > ansible-playbook pb-test-03.yml -i iocage-hosts.ini -l iocage_02 -e debug=true
PLAY [Test module vbotka.freebsd.service. Set dictionary jid_service_enabled.] *****************
TASK [Get iocage list of jails] ****************************************************************
ok: [iocage_02]
TASK [Jails service list enabled] **************************************************************
ok: [iocage_02] => (item=149)
ok: [iocage_02] => (item=148)
ok: [iocage_02] => (item=147)
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
service_out:
changed: false
msg: All items completed
results:
- ansible_loop_var: item
changed: false
failed: false
invocation:
module_args:
command: null
env: null
jail: '149'
list_enabled: true
script: null
synopsis: false
wait: 0.5
item: '149'
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/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/virecover
- ansible_loop_var: item
changed: false
failed: false
invocation:
module_args:
command: null
env: null
jail: '148'
list_enabled: true
script: null
synopsis: false
wait: 0.5
item: '148'
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/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/virecover
- ansible_loop_var: item
changed: false
failed: false
invocation:
module_args:
command: null
env: null
jail: '147'
list_enabled: true
script: null
synopsis: false
wait: 0.5
item: '147'
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
/etc/rc.d/cleanvar
/etc/rc.d/cleartmp
/etc/rc.d/cron
/etc/rc.d/motd
/etc/rc.d/newsyslog
/etc/rc.d/os-release
/etc/rc.d/sshd
/etc/rc.d/syslogd
/etc/rc.d/utx
/etc/rc.d/virecover
stdout_lines:
- /etc/rc.d/cleanvar
- /etc/rc.d/cleartmp
- /etc/rc.d/cron
- /etc/rc.d/motd
- /etc/rc.d/newsyslog
- /etc/rc.d/os-release
- /etc/rc.d/sshd
- /etc/rc.d/syslogd
- /etc/rc.d/utx
- /etc/rc.d/virecover
skipped: false
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
jid_service_enabled | to_yaml: |-
'147': [cleanvar, cleartmp, cron, motd, newsyslog, os-release, sshd, syslogd, utx,
virecover]
'148': [cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog, os-release,
sshd, syslogd, utx, virecover]
'149': [cleanvar, cleartmp, cron, ip6addrctl, motd, netif, newsyslog, os-release,
sshd, syslogd, utx, virecover]
PLAY RECAP *************************************************************************************
iocage_02: 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
remote_user: admin
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. Display sshd status.¶
(env) > ansible-playbook pb-test-04.yml -i iocage-hosts.ini -l iocage_02
PLAY [Test module vbotka.freebsd.service. Set dictionary jid_service_status.] ******************
TASK [Get iocage list of jails] ****************************************************************
ok: [iocage_02]
TASK [Jails sshd status] ***********************************************************************
ok: [iocage_02] => (item=149)
ok: [iocage_02] => (item=148)
ok: [iocage_02] => (item=147)
TASK [ansible.builtin.debug] *******************************************************************
skipping: [iocage_02]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
jid_service_status | to_nice_yaml: |-
'147': running
'148': running
'149': running
PLAY RECAP *************************************************************************************
iocage_02: 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
remote_user: admin
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. Display sshd commands synopsis.¶
(env) > ansible-playbook pb-test-05.yml -i iocage-hosts.ini -l iocage_02
PLAY [Test module vbotka.freebsd.service. Get script commands synopsis.] ***********************
TASK [Get iocage list of jails] ****************************************************************
ok: [iocage_02]
TASK [Jails sshd commands synopsis] ************************************************************
ok: [iocage_02]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_02] =>
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_02] =>
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_02: 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: 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. Display sendmail rcvars.¶
shell> ansible-playbook pb-test-06.yml -i hosts
PLAY [Test module vbotka.freebsd.service. Get running jails sendmail rcvar(s).] ***************
TASK [Get sshd rcvar(s).] *********************************************************************
changed: [test_111]
changed: [afa9e515]
changed: [c1670497]
TASK [ansible.builtin.debug] ******************************************************************
ok: [afa9e515] =>
out.rcvar:
sendmail_enable: '"NO"'
sendmail_msp_queue_enable: '"NO"'
ok: [test_111] =>
out.rcvar:
sendmail_enable: '"NO"'
sendmail_msp_queue_enable: '"NO"'
ok: [c1670497] =>
out.rcvar:
sendmail_enable: '"NO"'
sendmail_msp_queue_enable: '"NO"'
PLAY RECAP ************************************************************************************
afa9e515: ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
c1670497: ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test_111: 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 apcupsd.
hosts: iocage_03
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
start_cmd: "{{ rcvar.rcvar.apcupsd_enable | bool | ternary('start', 'onestart') }}"
tasks:
- name: Get apcupsd rcvar.
register: rcvar
vbotka.freebsd.service:
script: apcupsd
command: rcvar
- ansible.builtin.debug:
msg: |
rcvar.rcvar: {{ rcvar.rcvar }}
start_cmd: {{ start_cmd }}
# 500ms is enough to complete 'service apcupsd (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 apcupsd. By default wait 500ms to complete the command.
register: out
vbotka.freebsd.service:
script: apcupsd
command: "{{ start_cmd }}"
- ansible.builtin.debug:
var: out
- name: Get apcupsd status.
register: out
vbotka.freebsd.service:
script: apcupsd
command: status
- ansible.builtin.debug:
var: out
- name: Stop apcupsd. By default wait 500ms to complete the command.
register: out
vbotka.freebsd.service:
script: apcupsd
command: stop
- ansible.builtin.debug:
var: out
# 200ms is not enough to complete 'service apcupsd (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 apcupsd is started. See the next status.
- name: Start apcupsd. Wait 200ms to complete the command.
register: out
vbotka.freebsd.service:
script: apcupsd
command: "{{ start_cmd }}"
wait: 0.2
- ansible.builtin.debug:
var: out
- name: Get apcupsd status.
register: out
vbotka.freebsd.service:
script: apcupsd
command: status
- ansible.builtin.debug:
var: out
Playbook output. Start apcupsd.¶
(env) > ansible-playbook pb-test-07.yml -i iocage-hosts.ini
PLAY [Test module vbotka.freebsd.service. Start apcupsd.] **************************************
TASK [Get apcupsd rcvar.] **********************************************************************
ok: [iocage_03]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_03] =>
msg: |-
rcvar.rcvar: {'apcupsd_enable': '"NO"'}
start_cmd: onestart
TASK [Start apcupsd. By default wait 500ms to complete the command.] ***************************
changed: [iocage_03]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_03] =>
out:
changed: true
failed: false
onestart: Starting apcupsd.
rc: 0
state:
post: |-
apcupsd is running as pid 6203.
pre: |-
apcupsd is not running.
stderr: ''
stderr_lines: []
stdout: |-
Starting apcupsd.
stdout_lines:
- Starting apcupsd.
TASK [Get apcupsd status.] *********************************************************************
ok: [iocage_03]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_03] =>
out:
changed: false
failed: false
rc: 0
status: running
stderr: ''
stderr_lines: []
stdout: |-
apcupsd is running as pid 6203.
stdout_lines:
- apcupsd is running as pid 6203.
TASK [Stop apcupsd. By default wait 500ms to complete the command.] ****************************
changed: [iocage_03]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_03] =>
out:
changed: true
failed: false
rc: 0
state:
post: |-
apcupsd is not running.
pre: |-
apcupsd is running as pid 6203.
stderr: ''
stderr_lines: []
stdout: |-
Stopping apcupsd.
Waiting for PIDS: 6203.
stdout_lines:
- Stopping apcupsd.
- 'Waiting for PIDS: 6203.'
stop: 'Waiting for PIDS: 6203'
TASK [Start apcupsd. Wait 200ms to complete the command.] **************************************
ok: [iocage_03]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_03] =>
out:
changed: false
failed: false
onestart: Starting apcupsd.
rc: 0
stderr: ''
stderr_lines: []
stdout: |-
Starting apcupsd.
stdout_lines:
- Starting apcupsd.
TASK [Get apcupsd status.] *********************************************************************
ok: [iocage_03]
TASK [ansible.builtin.debug] *******************************************************************
ok: [iocage_03] =>
out:
changed: false
failed: false
rc: 0
status: running
stderr: ''
stderr_lines: []
stdout: |-
apcupsd is running as pid 6277.
stdout_lines:
- apcupsd is running as pid 6277.
PLAY RECAP *************************************************************************************
iocage_03: ok=12 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0