From 00d1e07c6164a25985442993a19c76549d6574d5 Mon Sep 17 00:00:00 2001 From: Rich Braun Date: Fri, 17 Jul 2026 09:49:04 -0700 Subject: [PATCH 1/3] SYS-694 fix weewx error message PyMapping_HasKeyString --- images/weewx/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/images/weewx/Dockerfile b/images/weewx/Dockerfile index afd2b54c..d4d30ffd 100644 --- a/images/weewx/Dockerfile +++ b/images/weewx/Dockerfile @@ -55,7 +55,7 @@ ARG AIRLINK_SHA=6392ee1d8e96a543306f16430ec9095b79dd7d0aacf8078171aa61b060a49745 COPY install-input.txt entrypoint.sh log.conf /tmp RUN apk add --no-cache --update \ - curl freetype libjpeg libstdc++ openssh openssl python3 py3-cheetah \ + curl freetype libjpeg libstdc++ openssh openssl python3 \ py3-configobj py3-mysqlclient py3-pillow py3-pymysql py3-pyserial \ py3-requests py3-six py3-usb rsync rsyslog tzdata && \ adduser -u $WX_UID -s /bin/sh -G $WX_GROUP -D $WX_USER && \ @@ -64,7 +64,7 @@ RUN apk add --no-cache --update \ VENV=/home/$WX_USER/weewx-venv && \ python3 -m venv $VENV --system-site-packages && \ source $VENV/bin/activate && \ - python3 -m pip install weewx==$WEEWX_VERSION && \ + python3 -m pip install weewx==$WEEWX_VERSION ct3 && \ git clone -b $WEEGREEN_VERSION --depth 1 \ https://github.com/instantlinux/weewx-WeeGreen.git \ $WX_ROOT/skins/WeeGreen && \ From 35d69e2f5356911fab850039633bb2d4d2df6564 Mon Sep 17 00:00:00 2001 From: Rich Braun Date: Fri, 17 Jul 2026 10:00:17 -0700 Subject: [PATCH 2/3] SYS-694 wip --- ansible/requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/requirements.txt b/ansible/requirements.txt index 0fa8429a..773aae63 100644 --- a/ansible/requirements.txt +++ b/ansible/requirements.txt @@ -1,3 +1,3 @@ -ansible==12.3.0 -ansible-lint==26.1.1 -pip==26.1 +ansible==14.2.0 +ansible-lint==26.6.0 +pip==26.1.2 From fc82570ae1b5fa5e0b1e3cf0b5aeff5766ffb2eb Mon Sep 17 00:00:00 2001 From: Rich Braun Date: Fri, 17 Jul 2026 11:15:08 -0700 Subject: [PATCH 3/3] SYS-694 wip --- ansible/roles/bind9/tasks/main.yml | 2 +- ansible/roles/docker_node/defaults/main.yml | 10 +++++----- ansible/roles/docker_node/tasks/docker.yml | 2 +- ansible/roles/docker_node/tasks/packages.yml | 4 ++-- ansible/roles/fileserver/defaults/main.yml | 2 +- ansible/roles/fileserver/tasks/main.yml | 6 +++--- ansible/roles/fileserver/tasks/virtualbox.yml | 6 +++--- ansible/roles/fileserver/templates/smb.conf.j2 | 4 ++-- ansible/roles/monitoring_agent/defaults/main.yml | 6 +++--- ansible/roles/monitoring_agent/tasks/packages.yml | 2 +- ansible/roles/network/tasks/main.yml | 4 ++-- ansible/roles/ntp/defaults/main.yml | 2 +- ansible/roles/ntp/tasks/main.yml | 12 ++++++------ ansible/roles/users/defaults/main.yml | 4 ++-- ansible/roles/users/tasks/packages.yml | 4 ++-- ansible/roles/volumes/tasks/encrypted.yml | 4 ++-- ansible/roles/volumes/tasks/main.yml | 2 +- 17 files changed, 38 insertions(+), 38 deletions(-) diff --git a/ansible/roles/bind9/tasks/main.yml b/ansible/roles/bind9/tasks/main.yml index 2d6ad920..356a21f3 100644 --- a/ansible/roles/bind9/tasks/main.yml +++ b/ansible/roles/bind9/tasks/main.yml @@ -2,7 +2,7 @@ - name: Install system packages apt: name: "{{ ubuntu_packages }}" - when: ansible_os_family == 'Debian' + when: ansible_facts['os_family'] == 'Debian' - name: bind9 config template: diff --git a/ansible/roles/docker_node/defaults/main.yml b/ansible/roles/docker_node/defaults/main.yml index 3c7b1f88..66fe0206 100644 --- a/ansible/roles/docker_node/defaults/main.yml +++ b/ansible/roles/docker_node/defaults/main.yml @@ -6,7 +6,7 @@ docker_defaults: key: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 package_name: docker-ce package_ver: 5:29.6.1-1~ubuntu.26.04~resolute - repo: deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable + repo: deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_facts['distribution_release'] }} stable url: https://download.docker.com/linux/ubuntu/gpg certs: ca_root: ca-root.pem @@ -74,9 +74,9 @@ ubuntu_packages: ubuntu_repo_uri: http://archive.ubuntu.com/ubuntu/ ubuntu_repos: - - deb {{ ubuntu_repo_uri }} {{ ansible_distribution_release }} main restricted universe multiverse - - deb {{ ubuntu_repo_uri }} {{ ansible_distribution_release }}-updates main restricted universe multiverse - - deb {{ ubuntu_repo_uri }} {{ ansible_distribution_release }}-backports main restricted universe multiverse - - deb {{ ubuntu_repo_uri }} {{ ansible_distribution_release }}-security main restricted universe multiverse + - deb {{ ubuntu_repo_uri }} {{ ansible_facts['distribution_release'] }} main restricted universe multiverse + - deb {{ ubuntu_repo_uri }} {{ ansible_facts['distribution_release'] }}-updates main restricted universe multiverse + - deb {{ ubuntu_repo_uri }} {{ ansible_facts['distribution_release'] }}-backports main restricted universe multiverse + - deb {{ ubuntu_repo_uri }} {{ ansible_facts['distribution_release'] }}-security main restricted universe multiverse ubuntu_package_additions: [] diff --git a/ansible/roles/docker_node/tasks/docker.yml b/ansible/roles/docker_node/tasks/docker.yml index 9e4181ae..93e44479 100644 --- a/ansible/roles/docker_node/tasks/docker.yml +++ b/ansible/roles/docker_node/tasks/docker.yml @@ -152,7 +152,7 @@ mode: 0755 url: https://github.com/docker/compose/releases/download/{{ docker.compose.version }}/docker-compose-Linux-x86_64 - when: ansible_distribution_version < '22.04' + when: ansible_facts['distribution_version'] < '22.04' - name: Sysctl tuning parameters ansible.builtin.sysctl: diff --git a/ansible/roles/docker_node/tasks/packages.yml b/ansible/roles/docker_node/tasks/packages.yml index efb599c3..dee72c40 100644 --- a/ansible/roles/docker_node/tasks/packages.yml +++ b/ansible/roles/docker_node/tasks/packages.yml @@ -12,9 +12,9 @@ - name: Python pip package apt: name: python3-pip - when: ansible_distribution_version >= '20.04' + when: ansible_facts['distribution_version'] >= '20.04' - name: Python pip package apt: name: python-pip - when: ansible_distribution_release < '20.04' + when: ansible_facts['distribution_release'] < '20.04' diff --git a/ansible/roles/fileserver/defaults/main.yml b/ansible/roles/fileserver/defaults/main.yml index b536d47c..e006a706 100644 --- a/ansible/roles/fileserver/defaults/main.yml +++ b/ansible/roles/fileserver/defaults/main.yml @@ -12,7 +12,7 @@ samba_defaults: hosts_allow: [] interfaces: - lo - - "{{ ansible_default_ipv4.address }}" + - "{{ ansible_facts['default_ipv4']['address'] }}" log_level: 1 logon_drive: H server_min_protocol: "" diff --git a/ansible/roles/fileserver/tasks/main.yml b/ansible/roles/fileserver/tasks/main.yml index ef99b60e..f486d69b 100644 --- a/ansible/roles/fileserver/tasks/main.yml +++ b/ansible/roles/fileserver/tasks/main.yml @@ -2,17 +2,17 @@ - name: Install system packages apt: name: "{{ ubuntu_packages }}" - when: ansible_os_family == 'Debian' + when: ansible_facts['os_family'] == 'Debian' - name: Python pip package apt: name: python3-pip - when: ansible_distribution_version >= '20.04' + when: ansible_facts['distribution_version'] >= '20.04' - name: Python pip package apt: name: python-pip - when: ansible_distribution_version < '20.04' + when: ansible_facts['distribution_version'] < '20.04' - import_tasks: nfs.yml when: nfs_exports | length > 0 diff --git a/ansible/roles/fileserver/tasks/virtualbox.yml b/ansible/roles/fileserver/tasks/virtualbox.yml index bba6c310..3b938239 100644 --- a/ansible/roles/fileserver/tasks/virtualbox.yml +++ b/ansible/roles/fileserver/tasks/virtualbox.yml @@ -11,18 +11,18 @@ apt_repository: repo: > deb [arch=amd64 signed-by=/etc/apt/keyrings/oracle_vbox_2016.asc] - {{ virtualbox.apt_repo.url }} {{ ansible_distribution_release }} contrib + {{ virtualbox.apt_repo.url }} {{ ansible_facts['distribution_release }} contrib filename: virtualbox - name: Virtualbox package package: name: virtualbox - when: ansible_distribution_version < '22.04' + when: ansible_facts['distribution_version'] < '22.04' - name: Virtualbox package package: name: virtualbox-{{ virtualbox.version }} - when: ansible_distribution_version >= '22.04' + when: ansible_facts['distribution_version'] >= '22.04' - name: Virtualbox systemd unit file template: diff --git a/ansible/roles/fileserver/templates/smb.conf.j2 b/ansible/roles/fileserver/templates/smb.conf.j2 index e754aa23..e3bc9eda 100644 --- a/ansible/roles/fileserver/templates/smb.conf.j2 +++ b/ansible/roles/fileserver/templates/smb.conf.j2 @@ -8,9 +8,9 @@ logon home = \\%L\%U\.9xprofile logon path = \\%L\profiles\.msprofile map to guest = Bad Password - netbios name = {{ ansible_hostname }} + netbios name = {{ ansible_facts['hostname'] }} security = user - server string = {{ ansible_hostname }}--{{ samba.server_string }} + server string = {{ ansible_facts['hostname'] }}--{{ samba.server_string }} usershare max shares = 0 workgroup = {{ samba.workgroup }} {% if samba.hosts_allow|length %} diff --git a/ansible/roles/monitoring_agent/defaults/main.yml b/ansible/roles/monitoring_agent/defaults/main.yml index 0b85bc15..23f8d91a 100644 --- a/ansible/roles/monitoring_agent/defaults/main.yml +++ b/ansible/roles/monitoring_agent/defaults/main.yml @@ -9,11 +9,11 @@ journald_conf: "{{ journald_conf_defaults | combine(journald_conf_override) }}" nagios_defaults: allowed_hosts: - localhost - nrpe_cfg: "{{ '/etc/nagios' if ansible_os_family == 'Debian' else '/etc' + nrpe_cfg: "{{ '/etc/nagios' if ansible_facts['os_family'] == 'Debian' else '/etc' }}/nrpe.cfg" - nrpe_path: /etc/{{ 'nagios' if ansible_os_family == 'Debian' + nrpe_path: /etc/{{ 'nagios' if ansible_facts['os_family'] == 'Debian' else 'nrpe.d' }}/nrpe_local.cfg - nrpe_service: "{{ 'nagios-nrpe-server' if ansible_os_family == 'Debian' + nrpe_service: "{{ 'nagios-nrpe-server' if ansible_facts['os_family'] == 'Debian' else 'nrpe' }}" nrpe_user: nagios local_plugins_path: /usr/local/lib/nagios diff --git a/ansible/roles/monitoring_agent/tasks/packages.yml b/ansible/roles/monitoring_agent/tasks/packages.yml index 5c9fc0bd..846b41a2 100644 --- a/ansible/roles/monitoring_agent/tasks/packages.yml +++ b/ansible/roles/monitoring_agent/tasks/packages.yml @@ -8,7 +8,7 @@ - name: Install extra packages ansible.builtin.apt: name: "{{ ubuntu_packages_extra }}" - when: ansible_distribution_version >= '18.04' + when: ansible_facts['distribution_version'] >= '18.04' - name: Python packages for monitoring ansible.builtin.command: pip3 install --break-system-packages {{ diff --git a/ansible/roles/network/tasks/main.yml b/ansible/roles/network/tasks/main.yml index 50161af8..68bc5162 100644 --- a/ansible/roles/network/tasks/main.yml +++ b/ansible/roles/network/tasks/main.yml @@ -4,10 +4,10 @@ name: "{{ ubuntu_packages }}" - import_tasks: network_legacy.yml - when: ansible_distribution_version < '18.04' + when: ansible_facts['distribution_version'] < '18.04' - import_tasks: netplan.yml - when: ansible_distribution_version >= '18.04' + when: ansible_facts['distribution_version'] >= '18.04' - import_tasks: kernel.yml - import_tasks: sshd.yml diff --git a/ansible/roles/ntp/defaults/main.yml b/ansible/roles/ntp/defaults/main.yml index 33ba78ca..45aaae0e 100644 --- a/ansible/roles/ntp/defaults/main.yml +++ b/ansible/roles/ntp/defaults/main.yml @@ -12,7 +12,7 @@ ntp_defaults: - 1.pool.ntp.org service: enabled: yes - name: "{{ 'ntpd-rs' if ansible_os_family == 'Debian' else 'ntpd' }}" + name: "{{ 'ntpd-rs' if ansible_facts['os_family'] == 'Debian' else 'ntpd' }}" state: restarted ntp_override: {} diff --git a/ansible/roles/ntp/tasks/main.yml b/ansible/roles/ntp/tasks/main.yml index 0a212526..237e7ca1 100644 --- a/ansible/roles/ntp/tasks/main.yml +++ b/ansible/roles/ntp/tasks/main.yml @@ -8,7 +8,7 @@ - name: Install system packages ansible.builtin.apt: name: "{{ ubuntu_packages }}" - when: ansible_os_family == 'Debian' + when: ansible_facts['os_family'] == 'Debian' - name: NTP keys ansible.builtin.template: @@ -17,20 +17,20 @@ mode: 0440 src: ntp.keys.j2 notify: Restart ntpd - when: ntp.service.enabled and ansible_distribution_version < '24.04' + when: ntp.service.enabled and ansible_facts['distribution_version'] < '24.04' - name: NTP config ansible.builtin.template: dest: /etc/ntp.conf src: ntp.conf.j2 notify: Restart ntpd - when: ntp.service.enabled and ansible_distribution_version < '24.04' + when: ntp.service.enabled and ansible_facts['distribution_version'] < '24.04' - name: Override directory for ntp-rs systemd unit file ansible.builtin.file: dest: /etc/systemd/system/ntpd-rs.service.d state: directory - when: ntp.service.enabled and ansible_distribution_version >= '24.04' + when: ntp.service.enabled and ansible_facts['distribution_version'] >= '24.04' - name: Allow ntp-rs to bind on port 123 ansible.builtin.copy: @@ -38,14 +38,14 @@ content: | [Service] AmbientCapabilities=CAP_SYS_TIME CAP_NET_BIND_SERVICE - when: ntp.service.enabled and ansible_distribution_version >= '24.04' + when: ntp.service.enabled and ansible_facts['distribution_version'] >= '24.04' - name: ntp-rs config ansible.builtin.template: dest: /etc/ntpd-rs/ntp.toml src: ntp.toml.j2 notify: Restart ntpd - when: ntp.service.enabled and ansible_distribution_version >= '24.04' + when: ntp.service.enabled and ansible_facts['distribution_version'] >= '24.04' - name: NTP service ansible.builtin.systemd: diff --git a/ansible/roles/users/defaults/main.yml b/ansible/roles/users/defaults/main.yml index f2da4c89..79b966eb 100644 --- a/ansible/roles/users/defaults/main.yml +++ b/ansible/roles/users/defaults/main.yml @@ -26,10 +26,10 @@ opensuse_google_auth_repo: repo: http://download.opensuse.org/distribution/leap/42.2/repo/oss/suse pam_package: "{{ - 'libpam-google-authenticator' if ansible_os_family == 'Debian' + 'libpam-google-authenticator' if ansible_facts['os_family'] == 'Debian' else 'pam-google-authenticator' }}" ubuntu_repo_uri: http://archive.ubuntu.com/ubuntu/ ubuntu_google_auth_repo: - - deb {{ ubuntu_repo_uri }} {{ ansible_distribution_release }} main restricted universe multiverse + - deb {{ ubuntu_repo_uri }} {{ ansible_facts['distribution_release'] }} main restricted universe multiverse diff --git a/ansible/roles/users/tasks/packages.yml b/ansible/roles/users/tasks/packages.yml index c8bc510c..76bd7b0d 100644 --- a/ansible/roles/users/tasks/packages.yml +++ b/ansible/roles/users/tasks/packages.yml @@ -9,14 +9,14 @@ args: creates: /etc/zypp/repos.d/{{ item.name}}.repo with_items: "{{ opensuse_google_auth_repo }}" - when: ansible_os_family == 'Suse' + when: ansible_facts['os_family'] == 'Suse' - name: Ensure repositories available apt_repository: repo: "{{ item }}" filename: ubuntu with_items: "{{ ubuntu_google_auth_repo }}" - when: ansible_os_family == 'Debian' + when: ansible_facts['os_family'] == 'Debian' - name: Install PAM module for google-authenticator package: diff --git a/ansible/roles/volumes/tasks/encrypted.yml b/ansible/roles/volumes/tasks/encrypted.yml index 66075519..fbe536fa 100644 --- a/ansible/roles/volumes/tasks/encrypted.yml +++ b/ansible/roles/volumes/tasks/encrypted.yml @@ -40,7 +40,7 @@ shell: > cryptsetup isLuks /dev/{{ item.value.vg }}/{{ item.key }} || cryptsetup luksFormat --batch-mode --verbose --key-file={{ - masterkey.path }}/keys/{{ ansible_hostname }}/{{ + masterkey.path }}/keys/{{ ansible_facts['hostname'] }}/{{ item.key }} /dev/{{ item.value.vg }}/{{ item.key }} register: luks_format changed_when: ("Command successful" in luks_format.stdout) @@ -57,7 +57,7 @@ - name: Crypt table entries lineinfile: line: "{{ 'luks-%-16s /dev/mapper/%s-%-16s %s/keys/%s/%-12s luks' % ( - item.key, item.value.vg, item.key, masterkey.path, ansible_hostname, + item.key, item.value.vg, item.key, masterkey.path, ansible_facts['hostname'], item.key) }}" path: /etc/crypttab.setup regexp: "^luks-{{ item.key }}.*" diff --git a/ansible/roles/volumes/tasks/main.yml b/ansible/roles/volumes/tasks/main.yml index c6d2f88c..15e528d4 100644 --- a/ansible/roles/volumes/tasks/main.yml +++ b/ansible/roles/volumes/tasks/main.yml @@ -4,7 +4,7 @@ - name: Install system packages ansible.builtin.apt: name: "{{ ubuntu_packages }}" - when: ansible_os_family == 'Debian' + when: ansible_facts['os_family'] == 'Debian' - name: Create mount points ansible.builtin.file: