Compare commits

...

3 commits

Author SHA1 Message Date
98d1bb9d14 Update all stable non-major dependencies
All checks were successful
/ Ansible Lint (pull_request) Successful in 3m3s
/ Ansible Lint (push) Successful in 3m5s
2026-05-02 00:16:41 +00:00
c304a1c82a
add README.md to deploy_systemd_resolved_config role
All checks were successful
/ Ansible Lint (pull_request) Successful in 2m31s
/ Ansible Lint (push) Successful in 2m24s
2026-05-02 01:01:23 +02:00
58ced1a85e
add capability to disable systemd-resolved to base_config role
All checks were successful
/ Ansible Lint (push) Successful in 2m28s
/ Ansible Lint (pull_request) Successful in 2m24s
2026-05-01 00:16:43 +02:00
17 changed files with 162 additions and 10 deletions

View file

@ -24,7 +24,7 @@ jobs:
# work in our environmnet. # work in our environmnet.
# Rather manually setup python (pip) before instead. # Rather manually setup python (pip) before instead.
- name: Run ansible-lint - name: Run ansible-lint
uses: https://github.com/ansible/ansible-lint@v26.3.0 uses: https://github.com/ansible/ansible-lint@v26.4.0
with: with:
setup_python: "false" setup_python: "false"
requirements_file: "requirements.yml" requirements_file: "requirements.yml"

View file

@ -1,5 +1,5 @@
# renovate: datasource=github-releases depName=netbox packageName=netbox-community/netbox # renovate: datasource=github-releases depName=netbox packageName=netbox-community/netbox
netbox__version: "v4.5.5" netbox__version: "v4.5.9"
netbox__config: "{{ lookup('ansible.builtin.template', 'resources/chaosknoten/netbox/netbox/configuration.py.j2') }}" netbox__config: "{{ lookup('ansible.builtin.template', 'resources/chaosknoten/netbox/netbox/configuration.py.j2') }}"
netbox__custom_pipeline_oidc_group_and_role_mapping: true netbox__custom_pipeline_oidc_group_and_role_mapping: true

View file

@ -2,7 +2,7 @@
services: services:
oauth2-proxy: oauth2-proxy:
container_name: oauth2-proxy container_name: oauth2-proxy
image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1 image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
command: --config /oauth2-proxy.cfg command: --config /oauth2-proxy.cfg
hostname: oauth2-proxy hostname: oauth2-proxy
volumes: volumes:

View file

@ -2,7 +2,7 @@
services: services:
prometheus: prometheus:
image: docker.io/prom/prometheus:v3.10.0 image: docker.io/prom/prometheus:v3.11.3
container_name: prometheus container_name: prometheus
command: command:
- '--config.file=/etc/prometheus/prometheus.yml' - '--config.file=/etc/prometheus/prometheus.yml'
@ -19,7 +19,7 @@ services:
- prom_data:/prometheus - prom_data:/prometheus
alertmanager: alertmanager:
image: docker.io/prom/alertmanager:v0.31.1 image: docker.io/prom/alertmanager:v0.32.1
container_name: alertmanager container_name: alertmanager
command: command:
- '--config.file=/etc/alertmanager/alertmanager.yaml' - '--config.file=/etc/alertmanager/alertmanager.yaml'
@ -32,7 +32,7 @@ services:
- alertmanager_data:/alertmanager - alertmanager_data:/alertmanager
grafana: grafana:
image: docker.io/grafana/grafana:12.4.2 image: docker.io/grafana/grafana:12.4.3
container_name: grafana container_name: grafana
ports: ports:
- 3000:3000 - 3000:3000
@ -46,7 +46,7 @@ services:
- graf_data:/var/lib/grafana - graf_data:/var/lib/grafana
pve-exporter: pve-exporter:
image: docker.io/prompve/prometheus-pve-exporter:3.8.2 image: docker.io/prompve/prometheus-pve-exporter:3.8.3
container_name: pve-exporter container_name: pve-exporter
ports: ports:
- 9221:9221 - 9221:9221

View file

@ -22,7 +22,7 @@
services: services:
keycloak: keycloak:
image: git.hamburg.ccc.de/ccchh/oci-images/keycloak:26.5.7 image: git.hamburg.ccc.de/ccchh/oci-images/keycloak:26.6.0
pull_policy: always pull_policy: always
restart: unless-stopped restart: unless-stopped
command: start --optimized command: start --optimized

View file

@ -1,7 +1,7 @@
--- ---
services: services:
ntfy: ntfy:
image: docker.io/binwiederhier/ntfy:v2.20.1 image: docker.io/binwiederhier/ntfy:v2.22.0
container_name: ntfy container_name: ntfy
command: command:
- serve - serve

View file

@ -23,7 +23,7 @@ services:
- pretalx_net - pretalx_net
static: static:
image: docker.io/library/nginx:1.29.7 image: docker.io/library/nginx:1.30.0
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- public:/usr/share/nginx/html - public:/usr/share/nginx/html

View file

@ -2,3 +2,4 @@
dependencies: dependencies:
- role: deploy_ssh_server_config - role: deploy_ssh_server_config
- role: deploy_systemd_journal_config - role: deploy_systemd_journal_config
- role: deploy_systemd_resolved_config

View file

@ -0,0 +1,21 @@
# Role `deploy_systemd_resolved_config`
A role for deploying a minimal configuration for [systemd-resolved](https://man.archlinux.org/man/systemd-resolved.8) or alternatively completely disabling it.
!! Note
If systemd-resolved is disabled, the configuration is instead rendered directly into `/etc/resolv.conf` to ensure a node does not accidentally lose name resolving capabilities.
## Optional Arguments
- `deploy_systemd_resolved_config__enable` (defaults to `true`) decides whether systemd-resolved should be enabled or disabled.
- `deploy_systemd_resolved_config__mode` (defaults to `stub`) controls which compatibility mode is used for `/etc/resolv.conf` when systemd-resolved is enabled. See [man systemd-resolved(8)](https://man.archlinux.org/man/systemd-resolved.8#/ETC/RESOLV.CONF).
- `deploy_systemd_resolved_config__dns` is the list of primary DNS servers that will be configured. If e.g. a specific link configures other DNS servers, they will take precedence.
- `deploy_systemd_resolved_config__fallback_dns` (defaults to Quad9) is the list of fallback DNS servers. If, at runtime, none of the configured primary DNS servers are reachable, these servers will be used as fallback.
## Hosts
This role is included as a dependency to [base_config](../base_config/) and therefore does not need to be explicitly pulled in.

View file

@ -0,0 +1,9 @@
---
deploy_systemd_resolved_config__enable: true
deploy_systemd_resolved_config__mode: "stub"
deploy_systemd_resolved_config__dns: [ ]
deploy_systemd_resolved_config__fallback_dns:
- "9.9.9.9"
- "149.112.112.112"
- "2620:fe::fe"
- "2620:fe::9"

View file

@ -0,0 +1,7 @@
---
- name: "reload systemd-resolved"
tags: [ "deploy_systemd_resolved_config" ]
become: true
ansible.builtin.systemd:
name: "systemd-resolved.service"
state: "restarted"

View file

@ -0,0 +1,21 @@
---
argument_specs:
main:
options:
deploy_systemd_resolved_config__enable:
description: "Whether systemd-resolved should be enabled or disabled"
type: bool
required: false
deploy_systemd_resolved_config__mode:
description: "Which /etc/resolv.conf compatibility mode should be configured"
type: str
required: false
choices: [ "stub", "static-stub", "passthru", "extern" ]
deploy_systemd_resolved_config__dns:
description: "A list of DNS servers that will be configured as default dns servers"
type: list
required: false
deploy_systemd_resolved_config__fallback_dns:
description: "A list of fallback DNS servers that will be configured"
type: list
required: false

View file

@ -0,0 +1,25 @@
---
- name: Ensure /etc/resolv.conf is a plain file
tags: [ "deploy_systemd_resolved_config" ]
become: true
ansible.builtin.file:
path: "/etc/resolv.conf"
state: file
- name: Write nameserver config directly into /etc/resolv.conf
tags: [ "deploy_systemd_resolved_config" ]
become: true
ansible.builtin.template:
src: "resolv.conf.j2"
dest: "/etc/resolv.conf"
owner: root
group: root
mode: u=rw,g=r,o=r
- name: Disable systemd-resolved
tags: [ "deploy_systemd_resolved_config" ]
become: true
ansible.builtin.systemd:
name: "systemd-resolved.service"
state: stopped
enabled: false

View file

@ -0,0 +1,36 @@
---
- name: Deploy systemd-resolved config
tags: [ "deploy_systemd_resolved_config" ]
become: true
notify: "reload systemd-resolved"
ansible.builtin.template:
src: resolved.conf.j2
dest: /etc/systemd/resolved.conf
owner: root
group: root
mode: u=rw,g=r,o=r
- name: Make /etc/resolv.conf points to systemd-resolved
tags: [ "deploy_systemd_resolved_config" ]
become: true
when: deploy_systemd_resolved_config__mode != "extern"
ansible.builtin.file: # noqa: jinja
path: /etc/resolv.conf
state: link
force: true
src: >-
{%- if deploy_systemd_resolved_config__mode == "stub" -%}
/run/systemd/resolve/stub-resolv.conf
{%- elif deploy_systemd_resolved_config__mode == "static-stub" -%}
/usr/lib/systemd/resolv.conf
{%- elif deploy_systemd_resolved_config__mode == "passthru" -%}
/run/systemd/resolve/resolv.conf
{%- endif -%}
- name: Ensure systemd-resolved is running and enabled
tags: [ "deploy_systemd_resolved_config" ]
become: true
ansible.builtin.systemd:
name: systemd-resolved.service
state: started
enabled: true

View file

@ -0,0 +1,10 @@
---
- name: Include enable.yaml
tags: [ "deploy_systemd_resolved_config" ]
ansible.builtin.include_tasks: enable.yaml
when: deploy_systemd_resolved_config__enable
- name: Include disable.yaml
tags: [ "deploy_systemd_resolved_config" ]
ansible.builtin.include_tasks: disable.yaml
when: not deploy_systemd_resolved_config__enable

View file

@ -0,0 +1,11 @@
# {{ ansible_managed }}
{% for i in deploy_systemd_resolved_config__dns %}
nameserver {{ i }}
{% endfor %}
{% for i in deploy_systemd_resolved_config__fallback_dns %}
nameserver {{ i }}
{% endfor %}
options edns0

View file

@ -0,0 +1,11 @@
# {{ ansible_managed }}
# Since the config supports drop-in files,
# use 'systemd-analyze cat-config systemd/resolved.conf' to display the full config.'
#
# See resolved.conf(5) for details
[Resolve]
DNS={{ deploy_systemd_resolved_config__dns | join(" ") }}
FallbackDNS={{ deploy_systemd_resolved_config__fallback_dns | join(" ") }}