526 Log server and clients (ansible_init)

Use case

Use the iocage template ansible_init created in 524 iocage template ansible_init (hostname). Configure the repo ansible-conf-init to pull the jails’ configuration from the repos ansible-conf-syslogng-server and ansible-conf-syslogng-client. Create jails from the template. Use class=log-server and class=log-client to select the configuration. Run ansible-pull asynchronously.

Tree

shell > tree .
.
├── ansible.cfg
├── group_vars
│   └── all
│       ├── hosts.yml
│       └── project.yml
├── hosts
│   └── 05_iocage.yml
├── iocage.ini
├── pb-logclient-test.yml
└── pb-logserver-test.yml

Synopsis

Requirements

Note

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_05

[iocage]
iocage_05

[iocage:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent

hosts

hosts/05_iocage.yml
plugin: vbotka.freebsd.iocage
host: iocage_05
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_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_server: iocage_classes is contains('log-server')
  log_client: iocage_classes is contains('log-client')
  pull_repos: iocage_classes is contains('repos')

keyed_groups:
  - prefix: state
    key: iocage_state
  - prefix: vmm
    key: iocage_tags.vmm

group_vars

group_vars/all/project.yml
project:
  log-server:
    class: [log-server]
    template: ansible_init
    custom_facts: class.fact.j2
    vmm: iocage_05
    properties:
      vnet: 1
      defaultrouter: "{{ project_hosts.defaultrouter }}"
      ip4_addr: 'vnet0|{{ project_hosts.log_server }}/24'
      boot: 1
  www-01:
    class: [log-client]
    template: ansible_init
    custom_facts: class.fact.j2
    vmm: iocage_05
  www-02:
    class: [log-client]
    template: ansible_init
    custom_facts: class.fact.j2
    vmm: iocage_05

properties:
  bpf: 1
  dhcp: 1
  vnet: 1
  boot: 1

vmm_groups: "{{ dict(project | dict2items | groupby('value.vmm')) }}"
vmm: "{{ dict(vmm_groups.keys() | zip(vmm_groups.values() | map('items2dict'))) }}"

Playbook output - Create project jails from iocage templates

(env) > ansible-playbook vbotka.freebsd.pb_iocage_project_create_from_templates.yml -i iocage.ini -i hosts
PLAY [Create and start project jails from iocage templates.] *******************

TASK [Setup: Get activated pool.] **********************************************
ok: [iocage_05]

TASK [Create jails.] ***********************************************************
ok: [iocage_05] => (item=www-02)
ok: [iocage_05] => (item=www-01)
ok: [iocage_05] => (item=log-server)

TASK [Create custom facts dirs.] ***********************************************
changed: [iocage_05] => (item={'key': 'log-server', 'value': {'class': ['log-server'], 'template': 'ansible_init', 'custom_facts': 'class.fact.j2', 'vmm': 'iocage_05', 'properties': {'vnet': 1, 'defaultrouter': '172.16.99.1', 'ip4_addr': 'vnet0|172.16.99.10/24', 'boot': 1}}})
changed: [iocage_05] => (item={'key': 'www-01', 'value': {'class': ['log-client'], 'template': 'ansible_init', 'custom_facts': 'class.fact.j2', 'vmm': 'iocage_05'}})
changed: [iocage_05] => (item={'key': 'www-02', 'value': {'class': ['log-client'], 'template': 'ansible_init', 'custom_facts': 'class.fact.j2', 'vmm': 'iocage_05'}})

TASK [Create custom facts files.] **********************************************
changed: [iocage_05] => (item={'key': 'log-server', 'value': {'class': ['log-server'], 'template': 'ansible_init', 'custom_facts': 'class.fact.j2', 'vmm': 'iocage_05', 'properties': {'vnet': 1, 'defaultrouter': '172.16.99.1', 'ip4_addr': 'vnet0|172.16.99.10/24', 'boot': 1}}})
changed: [iocage_05] => (item={'key': 'www-01', 'value': {'class': ['log-client'], 'template': 'ansible_init', 'custom_facts': 'class.fact.j2', 'vmm': 'iocage_05'}})
changed: [iocage_05] => (item={'key': 'www-02', 'value': {'class': ['log-client'], 'template': 'ansible_init', 'custom_facts': 'class.fact.j2', 'vmm': 'iocage_05'}})

TASK [Set properties.] *********************************************************
ok: [iocage_05] => (item=log-server)
ok: [iocage_05] => (item=www-01)
ok: [iocage_05] => (item=www-02)

TASK [Start jails.] ************************************************************
ok: [iocage_05]

PLAY RECAP *********************************************************************
iocage_05                  : ok=6    changed=2    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0   

List jails

shell > ssh admin@iocage_05 sudo iocage list -l
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| JID |    NAME     | BOOT | STATE | TYPE |   RELEASE    |          IP4          | IP6 |   TEMPLATE    | BASEJAIL |
+=====+=============+======+=======+======+==============+=======================+=====+===============+==========+
| 17  | bar         | on   | up    | jail | 15.0-RELEASE | epair0b|172.16.99.103 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 18  | baz         | on   | up    | jail | 15.0-RELEASE | epair0b|172.16.99.107 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 16  | foo         | on   | up    | jail | 15.0-RELEASE | epair0b|172.16.99.102 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 20  | log-server  | on   | up    | jail | 15.0-RELEASE | vnet0|172.16.99.10/24 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 19  | qux         | on   | up    | jail | 15.0-RELEASE | epair0b|172.16.99.104 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 12  | repos       | on   | up    | jail | 15.0-RELEASE | vnet0|172.16.99.21/24 | -   | ansible_repos | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 13  | repos-devel | on   | up    | jail | 15.0-RELEASE | vnet0|172.16.99.22/24 | -   | ansible_repos | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 21  | www-01      | on   | up    | jail | 15.0-RELEASE | epair0b|172.16.99.105 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+
| 22  | www-02      | on   | up    | jail | 15.0-RELEASE | epair0b|172.16.99.106 | -   | ansible_init  | no       |
+-----+-------------+------+-------+------+--------------+-----------------------+-----+---------------+----------+

Playbook pb-logserver-test.yml

---
- name: Test Log Server.
  hosts: log_server
    
  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 pb-logserver-test.yml -i hosts -e debug=true
PLAY [Test Log Server.] ********************************************************

TASK [Run commands.] ***********************************************************
changed: [log-server] => (item=rm -rf /var/log/remote/localhost/*)
changed: [log-server] => (item=service syslog-ng status)
changed: [log-server] => (item=loggen -i -S -n 1 localhost 514)
changed: [log-server] => (item=sleep 2; find /var/log/remote/localhost/ -name *.log | xargs cat)

TASK [Debug.] ******************************************************************
ok: [log-server] => 
    msg: |-
        shell> rm -rf /var/log/remote/localhost/*

        shell> service syslog-ng status
        syslog_ng is running as pid 51350.

        shell> loggen -i -S -n 1 localhost 514
        count=1, rate = 27777.78 msg/sec
        average rate = 2.00 msg/sec, count=1, time=0.500261, (average) msg size=256, bandwidth=0.50 kB/sec

        shell> sleep 2; find /var/log/remote/localhost/ -name *.log | xargs cat
        Jun 18 08:06:06 localhost prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1781762766, stamp: 2026-06-18T08:06:06 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD

PLAY RECAP *********************************************************************
log-server                 : 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_client

  vars:

    log_server: "{{ hostvars['log-server']['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_server
    
  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 pb-logclient-test.yml -i hosts
PLAY [Test Log Clients.] *******************************************************

TASK [Run loggen] **************************************************************
changed: [www-01]
changed: [www-02]

TASK [Debug.] ******************************************************************
ok: [www-01] => 
    out.stderr: |-
        count=1, rate = 27027.03 msg/sec
        average rate = 2.00 msg/sec, count=1, time=0.500354, (average) msg size=256, bandwidth=0.50 kB/sec
ok: [www-02] => 
    out.stderr: |-
        count=1, rate = 27027.03 msg/sec
        average rate = 2.00 msg/sec, count=1, time=0.500516, (average) msg size=256, bandwidth=0.50 kB/sec

PLAY [Display the logs.] *******************************************************

TASK [Get log files paths.] ****************************************************
ok: [log-server]

TASK [Get log files.] **********************************************************
changed: [log-server] => (item=/var/log/remote/localhost/2026_06_18.log)
changed: [log-server] => (item=/var/log/remote/172.16.99.106/2026_06_18.log)
changed: [log-server] => (item=/var/log/remote/172.16.99.105/2026_06_18.log)

TASK [Display log files.] ******************************************************
ok: [log-server] => (item=['cat', '/var/log/remote/localhost/2026_06_18.log']) => 
    msg: |-
        Jun 18 08:06:06 localhost prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1781762766, stamp: 2026-06-18T08:06:06 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ok: [log-server] => (item=['cat', '/var/log/remote/172.16.99.106/2026_06_18.log']) => 
    msg: |-
        Jun 18 07:25:05 172.16.99.106 syslog-ng[50267]: syslog-ng starting up; version='4.11.0'
        Jun 18 07:25:05 172.16.99.106 syslog-ng[50267]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
        Jun 18 07:25:06 172.16.99.106 1 2026-06-18T07:25:06.239636+02:00 www-02 ansible-vbotka.freebsd.service 50293 - - Invoked with script=syslog-ng command=reload list_enabled=False synopsis=False wait=0.5 env=None jail=None
        Jun 18 07:25:06 172.16.99.106 syslog-ng[50267]: Loading the new configuration;
        Jun 18 07:25:06 172.16.99.106 syslog-ng[50267]: Configuration reload finished;
        Jun 18 07:25:06 172.16.99.106 syslog-ng[50267]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
        Jun 18 07:25:07 172.16.99.106 1 2026-06-18T07:25:07.116326+02:00 www-02 ansible-vbotka.freebsd.service 50401 - - Invoked with script=syslogd command=stop list_enabled=False synopsis=False wait=0.5 env=None jail=None
        Jun 18 07:22:12 172.16.99.106 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-02
        Jun 18 07:22:12 172.16.99.106 ansible: n=ansible INFO| PLAY [ansible-init] ************************************************************
        Jun 18 07:22:13 172.16.99.106 ansible: n=ansible INFO| TASK [Get hostname.] ***********************************************************
        Jun 18 07:22:13 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| TASK [Get custom facts.] *******************************************************
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
        Jun 18 07:25:07 172.16.99.106 ansible: |-
        Jun 18 07:25:07 172.16.99.106 ansible: true
        Jun 18 07:25:07 172.16.99.106 ansible: www-02
        Jun 18 07:25:07 172.16.99.106 ansible: ['log-client']
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| TASK [Set ai_cmd] **************************************************************
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| TASK [Execute ai_cmd] **********************************************************
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| included: /root/ansible-conf-init/tasks/execute-cmd.yml for localhost.my.domain
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
        Jun 18 07:22:14 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
        Jun 18 07:25:07 172.16.99.106 ansible: |-
        Jun 18 07:25:07 172.16.99.106 ansible:
        Jun 18 07:25:07 172.16.99.106 ansible: True
        Jun 18 07:25:07 172.16.99.106 ansible:      ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-syslogng-client -d /root/ansible-conf-syslogng-client -e "ansible_pull_mode=true" pb-logclient.yml &&  echo '[INFO] ansible-pull finished.'
        Jun 18 07:22:15 172.16.99.106 ansible: n=ansible INFO| TASK [Execute command async=3600 poll=0] ***************************************
        Jun 18 07:22:15 172.16.99.106 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:22:15 172.16.99.106 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
        Jun 18 07:22:15 172.16.99.106 ansible: n=ansible INFO| localhost.my.domain        : ok=7    changed=1    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0
        Jun 18 07:22:15 172.16.99.106 ansible: n=ansible INFO| Starting Ansible Pull at 2026-06-18 07:22:15
        Jun 18 07:22:15 172.16.99.106 ansible: n=ansible INFO| /usr/local/bin/ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-syslogng-client -d /root/ansible-conf-syslogng-client -e ansible_pull_mode=true pb-logclient.yml
        Jun 18 07:22:16 172.16.99.106 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-02
        Jun 18 07:22:18 172.16.99.106 ansible: n=ansible INFO| localhost.my.domain | CHANGED => {
        Jun 18 07:25:07 172.16.99.106 ansible: "83c70d38783b19780c67d2c1fa40a365bbf59018",
        Jun 18 07:25:07 172.16.99.106 ansible: {
        Jun 18 07:25:07 172.16.99.106 ansible: "/usr/local/bin/python3.11"
        Jun 18 07:25:07 172.16.99.106 ansible:
        Jun 18 07:25:07 172.16.99.106 ansible: null,
        Jun 18 07:25:07 172.16.99.106 ansible: true
        Jun 18 07:25:07 172.16.99.106 ansible:
        Jun 18 07:22:19 172.16.99.106 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-02
        Jun 18 07:22:20 172.16.99.106 ansible: n=ansible INFO| PLAY [Configure Log Client.] ***************************************************
        Jun 18 07:25:02 172.16.99.106 ansible: n=ansible INFO| TASK [Install packages.] *******************************************************
        Jun 18 07:25:02 172.16.99.106 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:25:03 172.16.99.106 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslogd_enable in /etc/rc.conf] ***
        Jun 18 07:25:03 172.16.99.106 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:25:03 172.16.99.106 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Sanity fp_syslogng_conf is empty.] ***
        Jun 18 07:25:03 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:25:04 172.16.99.106 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Configure /usr/local/etc/syslog-ng.conf] ***
        Jun 18 07:25:04 172.16.99.106 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:25:04 172.16.99.106 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslog_ng_enable in /etc/rc.conf] ***
        Jun 18 07:25:04 172.16.99.106 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:25:06 172.16.99.106 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Start syslog-ng] *****************
        Jun 18 07:25:06 172.16.99.106 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:25:06 172.16.99.106 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Reload syslog-ng] ****************
        Jun 18 07:25:06 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:25:07 172.16.99.106 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Stop syslogd] ********************
        Jun 18 07:25:07 172.16.99.106 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:25:07 172.16.99.106 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
        Jun 18 07:25:07 172.16.99.106 ansible: n=ansible INFO| localhost.my.domain        : ok=8    changed=5    unreachable=0    failed=0    skipped=19   rescued=0    ignored=0
        Jun 18 07:25:09 172.16.99.106 1 2026-06-18T07:25:09.084447+02:00 www-02 ansible-async_wrapper.py 47558 - - Module complete (47558)
        Jun 18 07:26:06 172.16.99.106 syslog-ng[50267]: Syslog connection established; fd='5', server='AF_INET(172.16.99.10:514)', local='AF_INET(0.0.0.0:0)'
        Jun 18 07:27:08 172.16.99.106 1 2026-06-18T07:27:08.559975+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:27:08 172.16.99.106 1 2026-06-18T07:27:08.566116+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:27:08 172.16.99.106 1 2026-06-18T07:27:08.619701+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 07:32:08 172.16.99.106 1 2026-06-18T07:32:08.674258+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:32:08 172.16.99.106 1 2026-06-18T07:32:08.679554+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:32:08 172.16.99.106 1 2026-06-18T07:32:08.734763+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 07:35:06 172.16.99.106 syslog-ng[50267]: Log statistics; processed='global(payload_reallocs)=0', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=72', dropped='global(internal_source)=0', processed='global(internal_source)=6', queued='global(internal_source)=0', processed='source(s_system)=15', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=72', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=72', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=241', processed='src.internal(s_system#2)=6', stamp='src.internal(s_system#2)=1781760366', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=72', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=72', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=111', queued='global(scratch_buffers_count)=0'
        Jun 18 07:37:08 172.16.99.106 1 2026-06-18T07:37:08.815856+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:37:08 172.16.99.106 1 2026-06-18T07:37:08.821908+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:37:08 172.16.99.106 1 2026-06-18T07:37:08.842983+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 07:42:08 172.16.99.106 1 2026-06-18T07:42:08.884870+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:42:08 172.16.99.106 1 2026-06-18T07:42:08.888870+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:42:08 172.16.99.106 1 2026-06-18T07:42:08.944294+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 07:45:06 172.16.99.106 syslog-ng[50267]: Log statistics; processed='global(payload_reallocs)=2', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=79', dropped='global(internal_source)=0', processed='global(internal_source)=7', queued='global(internal_source)=0', processed='source(s_system)=22', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=79', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=79', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=1388', processed='src.internal(s_system#2)=7', stamp='src.internal(s_system#2)=1781760906', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=79', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=79', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=129', queued='global(scratch_buffers_count)=0'
        Jun 18 07:47:09 172.16.99.106 1 2026-06-18T07:47:09.043352+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:47:09 172.16.99.106 1 2026-06-18T07:47:09.047998+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:47:09 172.16.99.106 1 2026-06-18T07:47:09.069560+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 07:52:09 172.16.99.106 1 2026-06-18T07:52:09.145796+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:52:09 172.16.99.106 1 2026-06-18T07:52:09.150417+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:52:09 172.16.99.106 1 2026-06-18T07:52:09.193674+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 07:55:06 172.16.99.106 syslog-ng[50267]: Log statistics; processed='global(payload_reallocs)=4', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=86', dropped='global(internal_source)=0', processed='global(internal_source)=8', queued='global(internal_source)=0', processed='source(s_system)=29', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=86', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=86', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=1389', processed='src.internal(s_system#2)=8', stamp='src.internal(s_system#2)=1781761506', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=86', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=86', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=144', queued='global(scratch_buffers_count)=0'
        Jun 18 07:57:09 172.16.99.106 1 2026-06-18T07:57:09.252421+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:57:09 172.16.99.106 1 2026-06-18T07:57:09.256622+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 07:57:09 172.16.99.106 1 2026-06-18T07:57:09.278308+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 08:02:09 172.16.99.106 1 2026-06-18T08:02:09.351695+02:00 www-02 dhclient 47153 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 08:02:09 172.16.99.106 1 2026-06-18T08:02:09.355996+02:00 www-02 dhclient 47153 - - DHCPACK from 172.16.99.1
        Jun 18 08:02:09 172.16.99.106 1 2026-06-18T08:02:09.411145+02:00 www-02 dhclient 47153 - - bound to 172.16.99.106 -- renewal in 300 seconds.
        Jun 18 08:05:06 172.16.99.106 syslog-ng[50267]: Log statistics; processed='global(payload_reallocs)=6', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=93', dropped='global(internal_source)=0', processed='global(internal_source)=9', queued='global(internal_source)=0', processed='source(s_system)=36', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=93', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=93', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=1389', processed='src.internal(s_system#2)=9', stamp='src.internal(s_system#2)=1781762106', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=93', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=93', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=156', queued='global(scratch_buffers_count)=0'
        Jun 18 08:06:37 172.16.99.106 1 2026-06-18T08:06:37.353467+02:00 www-02 ansible-ansible.legacy.command 54310 - - 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
        Jun 18 08:06:37 172.16.99.106 prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1781762797, stamp: 2026-06-18T08:06:37 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ok: [log-server] => (item=['cat', '/var/log/remote/172.16.99.105/2026_06_18.log']) => 
    msg: |-
        Jun 18 07:24:36 172.16.99.105 syslog-ng[48961]: syslog-ng starting up; version='4.11.0'
        Jun 18 07:24:36 172.16.99.105 syslog-ng[48961]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
        Jun 18 07:24:36 172.16.99.105 1 2026-06-18T07:24:36.992223+02:00 www-01 ansible-vbotka.freebsd.service 48987 - - Invoked with script=syslog-ng command=reload list_enabled=False synopsis=False wait=0.5 env=None jail=None
        Jun 18 07:24:37 172.16.99.105 syslog-ng[48961]: Loading the new configuration;
        Jun 18 07:24:37 172.16.99.105 syslog-ng[48961]: Configuration reload finished;
        Jun 18 07:24:37 172.16.99.105 syslog-ng[48961]: Syslog connection failed; fd='19', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
        Jun 18 07:24:37 172.16.99.105 1 2026-06-18T07:24:37.862935+02:00 www-01 ansible-vbotka.freebsd.service 49095 - - Invoked with script=syslogd command=stop list_enabled=False synopsis=False wait=0.5 env=None jail=None
        Jun 18 07:22:01 172.16.99.105 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-01
        Jun 18 07:22:01 172.16.99.105 ansible: n=ansible INFO| PLAY [ansible-init] ************************************************************
        Jun 18 07:22:02 172.16.99.105 ansible: n=ansible INFO| TASK [Get hostname.] ***********************************************************
        Jun 18 07:22:02 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| TASK [Get custom facts.] *******************************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
        Jun 18 07:24:38 172.16.99.105 ansible: |-
        Jun 18 07:24:38 172.16.99.105 ansible: true
        Jun 18 07:24:38 172.16.99.105 ansible: www-01
        Jun 18 07:24:38 172.16.99.105 ansible: ['log-client']
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| TASK [Set ai_cmd] **************************************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| TASK [Execute ai_cmd] **********************************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| included: /root/ansible-conf-init/tasks/execute-cmd.yml for localhost.my.domain
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| TASK [Display vars.] ***********************************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain] =>
        Jun 18 07:24:38 172.16.99.105 ansible: |-
        Jun 18 07:24:38 172.16.99.105 ansible:
        Jun 18 07:24:38 172.16.99.105 ansible: True
        Jun 18 07:24:38 172.16.99.105 ansible:      ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-syslogng-client -d /root/ansible-conf-syslogng-client -e "ansible_pull_mode=true" pb-logclient.yml &&  echo '[INFO] ansible-pull finished.'
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| TASK [Execute command async=3600 poll=0] ***************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
        Jun 18 07:22:04 172.16.99.105 ansible: n=ansible INFO| localhost.my.domain        : ok=7    changed=1    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0
        Jun 18 07:22:05 172.16.99.105 ansible: n=ansible INFO| Starting Ansible Pull at 2026-06-18 07:22:05
        Jun 18 07:22:05 172.16.99.105 ansible: n=ansible INFO| /usr/local/bin/ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-syslogng-client -d /root/ansible-conf-syslogng-client -e ansible_pull_mode=true pb-logclient.yml
        Jun 18 07:22:05 172.16.99.105 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-01
        Jun 18 07:22:07 172.16.99.105 ansible: n=ansible INFO| localhost.my.domain | CHANGED => {
        Jun 18 07:24:38 172.16.99.105 ansible: "83c70d38783b19780c67d2c1fa40a365bbf59018",
        Jun 18 07:24:38 172.16.99.105 ansible: {
        Jun 18 07:24:38 172.16.99.105 ansible: "/usr/local/bin/python3.11"
        Jun 18 07:24:38 172.16.99.105 ansible:
        Jun 18 07:24:38 172.16.99.105 ansible: null,
        Jun 18 07:24:38 172.16.99.105 ansible: true
        Jun 18 07:24:38 172.16.99.105 ansible:
        Jun 18 07:22:09 172.16.99.105 ansible: n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: www-01
        Jun 18 07:22:10 172.16.99.105 ansible: n=ansible INFO| PLAY [Configure Log Client.] ***************************************************
        Jun 18 07:24:32 172.16.99.105 ansible: n=ansible INFO| TASK [Install packages.] *******************************************************
        Jun 18 07:24:32 172.16.99.105 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:24:34 172.16.99.105 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslogd_enable in /etc/rc.conf] ***
        Jun 18 07:24:34 172.16.99.105 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:24:34 172.16.99.105 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Sanity fp_syslogng_conf is empty.] ***
        Jun 18 07:24:34 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:24:35 172.16.99.105 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Configure /usr/local/etc/syslog-ng.conf] ***
        Jun 18 07:24:35 172.16.99.105 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:24:35 172.16.99.105 ansible: n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslog_ng_enable in /etc/rc.conf] ***
        Jun 18 07:24:35 172.16.99.105 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:24:36 172.16.99.105 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Start syslog-ng] *****************
        Jun 18 07:24:36 172.16.99.105 ansible: n=ansible INFO| changed: [localhost.my.domain]
        Jun 18 07:24:37 172.16.99.105 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Reload syslog-ng] ****************
        Jun 18 07:24:37 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:24:38 172.16.99.105 ansible: n=ansible INFO| RUNNING HANDLER [vbotka.freebsd.postinstall : Stop syslogd] ********************
        Jun 18 07:24:38 172.16.99.105 ansible: n=ansible INFO| ok: [localhost.my.domain]
        Jun 18 07:24:38 172.16.99.105 ansible: n=ansible INFO| PLAY RECAP *********************************************************************
        Jun 18 07:24:38 172.16.99.105 ansible: n=ansible INFO| localhost.my.domain        : ok=8    changed=5    unreachable=0    failed=0    skipped=19   rescued=0    ignored=0
        Jun 18 07:24:39 172.16.99.105 1 2026-06-18T07:24:39.811893+02:00 www-01 ansible-async_wrapper.py 46466 - - Module complete (46466)
        Jun 18 07:24:52 172.16.99.105 1 2026-06-18T07:24:52.720754+02:00 www-01 ansible-ansible.legacy.command 49485 - - 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
        Jun 18 07:25:37 172.16.99.105 syslog-ng[48961]: Syslog connection failed; fd='5', server='AF_INET(172.16.99.10:514)', error='Connection refused (61)', time_reopen='60'
        Jun 18 07:26:37 172.16.99.105 syslog-ng[48961]: Syslog connection established; fd='5', server='AF_INET(172.16.99.10:514)', local='AF_INET(0.0.0.0:0)'
        Jun 18 07:26:57 172.16.99.105 1 2026-06-18T07:26:57.171129+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:26:57 172.16.99.105 1 2026-06-18T07:26:57.175634+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:26:57 172.16.99.105 1 2026-06-18T07:26:57.231338+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 07:31:57 172.16.99.105 1 2026-06-18T07:31:57.288274+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:31:57 172.16.99.105 1 2026-06-18T07:31:57.293955+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:31:57 172.16.99.105 1 2026-06-18T07:31:57.314658+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 07:34:37 172.16.99.105 syslog-ng[48961]: Log statistics; processed='global(payload_reallocs)=0', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=74', dropped='global(internal_source)=0', processed='global(internal_source)=7', queued='global(internal_source)=0', processed='source(s_system)=17', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=74', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=74', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=345', processed='src.internal(s_system#2)=7', stamp='src.internal(s_system#2)=1781760397', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=74', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=74', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=115', queued='global(scratch_buffers_count)=0'
        Jun 18 07:36:57 172.16.99.105 1 2026-06-18T07:36:57.364133+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:36:57 172.16.99.105 1 2026-06-18T07:36:57.370243+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:36:57 172.16.99.105 1 2026-06-18T07:36:57.426575+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 07:41:57 172.16.99.105 1 2026-06-18T07:41:57.492710+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:41:57 172.16.99.105 1 2026-06-18T07:41:57.496402+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:41:57 172.16.99.105 1 2026-06-18T07:41:57.517137+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 07:44:37 172.16.99.105 syslog-ng[48961]: Log statistics; processed='global(payload_reallocs)=2', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=81', dropped='global(internal_source)=0', processed='global(internal_source)=8', queued='global(internal_source)=0', processed='source(s_system)=24', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=81', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=81', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=1388', processed='src.internal(s_system#2)=8', stamp='src.internal(s_system#2)=1781760877', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=81', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=81', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=132', queued='global(scratch_buffers_count)=0'
        Jun 18 07:46:57 172.16.99.105 1 2026-06-18T07:46:57.551066+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:46:57 172.16.99.105 1 2026-06-18T07:46:57.555587+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:46:57 172.16.99.105 1 2026-06-18T07:46:57.611255+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 07:51:57 172.16.99.105 1 2026-06-18T07:51:57.737693+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:51:57 172.16.99.105 1 2026-06-18T07:51:57.742044+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:51:57 172.16.99.105 1 2026-06-18T07:51:57.798213+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 07:54:37 172.16.99.105 syslog-ng[48961]: Log statistics; processed='global(payload_reallocs)=4', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=88', dropped='global(internal_source)=0', processed='global(internal_source)=9', queued='global(internal_source)=0', processed='source(s_system)=31', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=88', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=88', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=1389', processed='src.internal(s_system#2)=9', stamp='src.internal(s_system#2)=1781761477', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=88', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=88', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=146', queued='global(scratch_buffers_count)=0'
        Jun 18 07:56:57 172.16.99.105 1 2026-06-18T07:56:57.856568+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 07:56:57 172.16.99.105 1 2026-06-18T07:56:57.860626+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 07:56:57 172.16.99.105 1 2026-06-18T07:56:57.884374+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 08:01:57 172.16.99.105 1 2026-06-18T08:01:57.909026+02:00 www-01 dhclient 46031 - - DHCPREQUEST on epair0b to 172.16.99.1 port 67
        Jun 18 08:01:57 172.16.99.105 1 2026-06-18T08:01:57.913347+02:00 www-01 dhclient 46031 - - DHCPACK from 172.16.99.1
        Jun 18 08:01:57 172.16.99.105 1 2026-06-18T08:01:57.933926+02:00 www-01 dhclient 46031 - - bound to 172.16.99.105 -- renewal in 300 seconds.
        Jun 18 08:04:37 172.16.99.105 syslog-ng[48961]: Log statistics; processed='global(payload_reallocs)=6', memory_usage='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(received)=95', dropped='global(internal_source)=0', processed='global(internal_source)=10', queued='global(internal_source)=0', processed='source(s_system)=38', truncated_count='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='dst.network(d_network#0,tcp,172.16.99.10:514)=95', eps_last_1h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='source(s_ansible)=57', eps_last_24h='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='center(queued)=95', msg_size_max='dst.network(d_network#0,tcp,172.16.99.10:514)=1389', processed='src.internal(s_system#2)=10', stamp='src.internal(s_system#2)=1781762077', dropped='dst.network(d_network#0,tcp,172.16.99.10:514)=0', queued='dst.network(d_network#0,tcp,172.16.99.10:514)=0', written='dst.network(d_network#0,tcp,172.16.99.10:514)=95', queued='global(scratch_buffers_bytes)=0', truncated_bytes='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='destination(d_network)=95', processed='global(msg_clones)=0', eps_since_start='dst.network(d_network#0,tcp,172.16.99.10:514)=0', processed='global(sdata_updates)=0', msg_size_avg='dst.network(d_network#0,tcp,172.16.99.10:514)=158', queued='global(scratch_buffers_count)=0'
        Jun 18 08:06:37 172.16.99.105 prg00000[1234]: seq: 0000000000, thread: 0000, runid: 1781762797, stamp: 2026-06-18T08:06:37 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD
        Jun 18 08:06:37 172.16.99.105 1 2026-06-18T08:06:37.353990+02:00 www-01 ansible-ansible.legacy.command 54311 - - 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

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

PLAY RECAP *********************************************************************
log-server                 : 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 utility lnav on the log server to display all logfiles in the the directory /var/log/remote

shell > lnav -r /var/log/remote/

Troubleshooting

  • See the Ansible logs /var/log/ansible.log in the jails.

  • Update and pull the repositories. For example,

root@log-server:~ # cd /root/ansible-conf-init/
root@log-server:~/ansible-conf-init # git pull
Already up to date.
root@log-server: # cd /root/ansible-conf-syslogng-server/
root@log-server:~/ansible-conf-syslogng-server # git pull
Already up to date.
  • Start the service ansible_init

root@log-server:~ # service ansible_init start
Service ansible_init started.
Starting Ansible Pull at 2026-06-18 07:47:59
/usr/local/bin/ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-init -d /root/ansible-conf-init -e ansible_pull_mode=true pb-init.yml
...
TASK [Display vars.] ***********************************************************
ok: [localhost.my.domain] =>
    msg: |-
        ai_at:
        ai_async: True
        ai_cmd:      ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-syslogng-server -d /root/ansible-conf-syslogng-server -e "ansible_pull_mode=true" pb-logserv.yml &&  echo '[INFO] ansible-pull finished.'

TASK [Execute command async=3600 poll=0] ***************************************
changed: [localhost.my.domain]

PLAY RECAP *********************************************************************
localhost.my.domain        : ok=7    changed=1    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0
  • See the Ansible log /var/log/ansible.log. The warning is harmless.

root@log-server:~ # cat /var/log/ansible.log
...
2026-06-18 07:48:06,356 p=52659 u=root n=ansible INFO| Starting Ansible Pull at 2026-06-18 07:48:06
2026-06-18 07:48:06,356 p=52659 u=root n=ansible INFO| /usr/local/bin/ansible-pull -i hosts -U git://172.16.99.21/ansible-conf-syslogng-server -d /root/ansible-conf-syslogng-server -e ansible_pull_mode=true pb-logserv.yml
2026-06-18 07:48:06,866 p=52661 u=root n=ansible WARNING| [WARNING]: Could not match supplied host pattern, ignoring: log-server
...
2026-06-18 07:48:09,702 p=52697 u=root n=ansible INFO| PLAY [Configure and start Log Server.] *****************************************
2026-06-18 07:48:14,495 p=52697 u=root n=ansible INFO| TASK [Install packages.] *******************************************************
2026-06-18 07:48:14,497 p=52697 u=root n=ansible INFO| ok: [localhost.my.domain]
2026-06-18 07:48:15,373 p=52697 u=root n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslogd_enable in /etc/rc.conf] ***
2026-06-18 07:48:15,374 p=52697 u=root n=ansible INFO| ok: [localhost.my.domain]
2026-06-18 07:48:15,506 p=52697 u=root n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Sanity fp_syslogng_conf is empty.] ***
2026-06-18 07:48:15,508 p=52697 u=root n=ansible INFO| ok: [localhost.my.domain]
2026-06-18 07:48:16,232 p=52697 u=root n=ansible INFO| TASK [vbotka.freebsd.postinstall : Syslog-ng: Configure /usr/local/etc/syslog-ng.conf] ***
2026-06-18 07:48:16,232 p=52697 u=root n=ansible INFO| ok: [localhost.my.domain]
2026-06-18 07:48:16,645 p=52697 u=root n=ansible INFO| TASK [vbotka.freebsd.postinstall : Rcconf: Configure syslog_ng_enable in /etc/rc.conf] ***
2026-06-18 07:48:16,647 p=52697 u=root n=ansible INFO| ok: [localhost.my.domain]
2026-06-18 07:48:16,706 p=52697 u=root n=ansible INFO| PLAY RECAP *********************************************************************
2026-06-18 07:48:16,706 p=52697 u=root n=ansible INFO| localhost.my.domain        : ok=5    changed=0    unreachable=0    failed=0    skipped=19   rescued=0    ignored=0