527 iocage template ansible-pkg-repo

Use case

Create a jail that provides pkg repo for other jails. Create iocage template ansible-pkg-repo and configure web server to publish the repo. Create a jail from the template and fetch packages to the repo.

Tree

shell > tree .
.
├── ansible.cfg
├── group_vars
│   ├── all
│   │   ├── project-hosts.yml
│   │   └── project.yml
│   └── fetch_pkg_repo
│       └── pkg-repo.yml
├── hosts
│   └── 06_iocage2.yml
├── host_vars
│   └── iocage_06
│       └── template.yml
├── iocage.ini
├── pb-iocage-template.yml
├── pb-pkg-repo.yml
└── templates
    └── nginx.conf.j2

Synopsis

Requirements

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

hosts/06_iocage2.yml
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 option
  ansible_python_interpreter: "'auto_silent'"

groups:
  fetch_pkg_repo: iocage_classes is contains('pkg-repo')

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

group_vars

group_vars/all/project-hosts.yml
project_hosts:
  iocage_06:
    defaultrouter: 172.16.99.1
    log_server: 172.16.99.10
    # repositories
    repos: 172.16.99.21
    repos_devel: 172.16.99.22
    pkg_repo: 172.16.99.23
    # plugins
    ansible_pull_syslogng_server: 172.16.99.31
    # templates
    ansible_syslogng_server: 172.16.99.41
group_vars/all/project.yml
project:
  pkg-repo:
    notes: alias=pkg_repo
    vmm: iocage_06
    template: ansible-pkg-repo
    class: [pkg-repo]
    properties:
      ip4: disable
      ip6: disable
      ip6_addr: none
      boot: 1
      defaultrouter: "{{ project_hosts[inventory_hostname]['defaultrouter'] }}"
      ip4_addr: "vnet0|{{ project_hosts[inventory_hostname]['pkg_repo'] }}/24"
      vnet: 1

vmm_groups: "{{ dict(project | dict2items | groupby('value.vmm')) }}"
vmm: "{{ dict(vmm_groups.keys() | zip(vmm_groups.values() | map('items2dict'))) }}"
group_vars/fetch_pkg_repo/pkg-repo.yml
pkg_fetch: true
pkg_fetch_dir: /usr/local/www/pkgrepo
pkg_fetch_list: []
pkg_fetch_dict_select:
  - minimal
  - syslog
  - other
  - python
pkg_dict:
  - pkglist: minimal
    packages:
    - shells/bash
    - devel/git@default
    - archivers/gtar
    - ports-mgmt/pkg
    - ports-mgmt/portmaster
    - ports-mgmt/portupgrade
    - net/rsync
    - security/sudo
    - ftp/wget
  - pkglist: syslog
    packages:
      - sysutils/syslog-ng
      - sysutils/lnav
  - pkglist: other
    packages:
      - www/nginx
      - www/nginx-lite
  - pkglist: python
    packages:
      - lang/python312
      - lang/python
      - lang/python3

host_vars

host_vars/iocage_06/template.yml
fit_pkg_install: true

fit_templates:
  ansible-pkg-repo:
    release: 15.1-RELEASE
    pkg:
      - nginx-lite
      - python312
      - python
      - python3
    templates: "{{ fit_file_templates | dict2items }}"
    commands: "{{ fit_commands }}"
    rcconf: "{{ fit_rcconf | dict2items }}"
    properties:
      ip4: disable
      ip6: disable
      ip6_addr: none
      bpf: 1
      dhcp: 1
      vnet: 1
      notes: '"class=pkg-repo alias=ansible_pkg_repo"'

fit_rcconf:
  nginx_enable: "YES"

fit_commands:
  - mkdir -p /usr/local/www/pkgrepo
  - chown www:www /usr/local/www/pkgrepo
  - chmod 755 /usr/local/www/pkgrepo

fit_file_templates:
  /usr/local/etc/nginx:
    - nginx.conf

fit_file_options:
  /usr/local/etc/nginx:
    owner: root
    group: wheel
    mode: '0755'
  /usr/local/etc/nginx/nginx.conf:
    owner: root
    group: wheel
    mode: '0644'

templates

templates/nginx.conf.j2
# {{ ansible_managed }}

worker_processes 1;

events {
    worker_connections 256;
    use kqueue; # Optimized event notifications for FreeBSD kernel
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # High-efficiency FreeBSD zero-copy file serving
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    keepalive_timeout 15;

    server {
        listen       80;
        server_name  {{ project_hosts[inventory_hostname]['pkg_repo'] }};
        root         /usr/local/www/pkgrepo;

        location / {
            autoindex on;
        }
    }
}

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.

Playbook pb-iocage-template.yml

---
- name: Create iocage templates.
  hosts: iocage
  gather_facts: true

  roles:

    - vbotka.freebsd.iocage_template

Playbook output - Create iocage templates

(env) > ansible-playbook -i iocage.ini pb-iocage-template.yml
PLAY [Create iocage templates.] ************************************************

TASK [Gathering Facts] *********************************************************
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Setup: Get iocage list of templates.] ***
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Setup: Get activated pool.] *************
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Debug: Display variables fit_debug=true] ***
ok: [iocage_06] => 
    msg: |-
        fit_role_version: 1.3.1

        ansible_facts.architecture: amd64
        ansible_facts.os_family: FreeBSD
        ansible_facts.distribution: FreeBSD
        ansible_facts.distribution_major_version: 15
        ansible_facts.distribution_version: 15.1
        ansible_facts.distribution_release: 15.1-RELEASE
        ansible_facts.python_version: 3.12.13

        fit_sudo: False
        fit_stop: True
        fit_template: True
        fit_pkg_install: True
        fit_pkg_cached: UNDEFINED
        fit_pkg_ignore_osver: UNDEFINED
        fit_pkg_pkgsite: UNDEFINED

        fit_templates:
          ansible-pkg-repo:
            commands:
            - mkdir -p /usr/local/www/pkgrepo
            - chown www:www /usr/local/www/pkgrepo
            - chmod 755 /usr/local/www/pkgrepo
            pkg:
            - nginx-lite
            - python312
            - python
            - python3
            properties:
              bpf: 1
              dhcp: 1
              ip4: disable
              ip6: disable
              ip6_addr: none
              notes: '"class=pkg-repo alias=ansible_pkg_repo"'
              vnet: 1
            rcconf:
            - key: nginx_enable
              value: 'YES'
            release: 15.1-RELEASE
            templates:
            - key: /usr/local/etc/nginx
              value:
              - nginx.conf

        fit_iocage_mount: /zroot
        fit_iocage_templates:
          ansible-client:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-client-apache:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-client-pull:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-init:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-init-devel:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-init-example:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-nginx:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-repos:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-syslogng-client:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
              ip4: []
              msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template
          ansible-syslogng-server:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.41
            ip4_dict:
              ip4:
              - ifc: vnet0
                ip: 172.16.99.41
                mask: '24'
              msg: ''
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: template

TASK [vbotka.freebsd.iocage_template : Create: Get iocage list of jails.] ******
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Create: Display iocage_jails fit_debug=true] ***
ok: [iocage_06] => 
    fit_iocage_jails:
        09caf271:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        1718af82:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        bar:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.143
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.143
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '37'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        baz:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.141
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.141
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '38'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        foo:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.138
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.138
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '36'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        log-server:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.10
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.10
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '40'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        qux:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.144
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.144
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '39'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        repos:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.21
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.21
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '34'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        repos-devel:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.22
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.22
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '35'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        test-151:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.189
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.189
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '28'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-152:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.188
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.188
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '27'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-153:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.187
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.187
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '26'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        www-01:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.116
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.116
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '41'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        www-02:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.147
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.147
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '42'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail

TASK [vbotka.freebsd.iocage_template : Create: Create jails.] ******************
ok: [iocage_06] => (item=ansible-pkg-repo 15.1-RELEASE)

TASK [vbotka.freebsd.iocage_template : Start: Get iocage list of jails.] *******
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Start: Display iocage_jails fit_debug=true] ***
ok: [iocage_06] => 
    fit_iocage_jails:
        09caf271:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        1718af82:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        ansible-pkg-repo:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        bar:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.143
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.143
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '37'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        baz:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.141
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.141
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '38'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        foo:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.138
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.138
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '36'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        log-server:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.10
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.10
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '40'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        qux:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.144
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.144
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '39'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        repos:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.21
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.21
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '34'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        repos-devel:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.22
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.22
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '35'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        test-151:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.189
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.189
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '28'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-152:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.188
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.188
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '27'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-153:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.187
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.187
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '26'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        www-01:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.116
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.116
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '41'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        www-02:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.147
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.147
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '42'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail

TASK [vbotka.freebsd.iocage_template : Start: Display jails to start fit_debug=true] ***
ok: [iocage_06] => 
    _jails_to_start:
    - ansible-pkg-repo

TASK [vbotka.freebsd.iocage_template : Start: Start jails.] ********************
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Pkg: Get iocage list of jails.] *********
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Pkg: Display iocage_jails fit_debug=true] ***
ok: [iocage_06] => 
    fit_iocage_jails:
        09caf271:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        1718af82:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        ansible-pkg-repo:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.185
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.185
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '43'
            release: 15.1-RELEASE-p1
            state: up
            template: '-'
            type: jail
        bar:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.143
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.143
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '37'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        baz:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.141
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.141
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '38'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        foo:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.138
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.138
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '36'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        log-server:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.10
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.10
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '40'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        qux:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.144
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.144
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '39'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        repos:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.21
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.21
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '34'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        repos-devel:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.22
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.22
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '35'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        test-151:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.189
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.189
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '28'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-152:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.188
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.188
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '27'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-153:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.187
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.187
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '26'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        www-01:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.116
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.116
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '41'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        www-02:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.147
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.147
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '42'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail

TASK [vbotka.freebsd.iocage_template : Pkg: Install packages.] *****************
changed: [iocage_06] => (item=ansible-pkg-repo)

TASK [vbotka.freebsd.iocage_template : Templates: Template files.] *************
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/iocage_template/tasks/fn/templates.yml for iocage_06 => (item=ansible-pkg-repo)

TASK [vbotka.freebsd.iocage_template : Fn/templates: Create directory.] ********
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Fn/templates: Template files.] **********
changed: [iocage_06] => (item=nginx.conf)

TASK [vbotka.freebsd.iocage_template : Rcconf: Configure /etc/rc.conf] *********
changed: [iocage_06] => (item=ansible-pkg-repo nginx_enable YES)

TASK [vbotka.freebsd.iocage_template : Commands: Execute commands.] ************
ok: [iocage_06] => (item=ansible-pkg-repo > mkdir -p /usr/local/www/pkgrepo)
ok: [iocage_06] => (item=ansible-pkg-repo > chown www:www /usr/local/www/pkgrepo)
ok: [iocage_06] => (item=ansible-pkg-repo > chmod 755 /usr/local/www/pkgrepo)

TASK [vbotka.freebsd.iocage_template : Stop: Get iocage list of jails.] ********
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Stop: Display iocage_jails fit_debug=true] ***
ok: [iocage_06] => 
    fit_iocage_jails:
        09caf271:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        1718af82:
            basejail: 'no'
            boot: 'off'
            ip4: '-'
            ip4_dict:
                ip4: []
                msg: DHCP (not running)
            ip6: '-'
            jid: None
            release: 15.1-RELEASE-p1
            state: down
            template: '-'
            type: jail
        ansible-pkg-repo:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.185
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.185
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '43'
            release: 15.1-RELEASE-p1
            state: up
            template: '-'
            type: jail
        bar:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.143
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.143
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '37'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        baz:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.141
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.141
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '38'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        foo:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.138
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.138
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '36'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        log-server:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.10
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.10
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '40'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        qux:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.144
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.144
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '39'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        repos:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.21
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.21
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '34'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        repos-devel:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.22
            ip4_dict:
                ip4:
                -   ifc: vnet0
                    ip: 172.16.99.22
                    mask: '24'
                msg: ''
            ip6: '-'
            jid: '35'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-repos
            type: jail
        test-151:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.189
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.189
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '28'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-152:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.188
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.188
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '27'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        test-153:
            basejail: 'no'
            boot: 'off'
            ip4: 172.16.99.187
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.187
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '26'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-client
            type: jail
        www-01:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.116
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.116
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '41'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail
        www-02:
            basejail: 'no'
            boot: 'on'
            ip4: 172.16.99.147
            ip4_dict:
                ip4:
                -   ifc: epair0b
                    ip: 172.16.99.147
                    mask: '-'
                msg: ''
            ip6: '-'
            jid: '42'
            release: 15.1-RELEASE-p1
            state: up
            template: ansible-init
            type: jail

TASK [vbotka.freebsd.iocage_template : Stop: Stop jails.] **********************
ok: [iocage_06]

TASK [vbotka.freebsd.iocage_template : Template: Set template.] ****************
ok: [iocage_06] => (item=ansible-pkg-repo)

PLAY RECAP *********************************************************************
iocage_06                  : ok=23   changed=3    unreachable=0    failed=0    skipped=30   rescued=0    ignored=0   

List templates

shell > ssh admin@iocage_06 sudo iocage list -lt
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| JID  |          NAME           | BOOT | STATE |   TYPE   |     RELEASE     |          IP4          | IP6 | TEMPLATE | BASEJAIL |
+======+=========================+======+=======+==========+=================+=======================+=====+==========+==========+
| None | ansible-client          | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-client-apache   | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-client-pull     | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-init            | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-init-devel      | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-init-example    | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-nginx           | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-pkg-repo        | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-repos           | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-syslogng-client | off  | down  | template | 15.1-RELEASE-p1 | DHCP (not running)    | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+
| None | ansible-syslogng-server | off  | down  | template | 15.1-RELEASE-p1 | vnet0|172.16.99.41/24 | -   | -        | no       |
+------+-------------------------+------+-------+----------+-----------------+-----------------------+-----+----------+----------+

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=pkg-repo)

TASK [Ai-vars-class: Create ansible init vars dirs.] ***************************
changed: [iocage_06] => (item=pkg-repo)

TASK [Ai-vars-jail: Create ansible init vars dirs.] ****************************
ok: [iocage_06] => (item=pkg-repo)

TASK [Properties: Set properties.] *********************************************
ok: [iocage_06] => (item=pkg-repo)

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

PLAY RECAP *********************************************************************
iocage_06                  : ok=6    changed=1    unreachable=0    failed=0    skipped=23   rescued=0    ignored=0   

Inventory graph

shell > ansible-inventory -i hosts --graph
@all:
  |--@ungrouped:
  |--@state_up:
  |  |--foo
  |  |--baz
  |  |--bar
  |  |--repos
  |  |--qux
  |  |--test_153
  |  |--log_server
  |  |--repos_devel
  |  |--pkg_repo
  |  |--www_02
  |  |--test_152
  |  |--www_01
  |  |--test_151
  |--@vmm_iocage_06:
  |  |--foo
  |  |--baz
  |  |--bar
  |  |--repos
  |  |--qux
  |  |--test_153
  |  |--log_server
  |  |--db1
  |  |--repos_devel
  |  |--db2
  |  |--pkg_repo
  |  |--www_02
  |  |--test_152
  |  |--www_01
  |  |--test_151
  |--@state_down:
  |  |--db1
  |  |--db2
  |--@fetch_pkg_repo:
  |  |--pkg_repo

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       |
+------+-------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 40   | log-server  | 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       |
+------+-------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 41   | www-01      | on   | up    | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.116 | -   | ansible-init     | no       |
+------+-------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+
| 42   | www-02      | on   | up    | jail | 15.1-RELEASE-p1 | epair0b|172.16.99.147 | -   | ansible-init     | no       |
+------+-------------+------+-------+------+-----------------+-----------------------+-----+------------------+----------+

Playbook pb-pkg-repo.yml

---
- name: Fetch packages to repo.
  hosts: fetch_pkg_repo

  tasks:

    - name: Fetch packages to repo.
      ansible.builtin.import_role:
        name: vbotka.freebsd.packages
        tasks_from: pkg-fetch.yml

Playbook output - Fetch packages to repo

(env) > ansible-playbook -i hosts pb-pkg-repo.yml
PLAY [Fetch packages to repo.] *************************************************

TASK [vbotka.freebsd.packages : Packages_fetch: Create /usr/local/www/pkgrepo] ***
changed: [pkg_repo]

TASK [vbotka.freebsd.packages : Packages_fetch: Debug selected lists from pkg_dict pkg_debug=true] ***
ok: [pkg_repo] => (item=minimal) => 
    msg:
    - shells/bash
    - devel/git@default
    - archivers/gtar
    - ports-mgmt/pkg
    - ports-mgmt/portmaster
    - ports-mgmt/portupgrade
    - net/rsync
    - security/sudo
    - ftp/wget
ok: [pkg_repo] => (item=syslog) => 
    msg:
    - sysutils/syslog-ng
    - sysutils/lnav
ok: [pkg_repo] => (item=other) => 
    msg:
    - www/nginx
    - www/nginx-lite
ok: [pkg_repo] => (item=python) => 
    msg:
    - lang/python312
    - lang/python
    - lang/python3

TASK [vbotka.freebsd.packages : Packages_fetch: Fetch selected lists from pkg_dict] ***
changed: [pkg_repo] => (item=minimal)
changed: [pkg_repo] => (item=syslog)
changed: [pkg_repo] => (item=other)
changed: [pkg_repo] => (item=python)

TASK [vbotka.freebsd.packages : Packages_fetch: Debug result pkg_debug=true] ***
ok: [pkg_repo] => 
    result:
        changed: true
        failed: false
        msg: All items completed
        results:
        -   ansible_loop_var: item
            changed: true
            changed_when_result: true
            cmd:
            - pkg
            - fetch
            - -y
            - -d
            - -o
            - /usr/local/www/pkgrepo
            - shells/bash
            - devel/git@default
            - archivers/gtar
            - ports-mgmt/pkg
            - ports-mgmt/portmaster
            - ports-mgmt/portupgrade
            - net/rsync
            - security/sudo
            - ftp/wget
            delta: '0:03:28.624208'
            end: '2026-08-27 12:05:25.529131'
            failed: false
            item:
                packages:
                - shells/bash
                - devel/git@default
                - archivers/gtar
                - ports-mgmt/pkg
                - ports-mgmt/portmaster
                - ports-mgmt/portupgrade
                - net/rsync
                - security/sudo
                - ftp/wget
                pkglist: minimal
            msg: ''
            rc: 0
            start: '2026-08-27 12:01:56.904923'
            stderr: ''
            stderr_lines: []
            stdout: |-
                [pkg-repo] Installing pkg-2.7.5...
                [pkg-repo] Extracting pkg-2.7.5: .......... done
                Updating FreeBSD-ports repository catalogue...
                FreeBSD-ports repository is up to date.
                Updating FreeBSD-ports-kmods repository catalogue...
                FreeBSD-ports-kmods repository is up to date.
                All repositories are up to date.
                Updating database digests format: . done
                The following packages will be fetched:

                New packages to be FETCHED:
                        abseil: 20250127.1_1 (1 MiB: 0.65% of the 167 MiB to download)
                        adcli: 0.9.2_3 (96 KiB: 0.06% of the 167 MiB to download)
                        avahi-app: 0.8_6 (374 KiB: 0.22% of the 167 MiB to download)
                        bash: 5.3.15 (2 MiB: 1.12% of the 167 MiB to download)
                        bind-tools: 9.20.27 (2 MiB: 0.93% of the 167 MiB to download)
                        brotli: 1.2.0,1 (388 KiB: 0.23% of the 167 MiB to download)
                        c-ares: 1.34.6 (223 KiB: 0.13% of the 167 MiB to download)
                        curl: 8.21.0 (2 MiB: 1.09% of the 167 MiB to download)
                        cyrus-sasl: 2.1.28_6 (1 MiB: 0.61% of the 167 MiB to download)
                        cyrus-sasl-gssapi: 2.1.28 (20 KiB: 0.01% of the 167 MiB to download)
                        db5: 5.3.28_10 (12 MiB: 7.48% of the 167 MiB to download)
                        dbus: 1.16.2_4,1 (317 KiB: 0.19% of the 167 MiB to download)
                        dbus-glib: 0.114 (176 KiB: 0.10% of the 167 MiB to download)
                        ding-libs: 0.7.0 (106 KiB: 0.06% of the 167 MiB to download)
                        duktape-lib: 2.7.0_1 (252 KiB: 0.15% of the 167 MiB to download)
                        expat: 2.8.2 (131 KiB: 0.08% of the 167 MiB to download)
                        fstrm: 0.6.1_1 (69 KiB: 0.04% of the 167 MiB to download)
                        gamin: 0.1.10_10 (56 KiB: 0.03% of the 167 MiB to download)
                        gdbm: 1.26 (252 KiB: 0.15% of the 167 MiB to download)
                        gettext-runtime: 1.0_1 (299 KiB: 0.17% of the 167 MiB to download)
                        git: 2.54.0 (9 MiB: 5.36% of the 167 MiB to download)
                        glib: 2.86.4,2 (11 MiB: 6.30% of the 167 MiB to download)
                        gmp: 6.3.0 (504 KiB: 0.29% of the 167 MiB to download)
                        gnome_subr: 1.0 (2 KiB: 0.00% of the 167 MiB to download)
                        gnutls: 3.8.13 (3 MiB: 1.62% of the 167 MiB to download)
                        gtar: 1.35_1 (775 KiB: 0.45% of the 167 MiB to download)
                        indexinfo: 0.3.1_1 (6 KiB: 0.00% of the 167 MiB to download)
                        jansson: 2.15.1_1 (63 KiB: 0.04% of the 167 MiB to download)
                        jose: 15 (112 KiB: 0.07% of the 167 MiB to download)
                        jsoncpp: 1.9.6_1 (132 KiB: 0.08% of the 167 MiB to download)
                        krb5: 1.22.2_3 (4 MiB: 2.53% of the 167 MiB to download)
                        ldb25: 2.5.3_2 (191 KiB: 0.11% of the 167 MiB to download)
                        libICE: 1.1.2,1 (98 KiB: 0.06% of the 167 MiB to download)
                        libSM: 1.2.6,1 (26 KiB: 0.02% of the 167 MiB to download)
                        libX11: 1.8.13_1,1 (2 MiB: 1.00% of the 167 MiB to download)
                        libXau: 1.0.12 (12 KiB: 0.01% of the 167 MiB to download)
                        libXdmcp: 1.1.5 (16 KiB: 0.01% of the 167 MiB to download)
                        libarchive: 3.8.7,1 (539 KiB: 0.32% of the 167 MiB to download)
                        libcbor: 0.14.0 (84 KiB: 0.05% of the 167 MiB to download)
                        libdaemon: 0.14_1 (35 KiB: 0.02% of the 167 MiB to download)
                        libedit: 3.1.20260512,1 (155 KiB: 0.09% of the 167 MiB to download)
                        libevent: 2.1.13 (351 KiB: 0.21% of the 167 MiB to download)
                        libffi: 3.6.0 (50 KiB: 0.03% of the 167 MiB to download)
                        libfido2: 1.17.0 (269 KiB: 0.16% of the 167 MiB to download)
                        libgcrypt: 1.12.2 (1 MiB: 0.71% of the 167 MiB to download)
                        libgpg-error: 1.61 (393 KiB: 0.23% of the 167 MiB to download)
                        libiconv: 1.18_1 (741 KiB: 0.43% of the 167 MiB to download)
                        libidn2: 2.3.8 (161 KiB: 0.09% of the 167 MiB to download)
                        libinotify: 20240724_3 (27 KiB: 0.02% of the 167 MiB to download)
                        liblz4: 1.10.0_2,1 (178 KiB: 0.10% of the 167 MiB to download)
                        libnghttp2: 1.69.0 (140 KiB: 0.08% of the 167 MiB to download)
                        libpsl: 0.22.0 (67 KiB: 0.04% of the 167 MiB to download)
                        libssh2: 1.11.1_1,3 (244 KiB: 0.14% of the 167 MiB to download)
                        libsunacl: 1.0.1_1 (8 KiB: 0.00% of the 167 MiB to download)
                        libtasn1: 4.21.0 (178 KiB: 0.10% of the 167 MiB to download)
                        libunistring: 1.4.2 (743 KiB: 0.44% of the 167 MiB to download)
                        libunwind: 20250904 (210 KiB: 0.12% of the 167 MiB to download)
                        liburcu: 0.15.3_1 (171 KiB: 0.10% of the 167 MiB to download)
                        libuuid: 2.42.2 (49 KiB: 0.03% of the 167 MiB to download)
                        libuv: 1.52.1 (143 KiB: 0.08% of the 167 MiB to download)
                        libxcb: 1.17.0 (1 MiB: 0.65% of the 167 MiB to download)
                        libxml2: 2.15.3 (908 KiB: 0.53% of the 167 MiB to download)
                        libyaml: 0.2.5 (77 KiB: 0.05% of the 167 MiB to download)
                        lmdb0: 0.9.35 (113 KiB: 0.07% of the 167 MiB to download)
                        mpdecimal: 4.0.1 (157 KiB: 0.09% of the 167 MiB to download)
                        nettle: 3.10.2 (2 MiB: 1.00% of the 167 MiB to download)
                        openldap26-client: 2.6.13 (1 MiB: 0.64% of the 167 MiB to download)
                        p11-kit: 0.26.2 (709 KiB: 0.41% of the 167 MiB to download)
                        p5-Authen-SASL: 2.1900 (44 KiB: 0.03% of the 167 MiB to download)
                        p5-Crypt-URandom: 0.54 (17 KiB: 0.01% of the 167 MiB to download)
                        p5-Digest-HMAC: 1.05 (15 KiB: 0.01% of the 167 MiB to download)
                        p5-Error: 0.17030 (27 KiB: 0.02% of the 167 MiB to download)
                        p5-IO-Socket-SSL: 2.099 (198 KiB: 0.12% of the 167 MiB to download)
                        p5-MIME-Base32: 1.303 (8 KiB: 0.00% of the 167 MiB to download)
                        p5-MIME-Base64: 3.16 (22 KiB: 0.01% of the 167 MiB to download)
                        p5-Mozilla-CA: 20260813 (106 KiB: 0.06% of the 167 MiB to download)
                        p5-Net-SSLeay: 1.94 (279 KiB: 0.16% of the 167 MiB to download)
                        p5-URI: 5.34 (103 KiB: 0.06% of the 167 MiB to download)
                        pcre2: 10.47_1 (1 MiB: 0.86% of the 167 MiB to download)
                        perl5: 5.42.3 (16 MiB: 9.53% of the 167 MiB to download)
                        pkg: 2.7.5 (6 MiB: 3.60% of the 167 MiB to download)
                        polkit: 127 (176 KiB: 0.10% of the 167 MiB to download)
                        popt: 1.19_1 (72 KiB: 0.04% of the 167 MiB to download)
                        portmaster: 3.35 (43 KiB: 0.02% of the 167 MiB to download)
                        portupgrade: 2.4.16_4,2 (94 KiB: 0.05% of the 167 MiB to download)
                        protobuf: 29.6,1 (3 MiB: 1.52% of the 167 MiB to download)
                        protobuf-c: 1.5.1_4 (203 KiB: 0.12% of the 167 MiB to download)
                        py312-aioquic: 1.3.0_1 (228 KiB: 0.13% of the 167 MiB to download)
                        py312-anyio: 4.14.1 (274 KiB: 0.16% of the 167 MiB to download)
                        py312-async_generator: 1.10_1 (49 KiB: 0.03% of the 167 MiB to download)
                        py312-attrs: 26.1.0 (109 KiB: 0.06% of the 167 MiB to download)
                        py312-certifi: 2026.6.17 (130 KiB: 0.08% of the 167 MiB to download)
                        py312-cffi: 2.0.0 (276 KiB: 0.16% of the 167 MiB to download)
                        py312-cryptography: 48.0.1,1 (2 MiB: 0.94% of the 167 MiB to download)
                        py312-dnspython: 2.8.0_1,1 (529 KiB: 0.31% of the 167 MiB to download)
                        py312-h11: 0.16.0 (56 KiB: 0.03% of the 167 MiB to download)
                        py312-h2: 4.3.0 (104 KiB: 0.06% of the 167 MiB to download)
                        py312-hpack: 4.2.0 (60 KiB: 0.04% of the 167 MiB to download)
                        py312-httpcore: 1.0.9 (115 KiB: 0.07% of the 167 MiB to download)
                        py312-httpx: 0.28.1_2 (156 KiB: 0.09% of the 167 MiB to download)
                        py312-hyperframe: 6.1.0 (25 KiB: 0.01% of the 167 MiB to download)
                        py312-idna: 3.18 (84 KiB: 0.05% of the 167 MiB to download)
                        py312-markdown: 3.10.2 (180 KiB: 0.11% of the 167 MiB to download)
                        py312-outcome: 1.3.0_2 (14 KiB: 0.01% of the 167 MiB to download)
                        py312-packaging: 26.2 (190 KiB: 0.11% of the 167 MiB to download)
                        py312-pycparser: 2.23 (225 KiB: 0.13% of the 167 MiB to download)
                        py312-pylsqpack: 0.3.24 (83 KiB: 0.05% of the 167 MiB to download)
                        py312-pyopenssl: 26.2.0,1 (100 KiB: 0.06% of the 167 MiB to download)
                        py312-service-identity: 26.1.0 (20 KiB: 0.01% of the 167 MiB to download)
                        py312-sniffio: 1.3.1 (13 KiB: 0.01% of the 167 MiB to download)
                        py312-socksio: 1.0.0_1 (23 KiB: 0.01% of the 167 MiB to download)
                        py312-sortedcontainers: 2.4.0_1 (49 KiB: 0.03% of the 167 MiB to download)
                        py312-trio: 0.33.0 (1 MiB: 0.62% of the 167 MiB to download)
                        py312-truststore: 0.10.4 (37 KiB: 0.02% of the 167 MiB to download)
                        py312-typing-extensions: 4.15.0 (87 KiB: 0.05% of the 167 MiB to download)
                        python312: 3.12.14 (37 MiB: 21.88% of the 167 MiB to download)
                        readline: 8.3.3 (478 KiB: 0.28% of the 167 MiB to download)
                        realmd: 0.17.1_1 (231 KiB: 0.14% of the 167 MiB to download)
                        rsync: 3.4.4_1 (414 KiB: 0.24% of the 167 MiB to download)
                        ruby: 3.4.9_2,1 (9 MiB: 5.63% of the 167 MiB to download)
                        ruby34-bdb: 0.6.6_9 (422 KiB: 0.25% of the 167 MiB to download)
                        samba416: 4.16.11_12 (15 MiB: 8.93% of the 167 MiB to download)
                        sssd2: 2.13.1 (2 MiB: 1.17% of the 167 MiB to download)
                        sudo: 1.9.17p2_2 (2 MiB: 1.05% of the 167 MiB to download)
                        sudo-sssd: 1.9.17p2_2 (2 MiB: 1.06% of the 167 MiB to download)
                        talloc: 2.4.1_1 (49 KiB: 0.03% of the 167 MiB to download)
                        tdb: 1.4.9_1,1 (84 KiB: 0.05% of the 167 MiB to download)
                        tevent: 0.15.0_1 (59 KiB: 0.03% of the 167 MiB to download)
                        utf8proc: 2.11.3 (84 KiB: 0.05% of the 167 MiB to download)
                        wget: 1.25.0 (777 KiB: 0.45% of the 167 MiB to download)
                        xorgproto: 2025.1 (237 KiB: 0.14% of the 167 MiB to download)
                        xxhash: 0.8.3 (103 KiB: 0.06% of the 167 MiB to download)
                        zstd: 1.5.7_2 (511 KiB: 0.30% of the 167 MiB to download)

                Number of packages to be fetched: 133

                The process will require 167 MiB more space.
                167 MiB to be downloaded.
                [pkg-repo] Fetching duktape-lib-2.7.0_1: .......... done
                [pkg-repo] Fetching wget-1.25.0: .......... done
                [pkg-repo] Fetching p5-Net-SSLeay-1.94: .......... done
                [pkg-repo] Fetching libxcb-1.17.0: .......... done
                [pkg-repo] Fetching py312-typing-extensions-4.15.0: .......... done
                [pkg-repo] Fetching mpdecimal-4.0.1: .......... done
                [pkg-repo] Fetching py312-cryptography-48.0.1,1: .......... done
                [pkg-repo] Fetching py312-h11-0.16.0: ........ done
                [pkg-repo] Fetching libidn2-2.3.8: .......... done
                [pkg-repo] Fetching p5-URI-5.34: .......... done
                [pkg-repo] Fetching py312-truststore-0.10.4: ..... done
                [pkg-repo] Fetching libuv-1.52.1: .......... done
                [pkg-repo] Fetching samba416-4.16.11_12: .......... done
                [pkg-repo] Fetching libyaml-0.2.5: .......... done
                [pkg-repo] Fetching nettle-3.10.2: .......... done
                [pkg-repo] Fetching py312-hpack-4.2.0: ........ done
                [pkg-repo] Fetching p5-Crypt-URandom-0.54: ... done
                [pkg-repo] Fetching libunistring-1.4.2: .......... done
                [pkg-repo] Fetching python312-3.12.14: .......... done
                [pkg-repo] Fetching polkit-127: .......... done
                [pkg-repo] Fetching py312-idna-3.18: .......... done
                [pkg-repo] Fetching libarchive-3.8.7,1: .......... done
                [pkg-repo] Fetching py312-outcome-1.3.0_2: .. done
                [pkg-repo] Fetching libiconv-1.18_1: .......... done
                [pkg-repo] Fetching p5-Error-0.17030: .... done
                [pkg-repo] Fetching libcbor-0.14.0: .......... done
                [pkg-repo] Fetching git-2.54.0: .......... done
                [pkg-repo] Fetching libtasn1-4.21.0: .......... done
                [pkg-repo] Fetching py312-pylsqpack-0.3.24: .......... done
                [pkg-repo] Fetching p5-Authen-SASL-2.1900: ...... done
                [pkg-repo] Fetching portupgrade-2.4.16_4,2: .......... done
                [pkg-repo] Fetching cyrus-sasl-gssapi-2.1.28: ... done
                [pkg-repo] Fetching gnome_subr-1.0: . done
                [pkg-repo] Fetching krb5-1.22.2_3: .......... done
                [pkg-repo] Fetching libxml2-2.15.3: .......... done
                [pkg-repo] Fetching py312-service-identity-26.1.0: ... done
                [pkg-repo] Fetching libnghttp2-1.69.0: .......... done
                [pkg-repo] Fetching py312-anyio-4.14.1: .......... done
                [pkg-repo] Fetching tdb-1.4.9_1,1: .......... done
                [pkg-repo] Fetching py312-pycparser-2.23: .......... done
                [pkg-repo] Fetching ruby-3.4.9_2,1: .......... done
                [pkg-repo] Fetching gnutls-3.8.13: .......... done
                [pkg-repo] Fetching db5-5.3.28_10: .......... done
                [pkg-repo] Fetching bind-tools-9.20.27: .......... done
                [pkg-repo] Fetching libX11-1.8.13_1,1: .......... done
                [pkg-repo] Fetching py312-cffi-2.0.0: .......... done
                [pkg-repo] Fetching xorgproto-2025.1: .......... done
                [pkg-repo] Fetching liburcu-0.15.3_1: .......... done
                [pkg-repo] Fetching xxhash-0.8.3: .......... done
                [pkg-repo] Fetching ldb25-2.5.3_2: .......... done
                [pkg-repo] Fetching p5-Digest-HMAC-1.05: .. done
                [pkg-repo] Fetching libpsl-0.22.0: ......... done
                [pkg-repo] Fetching protobuf-c-1.5.1_4: .......... done
                [pkg-repo] Fetching bash-5.3.15: .......... done
                [pkg-repo] Fetching libfido2-1.17.0: .......... done
                [pkg-repo] Fetching utf8proc-2.11.3: .......... done
                [pkg-repo] Fetching py312-markdown-3.10.2: .......... done
                [pkg-repo] Fetching py312-dnspython-2.8.0_1,1: .......... done
                [pkg-repo] Fetching py312-async_generator-1.10_1: ....... done
                [pkg-repo] Fetching libevent-2.1.13: .......... done
                [pkg-repo] Fetching libinotify-20240724_3: .... done
                [pkg-repo] Fetching gdbm-1.26: .......... done
                [pkg-repo] Fetching py312-trio-0.33.0: .......... done
                [pkg-repo] Fetching avahi-app-0.8_6: .......... done
                [pkg-repo] Fetching abseil-20250127.1_1: .......... done
                [pkg-repo] Fetching p5-IO-Socket-SSL-2.099: .......... done
                [pkg-repo] Fetching p5-MIME-Base32-1.303: .. done
                [pkg-repo] Fetching py312-aioquic-1.3.0_1: .......... done
                [pkg-repo] Fetching dbus-1.16.2_4,1: .......... done
                [pkg-repo] Fetching libedit-3.1.20260512,1: .......... done
                [pkg-repo] Fetching sssd2-2.13.1: .......... done
                [pkg-repo] Fetching talloc-2.4.1_1: ....... done
                [pkg-repo] Fetching popt-1.19_1: ......... done
                [pkg-repo] Fetching jsoncpp-1.9.6_1: .......... done
                [pkg-repo] Fetching rsync-3.4.4_1: .......... done
                [pkg-repo] Fetching liblz4-1.10.0_2,1: .......... done
                [pkg-repo] Fetching libgcrypt-1.12.2: .......... done
                [pkg-repo] Fetching fstrm-0.6.1_1: ......... done
                [pkg-repo] Fetching py312-pyopenssl-26.2.0,1: .......... done
                [pkg-repo] Fetching py312-httpcore-1.0.9: .......... done
                [pkg-repo] Fetching libunwind-20250904: .......... done
                [pkg-repo] Fetching zstd-1.5.7_2: .......... done
                [pkg-repo] Fetching py312-socksio-1.0.0_1: ... done
                [pkg-repo] Fetching pcre2-10.47_1: .......... done
                [pkg-repo] Fetching libgpg-error-1.61: .......... done
                [pkg-repo] Fetching brotli-1.2.0,1: .......... done
                [pkg-repo] Fetching curl-8.21.0: .......... done
                [pkg-repo] Fetching gmp-6.3.0: .......... done
                [pkg-repo] Fetching jose-15: .......... done
                [pkg-repo] Fetching libuuid-2.42.2: ....... done
                [pkg-repo] Fetching py312-h2-4.3.0: .......... done
                [pkg-repo] Fetching gettext-runtime-1.0_1: .......... done
                [pkg-repo] Fetching jansson-2.15.1_1: ........ done
                [pkg-repo] Fetching ruby34-bdb-0.6.6_9: .......... done
                [pkg-repo] Fetching py312-attrs-26.1.0: .......... done
                [pkg-repo] Fetching py312-sniffio-1.3.1: .. done
                [pkg-repo] Fetching lmdb0-0.9.35: .......... done
                [pkg-repo] Fetching p11-kit-0.26.2: .......... done
                [pkg-repo] Fetching dbus-glib-0.114: .......... done
                [pkg-repo] Fetching pkg-2.7.5: .......... done
                [pkg-repo] Fetching indexinfo-0.3.1_1: . done
                [pkg-repo] Fetching cyrus-sasl-2.1.28_6: .......... done
                [pkg-repo] Fetching p5-MIME-Base64-3.16: ... done
                [pkg-repo] Fetching libXau-1.0.12: .. done
                [pkg-repo] Fetching libICE-1.1.2,1: .......... done
                [pkg-repo] Fetching py312-sortedcontainers-2.4.0_1: ....... done
                [pkg-repo] Fetching ding-libs-0.7.0: .......... done
                [pkg-repo] Fetching realmd-0.17.1_1: .......... done
                [pkg-repo] Fetching c-ares-1.34.6: .......... done
                [pkg-repo] Fetching adcli-0.9.2_3: .......... done
                [pkg-repo] Fetching py312-certifi-2026.6.17: .......... done
                [pkg-repo] Fetching py312-packaging-26.2: .......... done
                [pkg-repo] Fetching openldap26-client-2.6.13: .......... done
                [pkg-repo] Fetching libSM-1.2.6,1: .... done
                [pkg-repo] Fetching py312-httpx-0.28.1_2: .......... done
                [pkg-repo] Fetching protobuf-29.6,1: .......... done
                [pkg-repo] Fetching glib-2.86.4,2: .......... done
                [pkg-repo] Fetching tevent-0.15.0_1: ........ done
                [pkg-repo] Fetching perl5-5.42.3: .......... done
                [pkg-repo] Fetching gtar-1.35_1: .......... done
                [pkg-repo] Fetching sudo-sssd-1.9.17p2_2: .......... done
                [pkg-repo] Fetching py312-hyperframe-6.1.0: .... done
                [pkg-repo] Fetching p5-Mozilla-CA-20260813: .......... done
                [pkg-repo] Fetching libffi-3.6.0: ....... done
                [pkg-repo] Fetching portmaster-3.35: ...... done
                [pkg-repo] Fetching sudo-1.9.17p2_2: .......... done
                [pkg-repo] Fetching readline-8.3.3: .......... done
                [pkg-repo] Fetching libdaemon-0.14_1: ..... done
                [pkg-repo] Fetching libssh2-1.11.1_1,3: .......... done
                [pkg-repo] Fetching libXdmcp-1.1.5: ... done
                [pkg-repo] Fetching expat-2.8.2: .......... done
                [pkg-repo] Fetching libsunacl-1.0.1_1: . done
                [pkg-repo] Fetching gamin-0.1.10_10: ....... done
            stdout_lines:
            - '[pkg-repo] Installing pkg-2.7.5...'
            - '[pkg-repo] Extracting pkg-2.7.5: .......... done'
            - Updating FreeBSD-ports repository catalogue...
            - FreeBSD-ports repository is up to date.
            - Updating FreeBSD-ports-kmods repository catalogue...
            - FreeBSD-ports-kmods repository is up to date.
            - All repositories are up to date.
            - 'Updating database digests format: . done'
            - 'The following packages will be fetched:'
            - ''
            - 'New packages to be FETCHED:'
            - "\tabseil: 20250127.1_1 (1 MiB: 0.65% of the 167 MiB to download)"
            - "\tadcli: 0.9.2_3 (96 KiB: 0.06% of the 167 MiB to download)"
            - "\tavahi-app: 0.8_6 (374 KiB: 0.22% of the 167 MiB to download)"
            - "\tbash: 5.3.15 (2 MiB: 1.12% of the 167 MiB to download)"
            - "\tbind-tools: 9.20.27 (2 MiB: 0.93% of the 167 MiB to download)"
            - "\tbrotli: 1.2.0,1 (388 KiB: 0.23% of the 167 MiB to download)"
            - "\tc-ares: 1.34.6 (223 KiB: 0.13% of the 167 MiB to download)"
            - "\tcurl: 8.21.0 (2 MiB: 1.09% of the 167 MiB to download)"
            - "\tcyrus-sasl: 2.1.28_6 (1 MiB: 0.61% of the 167 MiB to download)"
            - "\tcyrus-sasl-gssapi: 2.1.28 (20 KiB: 0.01% of the 167 MiB to download)"
            - "\tdb5: 5.3.28_10 (12 MiB: 7.48% of the 167 MiB to download)"
            - "\tdbus: 1.16.2_4,1 (317 KiB: 0.19% of the 167 MiB to download)"
            - "\tdbus-glib: 0.114 (176 KiB: 0.10% of the 167 MiB to download)"
            - "\tding-libs: 0.7.0 (106 KiB: 0.06% of the 167 MiB to download)"
            - "\tduktape-lib: 2.7.0_1 (252 KiB: 0.15% of the 167 MiB to download)"
            - "\texpat: 2.8.2 (131 KiB: 0.08% of the 167 MiB to download)"
            - "\tfstrm: 0.6.1_1 (69 KiB: 0.04% of the 167 MiB to download)"
            - "\tgamin: 0.1.10_10 (56 KiB: 0.03% of the 167 MiB to download)"
            - "\tgdbm: 1.26 (252 KiB: 0.15% of the 167 MiB to download)"
            - "\tgettext-runtime: 1.0_1 (299 KiB: 0.17% of the 167 MiB to download)"
            - "\tgit: 2.54.0 (9 MiB: 5.36% of the 167 MiB to download)"
            - "\tglib: 2.86.4,2 (11 MiB: 6.30% of the 167 MiB to download)"
            - "\tgmp: 6.3.0 (504 KiB: 0.29% of the 167 MiB to download)"
            - "\tgnome_subr: 1.0 (2 KiB: 0.00% of the 167 MiB to download)"
            - "\tgnutls: 3.8.13 (3 MiB: 1.62% of the 167 MiB to download)"
            - "\tgtar: 1.35_1 (775 KiB: 0.45% of the 167 MiB to download)"
            - "\tindexinfo: 0.3.1_1 (6 KiB: 0.00% of the 167 MiB to download)"
            - "\tjansson: 2.15.1_1 (63 KiB: 0.04% of the 167 MiB to download)"
            - "\tjose: 15 (112 KiB: 0.07% of the 167 MiB to download)"
            - "\tjsoncpp: 1.9.6_1 (132 KiB: 0.08% of the 167 MiB to download)"
            - "\tkrb5: 1.22.2_3 (4 MiB: 2.53% of the 167 MiB to download)"
            - "\tldb25: 2.5.3_2 (191 KiB: 0.11% of the 167 MiB to download)"
            - "\tlibICE: 1.1.2,1 (98 KiB: 0.06% of the 167 MiB to download)"
            - "\tlibSM: 1.2.6,1 (26 KiB: 0.02% of the 167 MiB to download)"
            - "\tlibX11: 1.8.13_1,1 (2 MiB: 1.00% of the 167 MiB to download)"
            - "\tlibXau: 1.0.12 (12 KiB: 0.01% of the 167 MiB to download)"
            - "\tlibXdmcp: 1.1.5 (16 KiB: 0.01% of the 167 MiB to download)"
            - "\tlibarchive: 3.8.7,1 (539 KiB: 0.32% of the 167 MiB to download)"
            - "\tlibcbor: 0.14.0 (84 KiB: 0.05% of the 167 MiB to download)"
            - "\tlibdaemon: 0.14_1 (35 KiB: 0.02% of the 167 MiB to download)"
            - "\tlibedit: 3.1.20260512,1 (155 KiB: 0.09% of the 167 MiB to download)"
            - "\tlibevent: 2.1.13 (351 KiB: 0.21% of the 167 MiB to download)"
            - "\tlibffi: 3.6.0 (50 KiB: 0.03% of the 167 MiB to download)"
            - "\tlibfido2: 1.17.0 (269 KiB: 0.16% of the 167 MiB to download)"
            - "\tlibgcrypt: 1.12.2 (1 MiB: 0.71% of the 167 MiB to download)"
            - "\tlibgpg-error: 1.61 (393 KiB: 0.23% of the 167 MiB to download)"
            - "\tlibiconv: 1.18_1 (741 KiB: 0.43% of the 167 MiB to download)"
            - "\tlibidn2: 2.3.8 (161 KiB: 0.09% of the 167 MiB to download)"
            - "\tlibinotify: 20240724_3 (27 KiB: 0.02% of the 167 MiB to download)"
            - "\tliblz4: 1.10.0_2,1 (178 KiB: 0.10% of the 167 MiB to download)"
            - "\tlibnghttp2: 1.69.0 (140 KiB: 0.08% of the 167 MiB to download)"
            - "\tlibpsl: 0.22.0 (67 KiB: 0.04% of the 167 MiB to download)"
            - "\tlibssh2: 1.11.1_1,3 (244 KiB: 0.14% of the 167 MiB to download)"
            - "\tlibsunacl: 1.0.1_1 (8 KiB: 0.00% of the 167 MiB to download)"
            - "\tlibtasn1: 4.21.0 (178 KiB: 0.10% of the 167 MiB to download)"
            - "\tlibunistring: 1.4.2 (743 KiB: 0.44% of the 167 MiB to download)"
            - "\tlibunwind: 20250904 (210 KiB: 0.12% of the 167 MiB to download)"
            - "\tliburcu: 0.15.3_1 (171 KiB: 0.10% of the 167 MiB to download)"
            - "\tlibuuid: 2.42.2 (49 KiB: 0.03% of the 167 MiB to download)"
            - "\tlibuv: 1.52.1 (143 KiB: 0.08% of the 167 MiB to download)"
            - "\tlibxcb: 1.17.0 (1 MiB: 0.65% of the 167 MiB to download)"
            - "\tlibxml2: 2.15.3 (908 KiB: 0.53% of the 167 MiB to download)"
            - "\tlibyaml: 0.2.5 (77 KiB: 0.05% of the 167 MiB to download)"
            - "\tlmdb0: 0.9.35 (113 KiB: 0.07% of the 167 MiB to download)"
            - "\tmpdecimal: 4.0.1 (157 KiB: 0.09% of the 167 MiB to download)"
            - "\tnettle: 3.10.2 (2 MiB: 1.00% of the 167 MiB to download)"
            - "\topenldap26-client: 2.6.13 (1 MiB: 0.64% of the 167 MiB to download)"
            - "\tp11-kit: 0.26.2 (709 KiB: 0.41% of the 167 MiB to download)"
            - "\tp5-Authen-SASL: 2.1900 (44 KiB: 0.03% of the 167 MiB to download)"
            - "\tp5-Crypt-URandom: 0.54 (17 KiB: 0.01% of the 167 MiB to download)"
            - "\tp5-Digest-HMAC: 1.05 (15 KiB: 0.01% of the 167 MiB to download)"
            - "\tp5-Error: 0.17030 (27 KiB: 0.02% of the 167 MiB to download)"
            - "\tp5-IO-Socket-SSL: 2.099 (198 KiB: 0.12% of the 167 MiB to download)"
            - "\tp5-MIME-Base32: 1.303 (8 KiB: 0.00% of the 167 MiB to download)"
            - "\tp5-MIME-Base64: 3.16 (22 KiB: 0.01% of the 167 MiB to download)"
            - "\tp5-Mozilla-CA: 20260813 (106 KiB: 0.06% of the 167 MiB to download)"
            - "\tp5-Net-SSLeay: 1.94 (279 KiB: 0.16% of the 167 MiB to download)"
            - "\tp5-URI: 5.34 (103 KiB: 0.06% of the 167 MiB to download)"
            - "\tpcre2: 10.47_1 (1 MiB: 0.86% of the 167 MiB to download)"
            - "\tperl5: 5.42.3 (16 MiB: 9.53% of the 167 MiB to download)"
            - "\tpkg: 2.7.5 (6 MiB: 3.60% of the 167 MiB to download)"
            - "\tpolkit: 127 (176 KiB: 0.10% of the 167 MiB to download)"
            - "\tpopt: 1.19_1 (72 KiB: 0.04% of the 167 MiB to download)"
            - "\tportmaster: 3.35 (43 KiB: 0.02% of the 167 MiB to download)"
            - "\tportupgrade: 2.4.16_4,2 (94 KiB: 0.05% of the 167 MiB to download)"
            - "\tprotobuf: 29.6,1 (3 MiB: 1.52% of the 167 MiB to download)"
            - "\tprotobuf-c: 1.5.1_4 (203 KiB: 0.12% of the 167 MiB to download)"
            - "\tpy312-aioquic: 1.3.0_1 (228 KiB: 0.13% of the 167 MiB to download)"
            - "\tpy312-anyio: 4.14.1 (274 KiB: 0.16% of the 167 MiB to download)"
            - "\tpy312-async_generator: 1.10_1 (49 KiB: 0.03% of the 167 MiB to download)"
            - "\tpy312-attrs: 26.1.0 (109 KiB: 0.06% of the 167 MiB to download)"
            - "\tpy312-certifi: 2026.6.17 (130 KiB: 0.08% of the 167 MiB to download)"
            - "\tpy312-cffi: 2.0.0 (276 KiB: 0.16% of the 167 MiB to download)"
            - "\tpy312-cryptography: 48.0.1,1 (2 MiB: 0.94% of the 167 MiB to download)"
            - "\tpy312-dnspython: 2.8.0_1,1 (529 KiB: 0.31% of the 167 MiB to download)"
            - "\tpy312-h11: 0.16.0 (56 KiB: 0.03% of the 167 MiB to download)"
            - "\tpy312-h2: 4.3.0 (104 KiB: 0.06% of the 167 MiB to download)"
            - "\tpy312-hpack: 4.2.0 (60 KiB: 0.04% of the 167 MiB to download)"
            - "\tpy312-httpcore: 1.0.9 (115 KiB: 0.07% of the 167 MiB to download)"
            - "\tpy312-httpx: 0.28.1_2 (156 KiB: 0.09% of the 167 MiB to download)"
            - "\tpy312-hyperframe: 6.1.0 (25 KiB: 0.01% of the 167 MiB to download)"
            - "\tpy312-idna: 3.18 (84 KiB: 0.05% of the 167 MiB to download)"
            - "\tpy312-markdown: 3.10.2 (180 KiB: 0.11% of the 167 MiB to download)"
            - "\tpy312-outcome: 1.3.0_2 (14 KiB: 0.01% of the 167 MiB to download)"
            - "\tpy312-packaging: 26.2 (190 KiB: 0.11% of the 167 MiB to download)"
            - "\tpy312-pycparser: 2.23 (225 KiB: 0.13% of the 167 MiB to download)"
            - "\tpy312-pylsqpack: 0.3.24 (83 KiB: 0.05% of the 167 MiB to download)"
            - "\tpy312-pyopenssl: 26.2.0,1 (100 KiB: 0.06% of the 167 MiB to download)"
            - "\tpy312-service-identity: 26.1.0 (20 KiB: 0.01% of the 167 MiB to download)"
            - "\tpy312-sniffio: 1.3.1 (13 KiB: 0.01% of the 167 MiB to download)"
            - "\tpy312-socksio: 1.0.0_1 (23 KiB: 0.01% of the 167 MiB to download)"
            - "\tpy312-sortedcontainers: 2.4.0_1 (49 KiB: 0.03% of the 167 MiB to download)"
            - "\tpy312-trio: 0.33.0 (1 MiB: 0.62% of the 167 MiB to download)"
            - "\tpy312-truststore: 0.10.4 (37 KiB: 0.02% of the 167 MiB to download)"
            - "\tpy312-typing-extensions: 4.15.0 (87 KiB: 0.05% of the 167 MiB to download)"
            - "\tpython312: 3.12.14 (37 MiB: 21.88% of the 167 MiB to download)"
            - "\treadline: 8.3.3 (478 KiB: 0.28% of the 167 MiB to download)"
            - "\trealmd: 0.17.1_1 (231 KiB: 0.14% of the 167 MiB to download)"
            - "\trsync: 3.4.4_1 (414 KiB: 0.24% of the 167 MiB to download)"
            - "\truby: 3.4.9_2,1 (9 MiB: 5.63% of the 167 MiB to download)"
            - "\truby34-bdb: 0.6.6_9 (422 KiB: 0.25% of the 167 MiB to download)"
            - "\tsamba416: 4.16.11_12 (15 MiB: 8.93% of the 167 MiB to download)"
            - "\tsssd2: 2.13.1 (2 MiB: 1.17% of the 167 MiB to download)"
            - "\tsudo: 1.9.17p2_2 (2 MiB: 1.05% of the 167 MiB to download)"
            - "\tsudo-sssd: 1.9.17p2_2 (2 MiB: 1.06% of the 167 MiB to download)"
            - "\ttalloc: 2.4.1_1 (49 KiB: 0.03% of the 167 MiB to download)"
            - "\ttdb: 1.4.9_1,1 (84 KiB: 0.05% of the 167 MiB to download)"
            - "\ttevent: 0.15.0_1 (59 KiB: 0.03% of the 167 MiB to download)"
            - "\tutf8proc: 2.11.3 (84 KiB: 0.05% of the 167 MiB to download)"
            - "\twget: 1.25.0 (777 KiB: 0.45% of the 167 MiB to download)"
            - "\txorgproto: 2025.1 (237 KiB: 0.14% of the 167 MiB to download)"
            - "\txxhash: 0.8.3 (103 KiB: 0.06% of the 167 MiB to download)"
            - "\tzstd: 1.5.7_2 (511 KiB: 0.30% of the 167 MiB to download)"
            - ''
            - 'Number of packages to be fetched: 133'
            - ''
            - The process will require 167 MiB more space.
            - 167 MiB to be downloaded.
            - '[pkg-repo] Fetching duktape-lib-2.7.0_1: .......... done'
            - '[pkg-repo] Fetching wget-1.25.0: .......... done'
            - '[pkg-repo] Fetching p5-Net-SSLeay-1.94: .......... done'
            - '[pkg-repo] Fetching libxcb-1.17.0: .......... done'
            - '[pkg-repo] Fetching py312-typing-extensions-4.15.0: .......... done'
            - '[pkg-repo] Fetching mpdecimal-4.0.1: .......... done'
            - '[pkg-repo] Fetching py312-cryptography-48.0.1,1: .......... done'
            - '[pkg-repo] Fetching py312-h11-0.16.0: ........ done'
            - '[pkg-repo] Fetching libidn2-2.3.8: .......... done'
            - '[pkg-repo] Fetching p5-URI-5.34: .......... done'
            - '[pkg-repo] Fetching py312-truststore-0.10.4: ..... done'
            - '[pkg-repo] Fetching libuv-1.52.1: .......... done'
            - '[pkg-repo] Fetching samba416-4.16.11_12: .......... done'
            - '[pkg-repo] Fetching libyaml-0.2.5: .......... done'
            - '[pkg-repo] Fetching nettle-3.10.2: .......... done'
            - '[pkg-repo] Fetching py312-hpack-4.2.0: ........ done'
            - '[pkg-repo] Fetching p5-Crypt-URandom-0.54: ... done'
            - '[pkg-repo] Fetching libunistring-1.4.2: .......... done'
            - '[pkg-repo] Fetching python312-3.12.14: .......... done'
            - '[pkg-repo] Fetching polkit-127: .......... done'
            - '[pkg-repo] Fetching py312-idna-3.18: .......... done'
            - '[pkg-repo] Fetching libarchive-3.8.7,1: .......... done'
            - '[pkg-repo] Fetching py312-outcome-1.3.0_2: .. done'
            - '[pkg-repo] Fetching libiconv-1.18_1: .......... done'
            - '[pkg-repo] Fetching p5-Error-0.17030: .... done'
            - '[pkg-repo] Fetching libcbor-0.14.0: .......... done'
            - '[pkg-repo] Fetching git-2.54.0: .......... done'
            - '[pkg-repo] Fetching libtasn1-4.21.0: .......... done'
            - '[pkg-repo] Fetching py312-pylsqpack-0.3.24: .......... done'
            - '[pkg-repo] Fetching p5-Authen-SASL-2.1900: ...... done'
            - '[pkg-repo] Fetching portupgrade-2.4.16_4,2: .......... done'
            - '[pkg-repo] Fetching cyrus-sasl-gssapi-2.1.28: ... done'
            - '[pkg-repo] Fetching gnome_subr-1.0: . done'
            - '[pkg-repo] Fetching krb5-1.22.2_3: .......... done'
            - '[pkg-repo] Fetching libxml2-2.15.3: .......... done'
            - '[pkg-repo] Fetching py312-service-identity-26.1.0: ... done'
            - '[pkg-repo] Fetching libnghttp2-1.69.0: .......... done'
            - '[pkg-repo] Fetching py312-anyio-4.14.1: .......... done'
            - '[pkg-repo] Fetching tdb-1.4.9_1,1: .......... done'
            - '[pkg-repo] Fetching py312-pycparser-2.23: .......... done'
            - '[pkg-repo] Fetching ruby-3.4.9_2,1: .......... done'
            - '[pkg-repo] Fetching gnutls-3.8.13: .......... done'
            - '[pkg-repo] Fetching db5-5.3.28_10: .......... done'
            - '[pkg-repo] Fetching bind-tools-9.20.27: .......... done'
            - '[pkg-repo] Fetching libX11-1.8.13_1,1: .......... done'
            - '[pkg-repo] Fetching py312-cffi-2.0.0: .......... done'
            - '[pkg-repo] Fetching xorgproto-2025.1: .......... done'
            - '[pkg-repo] Fetching liburcu-0.15.3_1: .......... done'
            - '[pkg-repo] Fetching xxhash-0.8.3: .......... done'
            - '[pkg-repo] Fetching ldb25-2.5.3_2: .......... done'
            - '[pkg-repo] Fetching p5-Digest-HMAC-1.05: .. done'
            - '[pkg-repo] Fetching libpsl-0.22.0: ......... done'
            - '[pkg-repo] Fetching protobuf-c-1.5.1_4: .......... done'
            - '[pkg-repo] Fetching bash-5.3.15: .......... done'
            - '[pkg-repo] Fetching libfido2-1.17.0: .......... done'
            - '[pkg-repo] Fetching utf8proc-2.11.3: .......... done'
            - '[pkg-repo] Fetching py312-markdown-3.10.2: .......... done'
            - '[pkg-repo] Fetching py312-dnspython-2.8.0_1,1: .......... done'
            - '[pkg-repo] Fetching py312-async_generator-1.10_1: ....... done'
            - '[pkg-repo] Fetching libevent-2.1.13: .......... done'
            - '[pkg-repo] Fetching libinotify-20240724_3: .... done'
            - '[pkg-repo] Fetching gdbm-1.26: .......... done'
            - '[pkg-repo] Fetching py312-trio-0.33.0: .......... done'
            - '[pkg-repo] Fetching avahi-app-0.8_6: .......... done'
            - '[pkg-repo] Fetching abseil-20250127.1_1: .......... done'
            - '[pkg-repo] Fetching p5-IO-Socket-SSL-2.099: .......... done'
            - '[pkg-repo] Fetching p5-MIME-Base32-1.303: .. done'
            - '[pkg-repo] Fetching py312-aioquic-1.3.0_1: .......... done'
            - '[pkg-repo] Fetching dbus-1.16.2_4,1: .......... done'
            - '[pkg-repo] Fetching libedit-3.1.20260512,1: .......... done'
            - '[pkg-repo] Fetching sssd2-2.13.1: .......... done'
            - '[pkg-repo] Fetching talloc-2.4.1_1: ....... done'
            - '[pkg-repo] Fetching popt-1.19_1: ......... done'
            - '[pkg-repo] Fetching jsoncpp-1.9.6_1: .......... done'
            - '[pkg-repo] Fetching rsync-3.4.4_1: .......... done'
            - '[pkg-repo] Fetching liblz4-1.10.0_2,1: .......... done'
            - '[pkg-repo] Fetching libgcrypt-1.12.2: .......... done'
            - '[pkg-repo] Fetching fstrm-0.6.1_1: ......... done'
            - '[pkg-repo] Fetching py312-pyopenssl-26.2.0,1: .......... done'
            - '[pkg-repo] Fetching py312-httpcore-1.0.9: .......... done'
            - '[pkg-repo] Fetching libunwind-20250904: .......... done'
            - '[pkg-repo] Fetching zstd-1.5.7_2: .......... done'
            - '[pkg-repo] Fetching py312-socksio-1.0.0_1: ... done'
            - '[pkg-repo] Fetching pcre2-10.47_1: .......... done'
            - '[pkg-repo] Fetching libgpg-error-1.61: .......... done'
            - '[pkg-repo] Fetching brotli-1.2.0,1: .......... done'
            - '[pkg-repo] Fetching curl-8.21.0: .......... done'
            - '[pkg-repo] Fetching gmp-6.3.0: .......... done'
            - '[pkg-repo] Fetching jose-15: .......... done'
            - '[pkg-repo] Fetching libuuid-2.42.2: ....... done'
            - '[pkg-repo] Fetching py312-h2-4.3.0: .......... done'
            - '[pkg-repo] Fetching gettext-runtime-1.0_1: .......... done'
            - '[pkg-repo] Fetching jansson-2.15.1_1: ........ done'
            - '[pkg-repo] Fetching ruby34-bdb-0.6.6_9: .......... done'
            - '[pkg-repo] Fetching py312-attrs-26.1.0: .......... done'
            - '[pkg-repo] Fetching py312-sniffio-1.3.1: .. done'
            - '[pkg-repo] Fetching lmdb0-0.9.35: .......... done'
            - '[pkg-repo] Fetching p11-kit-0.26.2: .......... done'
            - '[pkg-repo] Fetching dbus-glib-0.114: .......... done'
            - '[pkg-repo] Fetching pkg-2.7.5: .......... done'
            - '[pkg-repo] Fetching indexinfo-0.3.1_1: . done'
            - '[pkg-repo] Fetching cyrus-sasl-2.1.28_6: .......... done'
            - '[pkg-repo] Fetching p5-MIME-Base64-3.16: ... done'
            - '[pkg-repo] Fetching libXau-1.0.12: .. done'
            - '[pkg-repo] Fetching libICE-1.1.2,1: .......... done'
            - '[pkg-repo] Fetching py312-sortedcontainers-2.4.0_1: ....... done'
            - '[pkg-repo] Fetching ding-libs-0.7.0: .......... done'
            - '[pkg-repo] Fetching realmd-0.17.1_1: .......... done'
            - '[pkg-repo] Fetching c-ares-1.34.6: .......... done'
            - '[pkg-repo] Fetching adcli-0.9.2_3: .......... done'
            - '[pkg-repo] Fetching py312-certifi-2026.6.17: .......... done'
            - '[pkg-repo] Fetching py312-packaging-26.2: .......... done'
            - '[pkg-repo] Fetching openldap26-client-2.6.13: .......... done'
            - '[pkg-repo] Fetching libSM-1.2.6,1: .... done'
            - '[pkg-repo] Fetching py312-httpx-0.28.1_2: .......... done'
            - '[pkg-repo] Fetching protobuf-29.6,1: .......... done'
            - '[pkg-repo] Fetching glib-2.86.4,2: .......... done'
            - '[pkg-repo] Fetching tevent-0.15.0_1: ........ done'
            - '[pkg-repo] Fetching perl5-5.42.3: .......... done'
            - '[pkg-repo] Fetching gtar-1.35_1: .......... done'
            - '[pkg-repo] Fetching sudo-sssd-1.9.17p2_2: .......... done'
            - '[pkg-repo] Fetching py312-hyperframe-6.1.0: .... done'
            - '[pkg-repo] Fetching p5-Mozilla-CA-20260813: .......... done'
            - '[pkg-repo] Fetching libffi-3.6.0: ....... done'
            - '[pkg-repo] Fetching portmaster-3.35: ...... done'
            - '[pkg-repo] Fetching sudo-1.9.17p2_2: .......... done'
            - '[pkg-repo] Fetching readline-8.3.3: .......... done'
            - '[pkg-repo] Fetching libdaemon-0.14_1: ..... done'
            - '[pkg-repo] Fetching libssh2-1.11.1_1,3: .......... done'
            - '[pkg-repo] Fetching libXdmcp-1.1.5: ... done'
            - '[pkg-repo] Fetching expat-2.8.2: .......... done'
            - '[pkg-repo] Fetching libsunacl-1.0.1_1: . done'
            - '[pkg-repo] Fetching gamin-0.1.10_10: ....... done'
        -   ansible_loop_var: item
            changed: true
            changed_when_result: true
            cmd:
            - pkg
            - fetch
            - -y
            - -d
            - -o
            - /usr/local/www/pkgrepo
            - sysutils/syslog-ng
            - sysutils/lnav
            delta: '0:00:12.903171'
            end: '2026-08-27 12:05:39.199051'
            failed: false
            item:
                packages:
                - sysutils/syslog-ng
                - sysutils/lnav
                pkglist: syslog
            msg: ''
            rc: 0
            start: '2026-08-27 12:05:26.295880'
            stderr: ''
            stderr_lines: []
            stdout: |-
                Updating FreeBSD-ports repository catalogue...
                FreeBSD-ports repository is up to date.
                Updating FreeBSD-ports-kmods repository catalogue...
                FreeBSD-ports-kmods repository is up to date.
                All repositories are up to date.
                The following packages will be fetched:

                New packages to be FETCHED:
                        ivykis: 0.43.2_1 (79 KiB: 1.25% of the 6 MiB to download)
                        json-c: 0.19 (75 KiB: 1.19% of the 6 MiB to download)
                        lnav: 0.14.0 (4 MiB: 58.62% of the 6 MiB to download)
                        sqlite3: 3.53.3,1 (1 MiB: 21.79% of the 6 MiB to download)
                        syslog-ng: 4.12.0_1 (1 MiB: 17.15% of the 6 MiB to download)

                Number of packages to be fetched: 5

                The process will require 6 MiB more space.
                6 MiB to be downloaded.
                [pkg-repo] Fetching ivykis-0.43.2_1: .......... done
                [pkg-repo] Fetching sqlite3-3.53.3,1: .......... done
                [pkg-repo] Fetching lnav-0.14.0: .......... done
                [pkg-repo] Fetching syslog-ng-4.12.0_1: .......... done
                [pkg-repo] Fetching json-c-0.19: .......... done
            stdout_lines:
            - Updating FreeBSD-ports repository catalogue...
            - FreeBSD-ports repository is up to date.
            - Updating FreeBSD-ports-kmods repository catalogue...
            - FreeBSD-ports-kmods repository is up to date.
            - All repositories are up to date.
            - 'The following packages will be fetched:'
            - ''
            - 'New packages to be FETCHED:'
            - "\tivykis: 0.43.2_1 (79 KiB: 1.25% of the 6 MiB to download)"
            - "\tjson-c: 0.19 (75 KiB: 1.19% of the 6 MiB to download)"
            - "\tlnav: 0.14.0 (4 MiB: 58.62% of the 6 MiB to download)"
            - "\tsqlite3: 3.53.3,1 (1 MiB: 21.79% of the 6 MiB to download)"
            - "\tsyslog-ng: 4.12.0_1 (1 MiB: 17.15% of the 6 MiB to download)"
            - ''
            - 'Number of packages to be fetched: 5'
            - ''
            - The process will require 6 MiB more space.
            - 6 MiB to be downloaded.
            - '[pkg-repo] Fetching ivykis-0.43.2_1: .......... done'
            - '[pkg-repo] Fetching sqlite3-3.53.3,1: .......... done'
            - '[pkg-repo] Fetching lnav-0.14.0: .......... done'
            - '[pkg-repo] Fetching syslog-ng-4.12.0_1: .......... done'
            - '[pkg-repo] Fetching json-c-0.19: .......... done'
        -   ansible_loop_var: item
            changed: true
            changed_when_result: true
            cmd:
            - pkg
            - fetch
            - -y
            - -d
            - -o
            - /usr/local/www/pkgrepo
            - www/nginx
            - www/nginx-lite
            delta: '0:00:04.592275'
            end: '2026-08-27 12:05:44.384954'
            failed: false
            item:
                packages:
                - www/nginx
                - www/nginx-lite
                pkglist: other
            msg: ''
            rc: 0
            start: '2026-08-27 12:05:39.792679'
            stderr: ''
            stderr_lines: []
            stdout: |-
                Updating FreeBSD-ports repository catalogue...
                FreeBSD-ports repository is up to date.
                Updating FreeBSD-ports-kmods repository catalogue...
                FreeBSD-ports-kmods repository is up to date.
                All repositories are up to date.
                The following packages will be fetched:

                New packages to be FETCHED:
                        nginx: 1.30.4,3 (588 KiB: 60.53% of the 971 KiB to download)
                        nginx-lite: 1.30.4,3 (383 KiB: 39.47% of the 971 KiB to download)

                Number of packages to be fetched: 2

                971 KiB to be downloaded.
                [pkg-repo] Fetching nginx-1.30.4,3: .......... done
                [pkg-repo] Fetching nginx-lite-1.30.4,3: .......... done
            stdout_lines:
            - Updating FreeBSD-ports repository catalogue...
            - FreeBSD-ports repository is up to date.
            - Updating FreeBSD-ports-kmods repository catalogue...
            - FreeBSD-ports-kmods repository is up to date.
            - All repositories are up to date.
            - 'The following packages will be fetched:'
            - ''
            - 'New packages to be FETCHED:'
            - "\tnginx: 1.30.4,3 (588 KiB: 60.53% of the 971 KiB to download)"
            - "\tnginx-lite: 1.30.4,3 (383 KiB: 39.47% of the 971 KiB to download)"
            - ''
            - 'Number of packages to be fetched: 2'
            - ''
            - 971 KiB to be downloaded.
            - '[pkg-repo] Fetching nginx-1.30.4,3: .......... done'
            - '[pkg-repo] Fetching nginx-lite-1.30.4,3: .......... done'
        -   ansible_loop_var: item
            changed: true
            changed_when_result: true
            cmd:
            - pkg
            - fetch
            - -y
            - -d
            - -o
            - /usr/local/www/pkgrepo
            - lang/python312
            - lang/python
            - lang/python3
            delta: '0:00:03.138568'
            end: '2026-08-27 12:05:48.137089'
            failed: false
            item:
                packages:
                - lang/python312
                - lang/python
                - lang/python3
                pkglist: python
            msg: ''
            rc: 0
            start: '2026-08-27 12:05:44.998521'
            stderr: ''
            stderr_lines: []
            stdout: |-
                Updating FreeBSD-ports repository catalogue...
                FreeBSD-ports repository is up to date.
                Updating FreeBSD-ports-kmods repository catalogue...
                FreeBSD-ports-kmods repository is up to date.
                All repositories are up to date.
                The following packages will be fetched:

                New packages to be FETCHED:
                        python: 3.12_3,2 (1 KiB: 47.25% of the 2 KiB to download)
                        python3: 3_4 (1 KiB: 52.75% of the 2 KiB to download)

                Number of packages to be fetched: 2

                2 KiB to be downloaded.
                [pkg-repo] Fetching python-3.12_3,2: . done
                [pkg-repo] Fetching python3-3_4: . done
            stdout_lines:
            - Updating FreeBSD-ports repository catalogue...
            - FreeBSD-ports repository is up to date.
            - Updating FreeBSD-ports-kmods repository catalogue...
            - FreeBSD-ports-kmods repository is up to date.
            - All repositories are up to date.
            - 'The following packages will be fetched:'
            - ''
            - 'New packages to be FETCHED:'
            - "\tpython: 3.12_3,2 (1 KiB: 47.25% of the 2 KiB to download)"
            - "\tpython3: 3_4 (1 KiB: 52.75% of the 2 KiB to download)"
            - ''
            - 'Number of packages to be fetched: 2'
            - ''
            - 2 KiB to be downloaded.
            - '[pkg-repo] Fetching python-3.12_3,2: . done'
            - '[pkg-repo] Fetching python3-3_4: . done'

RUNNING HANDLER [vbotka.freebsd.packages : Generate repo metadata] *************
ok: [pkg_repo]

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

List repo

shell > ssh admin@iocage_06 fetch -qo - http://172.16.99.23/
<html>
<head><title>Index of /</title></head>
<body>
<h1>Index of /</h1><hr><pre><a href="../">../</a>
<a href="All/">All/</a>                                               27-Aug-2026 10:02                   -
<a href="data.pkg">data.pkg</a>                                           27-Aug-2026 10:05               60930
<a href="meta">meta</a>                                               27-Aug-2026 10:05                 179
<a href="meta.conf">meta.conf</a>                                          27-Aug-2026 10:05                 179
<a href="packagesite.pkg">packagesite.pkg</a>                                    27-Aug-2026 10:05               60924
</pre><hr></body>
</html>