528 Log server and clients (ansible-conf-roles)
Use case
Use the iocage template ansible-init created in
524 iocage template ansible-init. Configure the repository ansible-conf-init to pull the
jails’ configuration from the repository ansible-conf-roles. Create jails
from the template. Put the configuration files for the class log-server and
log-client into the jails’ directories /root/ansible-vars. Run
ansible-pull asynchronously.
Tree
shell > tree .
.
├── ansible.cfg
├── files
│ ├── ai-conf-roles.yml
│ ├── ai-db-class.yml
│ ├── log-client
│ │ ├── syslog-ng-client-pkg.yml
│ │ └── syslog-ng-client.yml
│ ├── log-server
│ │ ├── syslog-ng-server-pkg.yml
│ │ └── syslog-ng-server.yml
│ └── pkg-repo.yml
├── group_vars
│ └── all
│ ├── project-hosts.yml
│ └── project.yml
├── hosts
│ └── 06_iocage2.yml
├── iocage.ini
├── pb-logclient-test.yml
├── pb-logserver-test.yml
└── templates
└── project-hosts.yml.j2
Synopsis
At a managed node:
In the playbook vbotka.freebsd.pb_iocage_project_create_from_templates.yml create jails from the template
ansible-init.Configure the jails to use the
pkg-repocreated in 527 iocage template ansible-pkg-repo.Wait for
ansible-pullto configure the jails and display the logs.
Requirements
template
ansible-initcreated in 524 iocage template ansible-initplaybook vbotka.freebsd.pb_iocage_project_create_from_templates.yml
Note
Neither the inventory nor the connection plugin is required to create the project. The inventory plugin is used to list the jails and create groups for the test playbooks. The configuration also serves as an example of the connection plugin.
See also
The option
firstboot_sentinelin man rc.confThe examples:
The
Troubleshootingsection in 526 Log server and clients (ansible_init)GitHub repositories:
ansible.cfg
[defaults]
callback_result_format = yaml
deprecation_warnings = false
display_skipped_hosts = false
gathering = explicit
interpreter_python = auto_silent
log_path = /var/log/ansible.log
[connection]
pipelining = true
Inventory iocage.ini
iocage_06
[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
inventory_hostname_tag: alias
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'"
# ansible options
ansible_python_interpreter: "'auto_silent'"
groups:
log_servers: iocage_classes is contains('log-server')
log_clients: iocage_classes is contains('log-client')
keyed_groups:
- prefix: state
key: iocage_state
- prefix: vmm
key: iocage_tags.vmm
group_vars
project_hosts:
iocage_06:
defaultrouter: 172.16.99.1
log_server: 172.16.99.10
repos: 172.16.99.21
repos_devel: 172.16.99.22
pkg_repo: 172.16.99.23
project:
log-server-01:
notes: alias=log_server_01
vmm: iocage_06
template: ansible-init
class: [log-server]
custom_facts: class.fact.j2
properties:
defaultrouter: "{{ project_hosts[inventory_hostname]['defaultrouter'] }}"
ip4_addr: "vnet0|{{ project_hosts[inventory_hostname]['log_server'] }}/24"
vnet: 1
boot: 1
ai_vars:
- ai-db-class.yml
- ai-conf-roles.yml
- pkg-repo.yml
ai_vars_templates:
- project-hosts.yml
www-01:
notes: alias=www_01
vmm: iocage_06
template: ansible-init
class: [log-client]
custom_facts: class.fact.j2
properties:
bpf: 1
dhcp: 1
vnet: 1
boot: 1
ai_vars:
- ai-db-class.yml
- ai-conf-roles.yml
- pkg-repo.yml
ai_vars_templates:
- project-hosts.yml
www-02:
notes: alias=www_02
vmm: iocage_06
template: ansible-init
class: [log-client]
custom_facts: class.fact.j2
properties:
bpf: 1
dhcp: 1
vnet: 1
boot: 1
ai_vars:
- ai-db-class.yml
- ai-conf-roles.yml
- pkg-repo.yml
ai_vars_templates:
- project-hosts.yml
vmm_groups: "{{ dict(project | dict2items | groupby('value.vmm')) }}"
vmm: "{{ dict(vmm_groups.keys() | zip(vmm_groups.values() | map('items2dict'))) }}"
templates
project_hosts:
{{ project_hosts[inventory_hostname] }}
files
ai_db_class:
log-server:
repo_host: "git://{{ project_hosts.repos }}"
repo: ansible-conf-roles
repo_dest: /root
repo_playbook: pb-roles.yml
log-client:
repo_host: "git://{{ project_hosts.repos }}"
repo: ansible-conf-roles
repo_dest: /root
repo_playbook: pb-roles.yml
Note
The playbook pb-init.yml (from the ansible-conf-init repository) reads
this file from /root/ansible-vars using the
ansible.builtin.include_vars module (precedence 18.). The ai_db_class
dictionary overrides the values defined in the repository’s
host_vars. See Understanding variable precedence.
ai_conf_roles:
vbotka.freebsd.packages: [conf, pkg-install]
vbotka.freebsd.postinstall: [syslogd, syslog-ng]
Note
The playbook pb-roles.yml (from the ansible-conf-roles repository)
reads this file from /root/ansible-vars. The repository does not provide
a default ai_conf_roles dictionary.
pkg_repos_conf_clean: true
pkg_repos_conf:
- name: pkg-repo
conf:
- {key: 'url', value: '"http://{{ project_hosts.pkg_repo }}"'}
- {key: 'enabled', value: 'yes'}
- {key: 'signature_type', value: '"none"'}
Note
To install packages, the jails use the pkg-repo created in 527 iocage template ansible-pkg-repo.
Important
This configuration is minimal and functional for an isolated lab or trusted internal LAN, but it poses several security risks in production or shared network environments.
pkg_pkgsite: pkg-repo
pkg_cached: true
pkg_list:
- syslog-ng
fp_syslogd: true
fp_syslogd_enable: false
fp_syslogd_conf_sanity: false
fp_syslogng: true
fp_syslogng_enable: true
fp_syslogng_conf_template: syslog-ng.conf.j2
fp_syslogng_conf:
header:
- '@version:4.8'
- '@include "scl.conf"'
options:
- threaded(yes)
- group("wheel")
- perm(0640)
source:
s_system:
- unix-dgram("/var/run/log")
- unix-dgram("/var/run/logpriv" perm(0600))
- internal()
s_ansible:
- file("/var/log/ansible.log" follow-freq(1) program-override("ansible"))
destination:
d_network:
- network("{{ project_hosts.log_server }}" port(514) transport("tcp"))
filter:
f_messages:
- level(info..emerg) and not facility(auth, authpriv, lpr, mail, news, daemon)
f_daemon:
- facility(daemon)
log:
- source: s_system
filter: f_daemon
destination: d_network
- source: s_system
filter: f_messages
destination: d_network
- source: s_ansible
destination: d_network
pkg_pkgsite: pkg-repo
pkg_cached: true
pkg_list:
- lnav
- syslog-ng
fp_syslogd: true
fp_syslogd_enable: false
fp_syslogd_conf_sanity: false
fp_syslogng: true
fp_syslogng_enable: true
fp_syslogng_conf_template: syslog-ng.conf.j2
fp_syslogng_conf:
header:
- '@version:4.8'
- '@include "scl.conf"'
options:
- threaded(yes)
- group("wheel")
- perm(0640)
source:
s_system:
- unix-dgram("/var/run/log")
- unix-dgram("/var/run/logpriv" perm(0600))
- internal()
s_ansible:
- file("/var/log/ansible.log" follow-freq(1) program-override("ansible"))
s_remote:
- tcp(port(514))
destination:
d_local:
- file("/var/log/remote/${HOST}/${YEAR}_${MONTH}_${DAY}.log" create-dirs(yes))
filter:
f_messages:
- level(notice..emerg) and not facility(auth, authpriv, lpr, mail, news, daemon)
f_daemon:
- facility(daemon)
log:
- source: s_remote
destination: d_local
- source: s_system
filter: f_daemon
destination: d_local
- source: s_system
filter: f_messages
destination: d_local
- source: s_ansible
destination: d_local
Playbook output - Create project jails from iocage templates
(env) > ansible-playbook -i iocage.ini -i hosts vbotka.freebsd.pb_iocage_project_create_from_templates.yml
PLAY [Create and start project jails from iocage templates.] *******************
TASK [Setup: Get activated pool.] **********************************************
ok: [iocage_06]
TASK [Create: Create jails.] ***************************************************
ok: [iocage_06] => (item=log-server-01)
ok: [iocage_06] => (item=www-01)
ok: [iocage_06] => (item=www-02)
TASK [Facts: Create custom facts dirs.] ****************************************
changed: [iocage_06] => (item=log-server-01)
changed: [iocage_06] => (item=www-01)
changed: [iocage_06] => (item=www-02)
TASK [Facts: Create custom facts files.] ***************************************
changed: [iocage_06] => (item=log-server-01)
changed: [iocage_06] => (item=www-01)
changed: [iocage_06] => (item=www-02)
TASK [Ai-vars: Create ansible init vars dirs.] *********************************
changed: [iocage_06] => (item=log-server-01)
changed: [iocage_06] => (item=www-01)
changed: [iocage_06] => (item=www-02)
TASK [Ai-vars: Create ansible init vars.] **************************************
changed: [iocage_06] => (item=log-server-01 ai-db-class.yml)
changed: [iocage_06] => (item=log-server-01 ai-conf-roles.yml)
changed: [iocage_06] => (item=log-server-01 pkg-repo.yml)
changed: [iocage_06] => (item=www-01 ai-db-class.yml)
changed: [iocage_06] => (item=www-01 ai-conf-roles.yml)
changed: [iocage_06] => (item=www-01 pkg-repo.yml)
changed: [iocage_06] => (item=www-02 ai-db-class.yml)
changed: [iocage_06] => (item=www-02 ai-conf-roles.yml)
changed: [iocage_06] => (item=www-02 pkg-repo.yml)
TASK [Ai-vars-templates: Create ansible init vars dirs.] ***********************
ok: [iocage_06] => (item=log-server-01)
ok: [iocage_06] => (item=www-01)
ok: [iocage_06] => (item=www-02)
TASK [Ai-vars-templates: Create ansible init vars from templates.] *************
changed: [iocage_06] => (item=log-server-01 project-hosts.yml)
changed: [iocage_06] => (item=www-01 project-hosts.yml)
changed: [iocage_06] => (item=www-02 project-hosts.yml)
TASK [Ai-vars-class: Create ansible init vars dirs.] ***************************
ok: [iocage_06] => (item=log-server-01)
ok: [iocage_06] => (item=www-01)
ok: [iocage_06] => (item=www-02)
TASK [Ai-vars-class: Create ansible init vars for class.] **********************
changed: [iocage_06] => (item=log-server-01 log-server)
changed: [iocage_06] => (item=www-01 log-client)
changed: [iocage_06] => (item=www-02 log-client)
TASK [Ai-vars-jail: Create ansible init vars dirs.] ****************************
changed: [iocage_06] => (item=log-server-01)
changed: [iocage_06] => (item=www-01)
changed: [iocage_06] => (item=www-02)
TASK [Properties: Set properties.] *********************************************
ok: [iocage_06] => (item=log-server-01)
ok: [iocage_06] => (item=www-01)
ok: [iocage_06] => (item=www-02)
TASK [Start: Start jails.] *****************************************************
ok: [iocage_06]
PLAY RECAP *********************************************************************
iocage_06 : ok=13 changed=7 unreachable=0 failed=0 skipped=16 rescued=0 ignored=0
Inventory graph
shell > ansible-inventory -i hosts --graph
@all:
|--@ungrouped:
|--@state_up:
| |--foo
| |--baz
| |--bar
| |--repos
| |--qux
| |--test_153
| |--repos_devel
| |--pkg_repo
| |--log_server_01
| |--www_02
| |--test_152
| |--www_01
| |--test_151
|--@vmm_iocage_06:
| |--foo
| |--baz
| |--bar
| |--repos
| |--qux
| |--test_153
| |--db1
| |--repos_devel
| |--db2
| |--pkg_repo
| |--log_server_01
| |--www_02
| |--test_152
| |--www_01
| |--test_151
|--@state_down:
| |--db1
| |--db2
|--@log_servers:
| |--log_server_01
|--@log_clients:
| |--www_02
| |--www_01
List jails
shell > ssh admin@iocage_06 sudo 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 |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 37 | bar | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.143 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 38 | baz | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.141 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 36 | foo | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.138 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 45 | log-server-01 | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.10/24 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 44 | pkg-repo | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.23/24 | - | ansible-pkg-repo | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 39 | qux | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.144 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 34 | repos | on | up | jail | 15.1-RELEASE-p1 | vnet0|172.16.99.21/24 | - | ansible-repos | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 35 | 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 |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 46 | www-01 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.116 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 47 | www-02 | on | up | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.147 | - | ansible-init | no |
+------+---------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
Playbook pb-logserver-test.yml
---
- name: Test Log Server.
hosts: log_servers
tasks:
- name: Run commands.
register: out
ansible.builtin.shell: "{{ item }}"
loop:
- rm -rf /var/log/remote/localhost/*
- service syslog-ng status
- loggen -i -S -n 1 localhost 514
- sleep 2; find /var/log/remote/localhost/ -name *.log | xargs cat
- name: Debug.
when: debug | d(false) | bool
ansible.builtin.debug:
msg: |
{% for i in out.results %}
shell> {{ i.item }}
{% if i.stdout | length > 0 %}
{{ i.stdout }}
{% endif %}
{% if i.stderr | length > 0 %}
{{ i.stderr }}
{% endif %}
{% endfor %}
Playbook output - Test Log Server
(env) > ansible-playbook -i hosts -e debug=true pb-logserver-test.yml
PLAY [Test Log Server.] ********************************************************
TASK [Run commands.] ***********************************************************
changed: [log_server_01] => (item=rm -rf /var/log/remote/localhost/*)
changed: [log_server_01] => (item=service syslog-ng status)
changed: [log_server_01] => (item=loggen -i -S -n 1 localhost 514)
changed: [log_server_01] => (item=sleep 2; find /var/log/remote/localhost/ -name *.log | xargs cat)
TASK [Debug.] ******************************************************************
ok: [log_server_01] =>
msg: |-
shell> rm -rf /var/log/remote/localhost/*
shell> service syslog-ng status
syslog_ng is running as pid 93581.
shell> loggen -i -S -n 1 localhost 514
count=1, rate = 500000.00 msg/sec
average rate = 2.00 msg/sec, count=1, time=0.500131, (average) msg size=256, bandwidth=0.50 kB/sec
shell> sleep 2; find /var/log/remote/localhost/ -name *.log | xargs cat
Aug 27 12:16:37 localhost prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1787825797, stamp: 2026-08-27T12:16:37 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD
PLAY RECAP *********************************************************************
log_server_01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook pb-logclient-test.yml
---
- name: Test Log Clients.
hosts: log_clients
vars:
log_server: "{{ hostvars['log_server_01']['iocage_ip4'] }}"
tasks:
- name: Run loggen
register: out
ansible.builtin.command: "loggen -i -S -n 1 {{ log_server }} 514"
- name: Debug.
ansible.builtin.debug:
var: out.stderr
- name: Display the logs.
hosts: log_servers
tasks:
- name: Get log files paths.
register: out
ansible.builtin.find:
paths: /var/log/remote
recurse: true
patterns: '*.log'
- name: Get log files.
register: out
ansible.builtin.command: "cat {{ item }}"
loop: "{{ out.files | map(attribute='path') }}"
- name: Display log files.
ansible.builtin.debug:
msg: |
{{ item.stdout }}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
loop: "{{ out.results }}"
loop_control:
label: "{{ item.cmd }}"
Playbook output - Test Log Clients
(env) > ansible-playbook -i hosts pb-logclient-test.yml
PLAY [Test Log Clients.] *******************************************************
TASK [Run loggen] **************************************************************
changed: [www_01]
changed: [www_02]
TASK [Debug.] ******************************************************************
ok: [www_02] =>
out.stderr: |-
count=1, rate = 500000.00 msg/sec
average rate = 2.00 msg/sec, count=1, time=0.50029, (average) msg size=256, bandwidth=0.50 kB/sec
ok: [www_01] =>
out.stderr: |-
count=1, rate = 71428.57 msg/sec
average rate = 2.00 msg/sec, count=1, time=0.500225, (average) msg size=256, bandwidth=0.50 kB/sec
PLAY [Display the logs.] *******************************************************
TASK [Get log files paths.] ****************************************************
ok: [log_server_01]
TASK [Get log files.] **********************************************************
changed: [log_server_01] => (item=/var/log/remote/ip-172-16-99-116/2026_08_27.log)
changed: [log_server_01] => (item=/var/log/remote/ip-172-16-99-147/2026_08_27.log)
changed: [log_server_01] => (item=/var/log/remote/localhost/2026_08_27.log)
TASK [Display log files.] ******************************************************
ok: [log_server_01] => (item=['cat', '/var/log/remote/ip-172-16-99-116/2026_08_27.log']) =>
msg: |-
Aug 27 12:10:34 ip-172-16-99-116 syslog-ng[93077]: syslog-ng starting up; version='4.12.0'
Aug 27 12:10:34 ip-172-16-99-116 syslog-ng[93077]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
Aug 27 12:10:35 ip-172-16-99-116 1 2026-08-27T12:10:35.289417+02:00 www-01 ansible-vbotka.freebsd.service 93194 - - Invoked with command=reload script=syslog-ng list_enabled=False synopsis=False wait=0.5 env=None jail=None
Aug 27 12:09:04 ip-172-16-99-116 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-01
Aug 27 12:09:04 ip-172-16-99-116 ansible: n=ansible INFO| PLAY [ansible-init] ************************************************************
Aug 27 12:09:05 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Get hostname.] ***********************************************************
Aug 27 12:09:05 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Get custom facts.] *******************************************************
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Include variables from ai_vars directory.] *******************************
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client.yml)
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/pkg-repo.yml)
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/project-hosts.yml)
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-db-class.yml)
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-conf-roles.yml)
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client-pkg.yml)
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
Aug 27 12:10:35 ip-172-16-99-116 ansible: |-
Aug 27 12:10:35 ip-172-16-99-116 ansible: true
Aug 27 12:10:35 ip-172-16-99-116 ansible: /root/ansible-vars
Aug 27 12:10:35 ip-172-16-99-116 ansible: www-01
Aug 27 12:10:35 ip-172-16-99-116 ansible: ['log-client']
Aug 27 12:10:35 ip-172-16-99-116 ansible: {'defaultrouter': '172.16.99.1', 'log_server': '172.16.99.10', 'repos': '172.16.99.21', 'repos_devel': '172.16.99.22', 'pkg_repo': '172.16.99.23'}
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Set ai_cmd] **************************************************************
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Execute ai_cmd] **********************************************************
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| included: /root/ansible-conf-init/tasks/execute-cmd.yml for localhost.my.domain
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
Aug 27 12:09:06 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
Aug 27 12:10:35 ip-172-16-99-116 ansible: |-
Aug 27 12:10:35 ip-172-16-99-116 ansible:
Aug 27 12:10:35 ip-172-16-99-116 ansible: True
Aug 27 12:10:35 ip-172-16-99-116 ansible: ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-roles -d /root/ansible-conf-roles -e "ai_vars=/root/ansible-vars" -e "ai_pull_mode=true" pb-roles.yml && echo '[INFO] ansible-pull finished.'
Aug 27 12:09:07 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Execute command async=3600 poll=0] ***************************************
Aug 27 12:09:07 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:09:07 ip-172-16-99-116 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
Aug 27 12:09:07 ip-172-16-99-116 ansible: n=ansible INFO| localhost.my.domain : ok=8 changed=1 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
Aug 27 12:09:07 ip-172-16-99-116 ansible: n=ansible INFO| Starting Ansible Pull at 2026-08-27 12:09:07
Aug 27 12:09:07 ip-172-16-99-116 ansible: n=ansible INFO| /usr/local/bin/ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-roles -d /root/ansible-conf-roles -e ai_vars=/root/ansible-vars -e ai_pull_mode=true pb-roles.yml
Aug 27 12:09:08 ip-172-16-99-116 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-01
Aug 27 12:09:10 ip-172-16-99-116 ansible: n=ansible INFO| localhost.my.domain | CHANGED => {
Aug 27 12:10:35 ip-172-16-99-116 ansible: "90c5906a366cba3907eb615e1b8fad119793a6f1",
Aug 27 12:10:35 ip-172-16-99-116 ansible: {
Aug 27 12:10:35 ip-172-16-99-116 ansible: "/usr/local/bin/python3.12"
Aug 27 12:10:35 ip-172-16-99-116 ansible:
Aug 27 12:10:35 ip-172-16-99-116 ansible: null,
Aug 27 12:10:35 ip-172-16-99-116 ansible: true
Aug 27 12:10:35 ip-172-16-99-116 ansible:
Aug 27 12:09:11 ip-172-16-99-116 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-01
Aug 27 12:09:11 ip-172-16-99-116 ansible: n=ansible INFO| PLAY [Use Ansible roles.] ******************************************************
Aug 27 12:09:11 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Include variables from ai_vars directory.] *******************************
Aug 27 12:09:11 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client.yml)
Aug 27 12:09:11 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/pkg-repo.yml)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/project-hosts.yml)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-db-class.yml)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-conf-roles.yml)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client-pkg.yml)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
Aug 27 12:10:35 ip-172-16-99-116 ansible: |-
Aug 27 12:10:35 ip-172-16-99-116 ansible: true
Aug 27 12:10:35 ip-172-16-99-116 ansible: /root/ansible-vars
Aug 27 12:10:35 ip-172-16-99-116 ansible: {'vbotka.freebsd.packages': ['conf', 'pkg-install'], 'vbotka.freebsd.postinstall': ['syslogd', 'syslog-ng']}
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| TASK [Include roles.] **********************************************************
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| included: vbotka.freebsd.packages for localhost.my.domain => (item=vbotka.freebsd.packages: conf)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| included: vbotka.freebsd.packages for localhost.my.domain => (item=vbotka.freebsd.packages: pkg-install)
Aug 27 12:09:12 ip-172-16-99-116 ansible: n=ansible INFO| included: vbotka.freebsd.postinstall for localhost.my.domain => (item=vbotka.freebsd.postinstall: syslogd)
Aug 27 12:09:13 ip-172-16-99-116 ansible: n=ansible INFO| included: vbotka.freebsd.postinstall for localhost.my.domain => (item=vbotka.freebsd.postinstall: syslog-ng)
Aug 27 12:09:14 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Conf: Create directories] **********************
Aug 27 12:09:14 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain] => (item=/usr/local/etc/pkg)
Aug 27 12:09:14 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain] => (item=/usr/local/etc/pkg/repos)
Aug 27 12:09:15 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Conf: Configure /usr/local/etc/pkg/repos] ******
Aug 27 12:09:15 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain] => (item=pkg-repo)
Aug 27 12:09:16 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Conf: Find repos] ******************************
Aug 27 12:09:16 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:29 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Packages_install: Install list pkg_list] *******
Aug 27 12:10:29 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:31 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslogd_enable in /etc/rc.conf] ***
Aug 27 12:10:31 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:31 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Sanity fp_syslogng_conf is empty.] ***
Aug 27 12:10:31 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:32 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Configure /usr/local/etc/syslog-ng.conf] ***
Aug 27 12:10:32 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:33 ip-172-16-99-116 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslog_ng_enable in /etc/rc.conf] ***
Aug 27 12:10:33 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:34 ip-172-16-99-116 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Start syslog-ng] *****************
Aug 27 12:10:34 ip-172-16-99-116 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:36 ip-172-16-99-116 syslog-ng[93077]: Loading the new configuration;
Aug 27 12:10:36 ip-172-16-99-116 syslog-ng[93077]: Configuration reload finished;
Aug 27 12:10:36 ip-172-16-99-116 syslog-ng[93077]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
Aug 27 12:10:37 ip-172-16-99-116 1 2026-08-27T12:10:37.339007+02:00 www-01 ansible-vbotka.freebsd.service 93378 - - Invoked with command=stop script=syslogd list_enabled=False synopsis=False wait=0.5 env=None jail=None
Aug 27 12:10:36 ip-172-16-99-116 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Reload syslog-ng] ****************
Aug 27 12:10:36 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:38 ip-172-16-99-116 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Stop syslogd] ********************
Aug 27 12:10:38 ip-172-16-99-116 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:38 ip-172-16-99-116 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
Aug 27 12:10:38 ip-172-16-99-116 ansible: n=ansible INFO| localhost.my.domain : ok=17 changed=7 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0
Aug 27 12:10:39 ip-172-16-99-116 1 2026-08-27T12:10:39.256827+02:00 www-01 ansible-async_wrapper.py 89486 - - Module complete (89486)
Aug 27 12:11:36 ip-172-16-99-116 syslog-ng[93077]: Syslog connection established; fd='5', server='AF_INET(172.16.99.10:514)', local='AF_INET(0.0.0.0:0)'
Aug 27 12:13:59 ip-172-16-99-116 1 2026-08-27T12:13:59.648741+02:00 www-01 dhclient 89067 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
Aug 27 12:13:59 ip-172-16-99-116 1 2026-08-27T12:13:59.649306+02:00 www-01 dhclient 89067 - - DHCPACK from 172.16.99.1
Aug 27 12:13:59 ip-172-16-99-116 1 2026-08-27T12:13:59.663303+02:00 www-01 dhclient 89067 - - bound to 172.16.99.116 -- renewal in 300 seconds.
Aug 27 12:16:49 ip-172-16-99-116 1 2026-08-27T12:16:49.351329+02:00 www-01 ansible-ansible.legacy.command 94277 - - Invoked with _raw_params=loggen -i -S -n 1 172.16.99.10 514 _uses_shell=False expand_argument_vars=True stdin_add_newline=True strip_empty_ends=True cmd=None argv=None chdir=None executable=None creates=None removes=None stdin=None
Aug 27 12:16:49 ip-172-16-99-116 prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1787825809, stamp: 2026-08-27T12:16:49 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ok: [log_server_01] => (item=['cat', '/var/log/remote/ip-172-16-99-147/2026_08_27.log']) =>
msg: |-
Aug 27 12:10:32 ip-172-16-99-147 syslog-ng[92718]: syslog-ng starting up; version='4.12.0'
Aug 27 12:10:32 ip-172-16-99-147 syslog-ng[92718]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
Aug 27 12:10:33 ip-172-16-99-147 1 2026-08-27T12:10:33.528137+02:00 www-02 ansible-vbotka.freebsd.service 92766 - - Invoked with command=reload script=syslog-ng list_enabled=False synopsis=False wait=0.5 env=None jail=None
Aug 27 12:09:15 ip-172-16-99-147 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-02
Aug 27 12:09:15 ip-172-16-99-147 ansible: n=ansible INFO| PLAY [ansible-init] ************************************************************
Aug 27 12:09:16 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Get hostname.] ***********************************************************
Aug 27 12:09:16 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Get custom facts.] *******************************************************
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Include variables from ai_vars directory.] *******************************
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client.yml)
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client-pkg.yml)
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/project-hosts.yml)
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/pkg-repo.yml)
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-conf-roles.yml)
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-db-class.yml)
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
Aug 27 12:10:33 ip-172-16-99-147 ansible: |-
Aug 27 12:10:33 ip-172-16-99-147 ansible: true
Aug 27 12:10:33 ip-172-16-99-147 ansible: /root/ansible-vars
Aug 27 12:10:33 ip-172-16-99-147 ansible: www-02
Aug 27 12:10:33 ip-172-16-99-147 ansible: ['log-client']
Aug 27 12:10:33 ip-172-16-99-147 ansible: {'defaultrouter': '172.16.99.1', 'log_server': '172.16.99.10', 'repos': '172.16.99.21', 'repos_devel': '172.16.99.22', 'pkg_repo': '172.16.99.23'}
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Set ai_cmd] **************************************************************
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Execute ai_cmd] **********************************************************
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| included: /root/ansible-conf-init/tasks/execute-cmd.yml for localhost.my.domain
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
Aug 27 12:09:17 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
Aug 27 12:10:33 ip-172-16-99-147 ansible: |-
Aug 27 12:10:33 ip-172-16-99-147 ansible:
Aug 27 12:10:33 ip-172-16-99-147 ansible: True
Aug 27 12:10:33 ip-172-16-99-147 ansible: ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-roles -d /root/ansible-conf-roles -e "ai_vars=/root/ansible-vars" -e "ai_pull_mode=true" pb-roles.yml && echo '[INFO] ansible-pull finished.'
Aug 27 12:09:18 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Execute command async=3600 poll=0] ***************************************
Aug 27 12:09:18 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:09:18 ip-172-16-99-147 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
Aug 27 12:09:18 ip-172-16-99-147 ansible: n=ansible INFO| localhost.my.domain : ok=8 changed=1 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
Aug 27 12:09:19 ip-172-16-99-147 ansible: n=ansible INFO| Starting Ansible Pull at 2026-08-27 12:09:19
Aug 27 12:09:19 ip-172-16-99-147 ansible: n=ansible INFO| /usr/local/bin/ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-roles -d /root/ansible-conf-roles -e ai_vars=/root/ansible-vars -e ai_pull_mode=true pb-roles.yml
Aug 27 12:09:20 ip-172-16-99-147 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-02
Aug 27 12:09:21 ip-172-16-99-147 ansible: n=ansible INFO| localhost.my.domain | CHANGED => {
Aug 27 12:10:33 ip-172-16-99-147 ansible: "90c5906a366cba3907eb615e1b8fad119793a6f1",
Aug 27 12:10:33 ip-172-16-99-147 ansible: {
Aug 27 12:10:33 ip-172-16-99-147 ansible: "/usr/local/bin/python3.12"
Aug 27 12:10:33 ip-172-16-99-147 ansible:
Aug 27 12:10:33 ip-172-16-99-147 ansible: null,
Aug 27 12:10:33 ip-172-16-99-147 ansible: true
Aug 27 12:10:33 ip-172-16-99-147 ansible:
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-02
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| PLAY [Use Ansible roles.] ******************************************************
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Include variables from ai_vars directory.] *******************************
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client.yml)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/syslog-ng-client-pkg.yml)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/project-hosts.yml)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/pkg-repo.yml)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-conf-roles.yml)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] => (item=/root/ansible-vars/ai-db-class.yml)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
Aug 27 12:10:33 ip-172-16-99-147 ansible: |-
Aug 27 12:10:33 ip-172-16-99-147 ansible: true
Aug 27 12:10:33 ip-172-16-99-147 ansible: /root/ansible-vars
Aug 27 12:10:33 ip-172-16-99-147 ansible: {'vbotka.freebsd.packages': ['conf', 'pkg-install'], 'vbotka.freebsd.postinstall': ['syslogd', 'syslog-ng']}
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| TASK [Include roles.] **********************************************************
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| included: vbotka.freebsd.packages for localhost.my.domain => (item=vbotka.freebsd.packages: conf)
Aug 27 12:09:23 ip-172-16-99-147 ansible: n=ansible INFO| included: vbotka.freebsd.packages for localhost.my.domain => (item=vbotka.freebsd.packages: pkg-install)
Aug 27 12:09:24 ip-172-16-99-147 ansible: n=ansible INFO| included: vbotka.freebsd.postinstall for localhost.my.domain => (item=vbotka.freebsd.postinstall: syslogd)
Aug 27 12:09:24 ip-172-16-99-147 ansible: n=ansible INFO| included: vbotka.freebsd.postinstall for localhost.my.domain => (item=vbotka.freebsd.postinstall: syslog-ng)
Aug 27 12:09:25 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Conf: Create directories] **********************
Aug 27 12:09:25 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain] => (item=/usr/local/etc/pkg)
Aug 27 12:09:25 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain] => (item=/usr/local/etc/pkg/repos)
Aug 27 12:09:27 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Conf: Configure /usr/local/etc/pkg/repos] ******
Aug 27 12:09:27 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain] => (item=pkg-repo)
Aug 27 12:09:27 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Conf: Find repos] ******************************
Aug 27 12:09:27 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:26 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.packages : Packages_install: Install list pkg_list] *******
Aug 27 12:10:26 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:28 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslogd_enable in /etc/rc.conf] ***
Aug 27 12:10:28 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:28 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Sanity fp_syslogng_conf is empty.] ***
Aug 27 12:10:28 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:29 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Configure /usr/local/etc/syslog-ng.conf] ***
Aug 27 12:10:29 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:31 ip-172-16-99-147 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslog_ng_enable in /etc/rc.conf] ***
Aug 27 12:10:31 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:33 ip-172-16-99-147 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Start syslog-ng] *****************
Aug 27 12:10:33 ip-172-16-99-147 ansible: n=ansible INFO| changed: [localhost.my.domain]
Aug 27 12:10:33 ip-172-16-99-147 syslog-ng[92718]: Loading the new configuration;
Aug 27 12:10:33 ip-172-16-99-147 syslog-ng[92718]: Configuration reload finished;
Aug 27 12:10:33 ip-172-16-99-147 syslog-ng[92718]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
Aug 27 12:10:34 ip-172-16-99-147 1 2026-08-27T12:10:34.574498+02:00 www-02 ansible-vbotka.freebsd.service 92991 - - Invoked with command=stop script=syslogd list_enabled=False synopsis=False wait=0.5 env=None jail=None
Aug 27 12:10:34 ip-172-16-99-147 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Reload syslog-ng] ****************
Aug 27 12:10:34 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:35 ip-172-16-99-147 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Stop syslogd] ********************
Aug 27 12:10:35 ip-172-16-99-147 ansible: n=ansible INFO| ok: [localhost.my.domain]
Aug 27 12:10:35 ip-172-16-99-147 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
Aug 27 12:10:35 ip-172-16-99-147 ansible: n=ansible INFO| localhost.my.domain : ok=17 changed=7 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0
Aug 27 12:10:36 ip-172-16-99-147 1 2026-08-27T12:10:36.504878+02:00 www-02 ansible-async_wrapper.py 90673 - - Module complete (90673)
Aug 27 12:11:33 ip-172-16-99-147 syslog-ng[92718]: Syslog connection established; fd='5', server='AF_INET(172.16.99.10:514)', local='AF_INET(0.0.0.0:0)'
Aug 27 12:14:09 ip-172-16-99-147 1 2026-08-27T12:14:09.789725+02:00 www-02 dhclient 90178 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
Aug 27 12:14:09 ip-172-16-99-147 1 2026-08-27T12:14:09.790650+02:00 www-02 dhclient 90178 - - DHCPACK from 172.16.99.1
Aug 27 12:14:09 ip-172-16-99-147 1 2026-08-27T12:14:09.803889+02:00 www-02 dhclient 90178 - - bound to 172.16.99.147 -- renewal in 300 seconds.
Aug 27 12:16:49 ip-172-16-99-147 1 2026-08-27T12:16:49.394897+02:00 www-02 ansible-ansible.legacy.command 94279 - - Invoked with _raw_params=loggen -i -S -n 1 172.16.99.10 514 _uses_shell=False expand_argument_vars=True stdin_add_newline=True strip_empty_ends=True cmd=None argv=None chdir=None executable=None creates=None removes=None stdin=None
Aug 27 12:16:49 ip-172-16-99-147 prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1787825809, stamp: 2026-08-27T12:16:49 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ok: [log_server_01] => (item=['cat', '/var/log/remote/localhost/2026_08_27.log']) =>
msg: |-
Aug 27 12:16:37 localhost prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1787825797, stamp: 2026-08-27T12:16:37 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PLAY RECAP *********************************************************************
log_server_01 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
www_01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
www_02 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Hint
Use the lnav utility on the log server to display all logfiles in the the directory
/var/log/remote. Run the following commands on the iocage host:
shell > iocage console log-server
root@log-server:~ # lnav -r /var/log/remote/