Compare commits

..

15 Commits

Author SHA1 Message Date
chris b4a09a7b94 feat(ipt-firewall): add ipt-firewall configuration for mm-irights, mm-nd, and mm-rav hosts 2026-08-09 23:14:08 +02:00
chris 33e8368d76 Rnaem SSH keys. 2026-08-09 23:13:48 +02:00
chris 53e17715fd feat(mm-nd): add extra user configuration and sudoers for nd-admin 2026-08-09 23:09:35 +02:00
chris 845052a9db fix(o45): correct formatting in ipt-firewall configuration for a.mx.oopen.de 2026-08-09 00:37:29 +02:00
chris d94d28ca67 feat(mm-nd): update DNS settings and add cron jobs for service monitoring 2026-08-09 00:35:57 +02:00
chris fff295759c feat(o45): add ipt-firewall configuration for a.mx.oopen.de 2026-08-09 00:35:36 +02:00
chris ed45c5596c feat(o45): add configuration files and firewall settings for o45 host 2026-08-09 00:34:20 +02:00
chris c6205045c5 feat(o45): add configuration files for o45 host and update apt tasks for compatibility 2026-08-09 00:33:51 +02:00
chris 05cb840e6d feat(redis): replace apt update task with command to ensure compatibility 2026-08-09 00:33:03 +02:00
chris 80a4e33fc2 add user bauhofer 2026-08-07 19:32:41 +02:00
chris ead9de9bac feat: add workaround for cssh/Perl-Tk under Wayland to allow local X11 access 2026-08-07 12:54:52 +02:00
chris c4acc32add feat: update apt upgrade tasks to conditionally refresh cache based on apt_update variable 2026-08-07 11:43:28 +02:00
chris 6ba7c61cb7 fix(common): avoid localhost become prompts, stabilize redis apt upgrade, and lint handlers 2026-08-06 17:09:17 +02:00
chris 88f40fe0cd feat: update apt packages for webserver and add extra Python packages 2026-08-06 14:49:53 +02:00
chris 79a38027df set become false for localhost checks in users-systemfiles to prevent sudo timeout 2026-08-06 14:48:15 +02:00
72 changed files with 903 additions and 147 deletions
+6
View File
@@ -116,3 +116,9 @@ export EDITOR=vim
# turn off the beep (only in bash tab-complete ?) # turn off the beep (only in bash tab-complete ?)
# only if interactiv shell # only if interactiv shell
[[ "$-" =~ "i" ]] && bind 'set bell-style none' [[ "$-" =~ "i" ]] && bind 'set bell-style none'
# Workaround für cssh/Perl-Tk unter Wayland: "Authorization required, but
# no authorization protocol specified" (Debian Bug #1028370). Erlaubt dem
# lokalen User pauschalen X11-Zugriff, ohne fehlerhaftes Cookie-Verfahren.
#
#xhost +SI:localuser:$(whoami) >/dev/null 2>&1
+69 -68
View File
@@ -158,7 +158,7 @@ apt_manage_sources_list: true
apt_src_enable: true apt_src_enable: true
apt_backports_enable: true apt_backports_enable: true
apt_debian_mirror: http://ftp2.de.debian.org/debian/ apt_debian_mirror: http://ftp.de.debian.org/debian/
apt_debian_contrib_nonfree_enable: true apt_debian_contrib_nonfree_enable: true
# Ubuntu mirror # Ubuntu mirror
@@ -1728,87 +1728,88 @@ apt_webserver_pkgs:
apt_webserver_pkgs_trixie: apt_webserver_pkgs_trixie:
- libdb-dev - build-essential
- zlib1g
- zlib1g-dev
- libssl-dev
- libneon27-dev
- libxml2
- libxml2-dev
- curl - curl
- libcurl4-openssl-dev
- libqdbm-dev
- libgdbm-dev
- libpspell-dev
- libjpeg-dev
- libpng-dev
- libxpm-dev
- libfreetype6-dev
- libwmf-dev
- libtiff-dev
- libpaper-dev
- libmagic-dev
- libgraphics-magick-perl
- libgraphicsmagick++1-dev
- libgraphicsmagick-q16-3
- libgraphicsmagick1-dev
- libgraphviz-dev
- libgsf-1-dev
- libilmbase-dev
- libvpx-dev
- vpx-tools
- libgpm-dev
- libkpathsea-dev
- libopenexr-dev
- librsvg2-dev
- libdjvulibre-dev
- libatm-dev
- libexpat-dev
- imagemagick
- graphicsmagick
- exif
- libexiv2-dev
- re2c
- netpbm
- libnetpbm-dev
- libmcrypt-dev
- mcrypt
- default-libmysqlclient-dev - default-libmysqlclient-dev
- libpq-dev - exif
- postgresql-client - expect
- libreadline-dev - expect-dev
- libncurses-dev - ffmpeg
- graphicsmagick
- imagemagick
- libaio-dev
- libapr1-dev
- libaprutil1-dev
- libatm-dev
- libcrypto++-dev
- libcurl4-openssl-dev
- libdb5.3 - libdb5.3
- libdb5.3++ - libdb5.3++
- libdb5.3++-dev - libdb5.3++-dev
- libdb5.3-dev - libdb5.3-dev
- libxslt1-dev - libdb-dev
- libpcre2-dev - libdjvulibre-dev
- libicu-dev - libexiv2-dev
- libtidy-dev - libexpat-dev
- libmm-dev - libexpect-perl
- libfreetype6-dev
- libgdbm-dev
- libgd-dev
- libgeoip-dev
- libgmp-dev - libgmp-dev
- libgpm-dev
- libgraphicsmagick++1-dev
- libgraphicsmagick1-dev
- libgraphics-magick-perl
- libgraphicsmagick-q16-3
- libgraphviz-dev
- libgsf-1-dev
- libicu-dev
- libilmbase-dev
- libjpeg-dev
- libkpathsea-dev
- libkrb5-dev - libkrb5-dev
- libldap-dev - libldap-dev
- libmhash-dev
- libgd-dev
- liblua5.3-dev - liblua5.3-dev
- libapr1-dev - libmagic-dev
- libaprutil1-dev
- libsctp-dev
- libcrypto++-dev
- ffmpeg
- libmagickwand-dev - libmagickwand-dev
- libgeoip-dev - libmcrypt-dev
- libaio-dev - libmhash-dev
- tk-dev - libmm-dev
- libncurses-dev
- libneon27-dev
- libnetpbm-dev
- libopenexr-dev
- libpaper-dev
- libpcre2-dev
- libpng-dev
- libpq-dev
- libpspell-dev
- libqdbm-dev
- libreadline-dev
- librsvg2-dev
- libsctp-dev
- libssl-dev
- libtidy-dev
- libtiff-dev
- libvpx-dev
- libwmf-dev
- libxml2
- libxml2-dev
- libxpm-dev
- libxslt1-dev
- mcrypt
- netpbm
- poppler-utils
- postgresql-client
- re2c
- tcl-dev - tcl-dev
- tclreadline - tclreadline
- expect - tk-dev
- expect-dev - vpx-tools
- libexpect-perl
- poppler-utils
- weasyprint - weasyprint
- zlib1g
- zlib1g-dev
# - libc-client2007e-dev # - libc-client2007e-dev
# - libc-client-dev # - libc-client-dev
@@ -299,6 +299,7 @@ default_user:
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDNIGI5HpfYnZCvDM3bf3UQti8SRhgL7wLu8LfxZLqwB root@meet.akweb.de' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDNIGI5HpfYnZCvDM3bf3UQti8SRhgL7wLu8LfxZLqwB root@meet.akweb.de'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINoLG5tE0tHh+iFRzellU80eJTxZfqDB3e6Dg4XRKBrA root@meet.oopen.de' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINoLG5tE0tHh+iFRzellU80eJTxZfqDB3e6Dg4XRKBrA root@meet.oopen.de'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF2bxZZNXrlsvERYo0VyXzdW1AZuGmsTNjgF4oQJNfnn root@mm-irights' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF2bxZZNXrlsvERYo0VyXzdW1AZuGmsTNjgF4oQJNfnn root@mm-irights'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINy+3uf7VKQBQuXPeFSlSG4lcNbkCTysMhIideNTyMKr root@mm-nd'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILpKuS8DFuHHvfQZCHOGiurOvzlFkx1unnMfZWEM3wUY root@mm-rav' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILpKuS8DFuHHvfQZCHOGiurOvzlFkx1unnMfZWEM3wUY root@mm-rav'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMnwSzzSrAQJN3I0Y3xRU0rjlrO2KlHD3tFMgCqEyk0i root@mm' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMnwSzzSrAQJN3I0Y3xRU0rjlrO2KlHD3tFMgCqEyk0i root@mm'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXSGiRst5AQ396FQY6jrr1jTCpwGDLWv5akw6SiMUGq root@nd-gate' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXSGiRst5AQ396FQY6jrr1jTCpwGDLWv5akw6SiMUGq root@nd-gate'
@@ -337,6 +338,7 @@ default_user:
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDW54VI+M5SjV6dQLew/IA31RI1GOneIqg5dI1/VZQgJ root@o42' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDW54VI+M5SjV6dQLew/IA31RI1GOneIqg5dI1/VZQgJ root@o42'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII2b60T/OXKCoze083GsHXuMFtm8Zo3WnCFb9Q9ofGie root@o43' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII2b60T/OXKCoze083GsHXuMFtm8Zo3WnCFb9Q9ofGie root@o43'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPytU2q7RmehrJyRnXRIZp7qcoswSANsClJP8v3zv6D7 root@o44' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPytU2q7RmehrJyRnXRIZp7qcoswSANsClJP8v3zv6D7 root@o44'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFS0XtUKLgDqciQLr64VbtQSTlz7eHuvA8x9QZiAg9RA root@o45'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMUnxlKIffm8a5BmoQE40h8ut0R6eCxcm+Iewv3evmE9 root@oolm-shop' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMUnxlKIffm8a5BmoQE40h8ut0R6eCxcm+Iewv3evmE9 root@oolm-shop'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF4ylglAkPst7G6kES2lE96ECp0AGXGjzCVkZSqGVru6 root@oolm-shop-dev' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF4ylglAkPst7G6kES2lE96ECp0AGXGjzCVkZSqGVru6 root@oolm-shop-dev'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIUZ0WNd3rTqHH1tiXAELwssGw6xUP1ROdhgxKbMinYY root@oolm-web' - 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIUZ0WNd3rTqHH1tiXAELwssGw6xUP1ROdhgxKbMinYY root@oolm-web'
@@ -472,6 +472,13 @@ samba_user:
- gubitz-partner - gubitz-partner
password: '20-heckert.22%' password: '20-heckert.22%'
- name: bauhofer
groups:
- buero
- intern
- verwaltung
password: '20-bau.hofer-26'
- name: schultheis - name: schultheis
groups: groups:
- intern - intern
@@ -25,6 +25,15 @@ sshd_permit_root_login: !!str "prohibit-password"
# vars used by apt.yml # vars used by apt.yml
# --- # ---
apt_install_extra_pkgs: true
apt_extra_pkgs:
- python3
- python3-venv
- python3-pip
- build-essential
- libxml2-dev
- libxslt1-dev
# --- # ---
# vars used by roles/common/tasks/systemd-resolved.yml # vars used by roles/common/tasks/systemd-resolved.yml
@@ -0,0 +1,24 @@
---
# ipt-firewall configuration for a.ns.oopen.de
# Generated by extract-fw-host-vars.py - review before committing!
# Place in: host_vars/<hostname>/ipt_firewall.yml
fw_manage_config: true
# --- Network
fw_ext_interfaces:
- "eth0"
fw_ext_ips_v4:
- "157.90.140.169"
fw_ext_ips_v6:
- "2a01:4f8:2220:37c3::169"
# --- Munin
munin_remote_ipv4: 37.27.121.227
munin_remote_ipv6: "2a01:4f9:3070:2bda::227"
# --- HTTP
fw_http_server_ips: $ext_1_ip
# --- Mail
fw_mail_client_ips: $ext_1_ip
+223
View File
@@ -0,0 +1,223 @@
---
# ---
# vars used by roles/ansible_dependencies
# ---
# ---
# vars used by roles/ansible_user
# ---
# ---
# vars used by roles/common/tasks/basic.yml
# ---
# ---
# vars used by roles/common/tasks/sshd.yml
# ---
# ---
# vars used by roles/common/tasks/apt.yml
# ---
# ---
# vars used by roles/common/tasks/systemd-resolved.yml
# ---
systemd_resolved: true
# CyberGhost - Schnelle Verbindung mit Keine-Logs-Datenschutzrichtlinie
# Primäre DNS-Adresse: 38.132.106.139
# Sekundäre DNS-Adresse: 194.187.251.67
#
# Cloudflare (USA) Bester kostenloser DNS-Server für Gaming mit zuverlässigen Verbindungen
# primäre DNS-Adresse
# IPv4: 1.1.1.1
# IPv6: 2606:4700:4700::1111
# sekundäre DNS-Adresse
# IPv4: 1.0.0.1
# IPv6: 2606:4700:4700::1001
#
# Google (USA) Public DNS - Großartige Kombination aus Geschwindigkeit und Sicherheit
# primäre DNS-Adresse
# IPv4: 8.8.8.8
# IPv6: 2001:4860:4860::8888
# sekundäre DNS-Adresse
# IPv4: 8.8.4.4
# IPv6: 2001:4860:4860::8844
#
# Quad9 (CH) - Blockiert mühelos schädliche Seiten und verhindert Phishing-Betrug
# primäre DNS-Adresse
# IPv4: 9.9.9.9
# IPv6: 2620:fe::fe
# sekundäre DNS-Adresse
# IPv4: 149.112.112.112
# IPv6: 2620:fe::9
#
# OpenNIC - https://www.opennic.org/
# IPv4: 195.10.195.195 - ns31.de
# IPv4: 94.16.114.254 - ns28.de
# IPv4: 51.254.162.59 - ns9.de
# IPv4: 194.36.144.87 - ns29.de
# IPv6: 2a00:f826:8:2::195 - ns31.de
#
# Freifunk München (normales DNS, DNS-over-TLS und DNS-over-HTTPS)
# IPv4: 5.1.66.255
# IPv6: 2001:678:e68:f000::
# Servername für DNS-over-TLS: dot.ffmuc.net
# IPv4: 185.150.99.255
# IPv6: 2001:678:ed0:f000::
# Servername für DNS-over-TLS: dot.ffmuc.net
# für iOS 14+: DoT-Server-Konfiguration (unsigniert, vom PrHdb)
resolved_nameserver:
- 185.12.64.2
- 2a01:4ff:ff00::add:1
- 185.12.64.1
- 2a01:4ff:ff00::add:2
# search domains
#
# If there are more than one search domains, then specify them here in the order in which
# the resolver should also search them
#
# resolved_domains: []
resolved_domains:
- ~.
- oopen.de
resolved_dnssec: false
# dns.as250.net: 194.150.168.168
#
resolved_fallback_nameserver:
- 194.150.168.168
# ---
# vars used by roles/common/tasks/cron.yml
# ---
cron_env_entries:
- name: PATH
job: /root/bin/admin-stuff;/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: SHELL
job: /bin/bash
insertafter: PATH
cron_user_special_time_entries:
- name: "Restart DNS Cache service 'systemd-resolved'"
special_time: reboot
job: "sleep 5 ; /bin/systemctl restart systemd-resolved"
insertafter: PATH
- name: "Check if postfix mailservice is running. Restart service if needed."
special_time: reboot
job: "sleep 10 ; /root/bin/monitoring/check_postfix.sh > /dev/null 2>&1"
insertafter: PATH
- name: "Check if mattermost service is running. Restart service if needed."
special_time: reboot
job: "sleep 10 ; /root/bin/monitoring/check_local_mattermost_service.sh > /dev/null 2>&1"
insertafter: PATH
cron_user_entries:
- name: "Check if mattermost service ist running - Restart Service if needed."
minute: '*/16'
hour: '*'
job: /root/bin/monitoring/check_local_mattermost_service.sh
- name: "Check if SSH service is running. Restart service if needed."
minute: '*/5'
hour: '*'
job: /root/bin/monitoring/check_ssh.sh
- name: "Check if Postfix Mailservice is up and running?"
minute: '*/15'
hour: '*'
job: /root/bin/monitoring/check_postfix.sh
- name: "Generate/Renew Let's Encrypt Certificates if needed (using dehydrated script)"
minute: '01'
hour: '05'
job: /var/lib/dehydrated/cron/dehydrated_cron.sh
- name: "Check whether all certificates are included in the VHOST configurations"
minute: '33'
hour: '05'
job: /var/lib/dehydrated/tools/update_ssl_directives.sh
# ---
# vars used by roles/common/tasks/users.yml
# ---
# ---
# vars used by roles/common/tasks/users-systemfiles.yml
# ---
# ---
# vars used by roles/common/tasks/webadmin-user.yml
# ---
extra_user:
- name: nd-admin
user_id: 1045
group_id: 1045
group: nd-admin
password: $y$j9T$1YJwHY0qdLimgtdOKlTxR1$/O9QWTpr0Y41TduR2GZ0FMCiIxFqOaXWSM9hmHRnv80
shell: /bin/bash
ssh_keys:
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO90culn3sicU2chTHn40ytcTay0nUIHap0uF/5fVM6P chris@sol'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOQHMUKlDh2ufno5pZOhUY5xFljC1R5zQ/GjOHDkS58D root@sol'
- 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKTjd4XFBdF/V9VdSZjy9G7nupBwaMqsrtQSP4Uctkrz org@rdsgn.de'
sudo_users:
- chris
- sysadm
- nd-admin
# ---
# vars used by roles/common/tasks/sudoers.yml
# ---
#
# see: roles/common/tasks/vars
# ---
# vars used by roles/common/tasks/caching-nameserver.yml
# ---
# ---
# vars used by roles/common/tasks/git.yml
# ---
git_firewall_repository:
name: ipt-server
repo: https://git.oopen.de/firewall/ipt-server
dest: /usr/local/src/ipt-server
# ==============================
# ---
# vars used by scripts/reset_root_passwd.yml
# ---
root_user:
name: root
password: $6$J1ssJfdshf/$mknQEPDcW4HN5.wFfawbamamywI7F7fhdZmaR1abNrc4DA7DNRx766lz3ygf9YV3gcmRq3QhJ3fBVlkwGMCvq.
@@ -0,0 +1,24 @@
---
# ipt-firewall configuration for a.ns.oopen.de
# Generated by extract-fw-host-vars.py - review before committing!
# Place in: host_vars/<hostname>/ipt_firewall.yml
fw_manage_config: true
# --- Network
fw_ext_interfaces:
- "eth0"
fw_ext_ips_v4:
- "135.181.239.139"
fw_ext_ips_v6:
- "2a01:4f9:3080:3d2d::139"
# --- Munin
munin_remote_ipv4: 37.27.121.227
munin_remote_ipv6: "2a01:4f9:3070:2bda::227"
# --- HTTP
fw_http_server_ips: $ext_1_ip
# --- Mail
fw_mail_client_ips: $ext_1_ip
@@ -0,0 +1,24 @@
---
# ipt-firewall configuration for a.ns.oopen.de
# Generated by extract-fw-host-vars.py - review before committing!
# Place in: host_vars/<hostname>/ipt_firewall.yml
fw_manage_config: true
# --- Network
fw_ext_interfaces:
- "eth0"
fw_ext_ips_v4:
- "95.217.194.17"
fw_ext_ips_v6:
- "2a01:4f9:4a:5114::17"
# --- Munin
munin_remote_ipv4: 37.27.121.227
munin_remote_ipv6: "2a01:4f9:3070:2bda::227"
# --- HTTP
fw_http_server_ips: $ext_1_ip
# --- Mail
fw_mail_client_ips: $ext_1_ip
+41
View File
@@ -0,0 +1,41 @@
---
# ipt-firewall configuration for a.ns.oopen.de
# Generated by extract-fw-host-vars.py - review before committing!
# Place in: host_vars/<hostname>/ipt_firewall.yml
fw_manage_config: true
# --- Network
fw_ext_interfaces:
- "eth0"
fw_ext_ips_v4:
- "159.69.74.147"
fw_ext_ips_v6:
- "2a01:4f8:231:19a7::147"
fw_local_interfaces:
- "eth1"
# --- Munin
munin_remote_ipv4: 37.27.121.227
munin_remote_ipv6: "2a01:4f9:3070:2bda::227"
# --- Outgoing / interfaces
fw_unprotected_ifs: eth1
# --- Access control IPv4
fw_allow_local_service_v4: "8065:tcp"
# --- Access control IPv6
fw_allow_local_service_v6: "8065:tcp"
# --- HTTP
fw_http_server_ips: $ext_1_ip
# --- Mail
fw_mail_client_ips: $ext_1_ip
# --- Mattermost
fw_mm_server_ips: $ext_1_ip
# --- Protection / limits
fw_limit_connections_per_source_IP: false
+328
View File
@@ -0,0 +1,328 @@
---
# ---
# vars used by roles/network_interfaces
# ---
# If true, all additional files in /etc/network/interfaces/interfaces.d/ are deleted
network_manage_devices: true
# Should the interfaces be reloaded after config change?
network_interface_reload: false
network_interface_path: /etc/network/interfaces.d
network_interface_required_packages:
- vlan
- bridge-utils
- ifmetric
- ifupdown
- ifenslave
network_interfaces:
- device: br0
# use only once per device (for the first device entry)
headline: br0 - bridge over device enp6s0
# auto & allow are only used for the first device entry
allow: [] # array of allow-[stanzas] eg. allow-hotplug
auto: true
family: inet
method: static
hwaddress: 08:bf:b8:a6:9b:96
description:
address: 135.181.239.145
netmask: 26
gateway: 135.181.239.129
metric:
pointopoint:
mtu:
scope:
# additional user by dhcp method
#
hostname:
leasehours:
leasetime:
vendor:
client:
# additional used by bootp method
#
bootfile:
server:
hwaddr:
# optional dns settings nameservers: []
#
# nameservers:
# - 194.150.168.168 # dns.as250.net
# - 91.239.100.100 # anycast.censurfridns.dk
# search: warenform.de
#
# ** MOVED TO systemd-resolved
#
nameservers:
search:
# optional bridge parameters bridge: {}
# bridge:
# ports:
# stp:
# fd:
# maxwait:
# waitport:
bridge:
ports: eno1 # for mor devices support a blank separated list
stp: !!str off
fd: 5
hello: 2
maxage: 12
# optional bonding parameters bond: {}
# bond:
# master
# primary
# slave
# method:
# miimon:
# lacp-rate:
# ad-select-rate:
# master:
# slaves:
bond: {}
# optional vlan settings | vlan: {}
# vlan: {}
# raw-device: 'eth0'
vlan: {}
# inline hook scripts
pre-up: [] # pre-up script lines
up:
- !!str "route add -net 135.181.239.128 netmask 255.255.255.192 gw 135.181.239.129 dev br0" # up script lines
post-up: [] # post-up script lines (alias for up)
pre-down: [] # pre-down script lines (alias for down)
down:
- !!str "route del -net 135.181.239.128 netmask 255.255.255.192 gw 135.181.239.129 dev br0" # up script lines
post-down: [] # post-down script lines
- device: br0
family: inet6
method: static
address: '2a01:4f9:3080:3d2d::2'
netmask: 64
gateway: 'fe80::1'
# ---
# vars used by roles/ansible_dependencies
# ---
# ---
# vars used by roles/ansible_user
# ---
# ---
# vars used by roles/common/tasks/basic.yml
# ---
# ---
# vars used by roles/common/tasks/sshd.yml
# ---
# ---
# vars used by roles/common/tasks/apt.yml
# ---
apt_install_extra_pkgs: true
apt_extra_pkgs:
- systemd-cryptsetup
# ---
# vars used by roles/common/tasks/systemd-resolved.yml
# ---
systemd_resolved: true
# CyberGhost - Schnelle Verbindung mit Keine-Logs-Datenschutzrichtlinie
# Primäre DNS-Adresse: 38.132.106.139
# Sekundäre DNS-Adresse: 194.187.251.67
#
# Cloudflare (USA) Bester kostenloser DNS-Server für Gaming mit zuverlässigen Verbindungen
# primäre DNS-Adresse
# IPv4: 1.1.1.1
# IPv6: 2606:4700:4700::1111
# sekundäre DNS-Adresse
# IPv4: 1.0.0.1
# IPv6: 2606:4700:4700::1001
#
# Google (USA) Public DNS - Großartige Kombination aus Geschwindigkeit und Sicherheit
# primäre DNS-Adresse
# IPv4: 8.8.8.8
# IPv6: 2001:4860:4860::8888
# sekundäre DNS-Adresse
# IPv4: 8.8.4.4
# IPv6: 2001:4860:4860::8844
#
# Quad9 (CH) - Blockiert mühelos schädliche Seiten und verhindert Phishing-Betrug
# primäre DNS-Adresse
# IPv4: 9.9.9.9
# IPv6: 2620:fe::fe
# sekundäre DNS-Adresse
# IPv4: 149.112.112.112
# IPv6: 2620:fe::9
#
# OpenNIC - https://www.opennic.org/
# IPv4: 195.10.195.195 - ns31.de
# IPv4: 94.16.114.254 - ns28.de
# IPv4: 51.254.162.59 - ns9.de
# IPv4: 194.36.144.87 - ns29.de
# IPv6: 2a00:f826:8:2::195 - ns31.de
#
# Freifunk München (normales DNS, DNS-over-TLS und DNS-over-HTTPS)
# IPv4: 5.1.66.255
# IPv6: 2001:678:e68:f000::
# Servername für DNS-over-TLS: dot.ffmuc.net
# IPv4: 185.150.99.255
# IPv6: 2001:678:ed0:f000::
# Servername für DNS-over-TLS: dot.ffmuc.net
# für iOS 14+: DoT-Server-Konfiguration (unsigniert, vom PrHdb)
resolved_nameserver:
- 185.12.64.1
- 2a01:4ff:ff00::add:2
- 185.12.64.2
- 2a01:4ff:ff00::add:1
# search domains
#
# If there are more than one search domains, then specify them here in the order in which
# the resolver should also search them
#
# resolved_domains: []
resolved_domains:
- ~.
- oopen.de
resolved_dnssec: false
# dns.as250.net: 194.150.168.168
#
resolved_fallback_nameserver:
- 194.150.168.168
# ---
# vars used by roles/common/tasks/cron.yml
# ---
cron_env_entries:
- name: PATH
job: /root/bin/admin-stuff;/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: SHELL
job: /bin/bash
insertafter: PATH
cron_user_special_time_entries:
- name: "Restart DNS Cache service 'systemd-resolved'"
special_time: reboot
job: "sleep 5 ; /bin/systemctl restart systemd-resolved"
insertafter: PATH
- name: "Check if postfix mailservice is running. Restart service if needed."
special_time: reboot
job: "sleep 10 ; /root/bin/monitoring/check_postfix.sh > /dev/null 2>&1"
insertafter: PATH
- name: "Check if Check if all autostart LX-Container are running."
special_time: reboot
job: "sleep 120 ; /root/bin/LXC/boot-autostart-lx-container.sh"
insertafter: PATH
- name: "Restart NTP service 'ntpsec'"
special_time: reboot
job: "sleep 2 ; /bin/systemctl restart ntpsec > /dev/null 2>&1"
insertafter: PATH
cron_user_entries:
- name: "Check if SSH service is running. Restart service if needed."
minute: '*/5'
hour: '*'
job: /root/bin/monitoring/check_ssh.sh
- name: "Check if Postfix Mailservice is up and running?"
minute: '*/15'
hour: '*'
job: /root/bin/monitoring/check_postfix.sh
- name: "Check if NTP service 'ntpsec' is up and running?"
minute: '*/30'
hour: '*'
job: /root/bin/monitoring/check_ntpsec_service.sh > /dev/null 2>&1
- name: "Check hard disc usage."
minute: '43'
hour: '6'
job: /root/bin/admin-stuff/check-disc-usage.sh -c 85
# ---
# vars used by roles/common/tasks/users.yml
# ---
# ---
# vars used by roles/common/tasks/users-systemfiles.yml
# ---
# ---
# vars used by roles/common/tasks/webadmin-user.yml
# ---
# ---
# vars used by roles/common/tasks/sudoers.yml
# ---
#
# see: roles/common/tasks/vars
# ---
# vars used by roles/common/tasks/caching-nameserver.yml
# ---
# ---
# vars used by roles/common/tasks/git.yml
# ---
git_firewall_repository:
name: ipt-server
repo: https://git.oopen.de/firewall/ipt-server
dest: /usr/local/src/ipt-server
# ==============================
# ---
# vars used by scripts/reset_root_passwd.yml
# ---
root_user:
name: root
password: $6$J1ssJfdshf/$mknQEPDcW4HN5.wFfawbamamywI7F7fhdZmaR1abNrc4DA7DNRx766lz3ygf9YV3gcmRq3QhJ3fBVlkwGMCvq.
+35
View File
@@ -0,0 +1,35 @@
---
# ipt-firewall configuration for a.mx.oopen.de
# Generated by extract-fw-host-vars.py - review before committing!
# Place in: host_vars/<hostname>/ipt_firewall.yml
fw_manage_config: true
# --- Network
fw_ext_interfaces:
- "br0"
fw_ext_ips_v4:
- "135.181.239.145"
fw_ext_ips_v6:
- "2a01:4f9:3080:3d2d::2"
fw_lxc_guest_ips_v4:
- "95.216.231.188"
- "135.181.239.139"
- "135.181.239.144"
fw_lxc_guest_ips_v6:
- "2a01:4f9:3080:3d2d::139"
- "2a01:4f9:3080:3d2d::144"
- "a01:4f9:3080:3d2d::188"
# --- Munin
munin_remote_ipv4: 37.27.121.227
munin_remote_ipv6: "2a01:4f9:3070:2bda::227"
# --- Bridged / LXC
fw_do_not_firewall_bridged_traffic: true
fw_do_not_firewall_lx_guest_systems: true
# --- Forwarding
fw_kernel_activate_forwarding: true
fw_kernel_forward_between_interfaces: true
@@ -238,6 +238,11 @@ cron_user_special_time_entries:
cron_user_entries: cron_user_entries:
- name: "Check load on thi machine"
minute: '*/5'
hour: '*'
job: /root/bin/monitoring/check_webservice_load.sh
- name: "Check if SSH service is running. Restart service if needed." - name: "Check if SSH service is running. Restart service if needed."
minute: '*/5' minute: '*/5'
hour: '*' hour: '*'
+27
View File
@@ -303,6 +303,10 @@ test-nd.oopen.de
o44.oopen.de o44.oopen.de
cl-nd.oopen.de cl-nd.oopen.de
# o45 - mm matomom h.mc
o45.oopen.de
mm-nd.oopen.de
# Hetzner Cloud # Hetzner Cloud
cl-nd-test.oopen.de cl-nd-test.oopen.de
@@ -532,6 +536,10 @@ test-nd.oopen.de
o44.oopen.de o44.oopen.de
cl-nd.oopen.de cl-nd.oopen.de
# o45 - mm matomom h.mc
o45.oopen.de
mm-nd.oopen.de
# Hetzner Cloud # Hetzner Cloud
cl-nd-test.oopen.de cl-nd-test.oopen.de
@@ -948,6 +956,9 @@ psono-ndm.oopen.de
# o29.oopen.de . Dissens # o29.oopen.de . Dissens
cl-dissens.oopen.de cl-dissens.oopen.de
# Hetzner cloud (CPX22) - Faire Mobilitaet
ki-fm.oopen.de
# Nextcloud / DokuWiki VBER # Nextcloud / DokuWiki VBER
o34.oopen.de o34.oopen.de
@@ -981,6 +992,9 @@ iam-nd.oopen.de
prometheus-nd.oopen.de prometheus-nd.oopen.de
web-nd.oopen.de web-nd.oopen.de
# o45 - ND
mm-nd.oopen.de
# GA - Gemeinschaft Altensclirf # GA - Gemeinschaft Altensclirf
ga-st-services.ga.netz ga-st-services.ga.netz
@@ -1126,6 +1140,9 @@ keycloak-nd.oopen.de
iam-nd.oopen.de iam-nd.oopen.de
prometheus-nd.oopen.de prometheus-nd.oopen.de
# o45 - ND
mm-nd.oopen.de
[mysql_server] [mysql_server]
@@ -1603,6 +1620,9 @@ o43.oopen.de
# ND - cloud # ND - cloud
o44.oopen.de o44.oopen.de
# o45 - mm matomom h.mc
o45.oopen.de
lxc-host-kb.anw-kb.netz lxc-host-kb.anw-kb.netz
@@ -1778,6 +1798,9 @@ test-nd.oopen.de
# o44 - ND cloud # o44 - ND cloud
cl-nd.oopen.de cl-nd.oopen.de
# o45 - ND
mm-nd.oopen.de
# Hetzner Cloud # Hetzner Cloud
cl-nd-test.oopen.de cl-nd-test.oopen.de
@@ -2033,6 +2056,10 @@ test-nd.oopen.de
o44.oopen.de o44.oopen.de
cl-nd.oopen.de cl-nd.oopen.de
# o45 - mm matomom h.mc
o45.oopen.de
mm-nd.oopen.de
# Hetzner Cloud # Hetzner Cloud
cl-nd-test.oopen.de cl-nd-test.oopen.de
@@ -29,7 +29,7 @@
- name: apt upgrade - name: apt upgrade
apt: apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true update_cache: "{{ not (apt_update | default(true) | bool) }}"
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: apt_upgrade|bool when: apt_upgrade|bool
tags: tags:
@@ -32,7 +32,7 @@
- name: apt upgrade - name: apt upgrade
apt: apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true update_cache: "{{ not (apt_update | default(true) | bool) }}"
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: apt_upgrade|bool when: apt_upgrade|bool
tags: tags:
@@ -56,7 +56,7 @@
- name: Upgrade packages - name: Upgrade packages
ansible.builtin.apt: ansible.builtin.apt:
upgrade: "{{ apt_upgrade_type | default('safe') }}" upgrade: "{{ apt_upgrade_type | default('safe') }}"
update_cache: true update_cache: "{{ not (apt_update | default(true) | bool) }}"
dpkg_options: "{{ (apt_upgrade_dpkg_options | default(['force-confdef','force-confold'])) | join(',') }}" dpkg_options: "{{ (apt_upgrade_dpkg_options | default(['force-confdef','force-confold'])) | join(',') }}"
when: (apt_upgrade | default(false)) | bool when: (apt_upgrade | default(false)) | bool
tags: [ansible-dependencies] tags: [ansible-dependencies]
@@ -32,7 +32,7 @@
- name: apt upgrade - name: apt upgrade
apt: apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true update_cache: "{{ not (apt_update | default(true) | bool) }}"
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: apt_upgrade|bool when: apt_upgrade|bool
tags: tags:
+1 -1
View File
@@ -32,7 +32,7 @@
- name: apt upgrade - name: apt upgrade
apt: apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true update_cache: "{{ not (apt_update | default(true) | bool) }}"
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: apt_upgrade|bool when: apt_upgrade|bool
tags: tags:
+38 -32
View File
@@ -1,12 +1,14 @@
--- ---
- name: Update timezone - name: Update timezone
command: dpkg-reconfigure --frontend noninteractive tzdata ansible.builtin.command:
cmd: dpkg-reconfigure --frontend noninteractive tzdata
changed_when: false
#- name: Restart ssh # - name: Restart ssh
# shell: sleep 3; systemctl restart sshd # shell: sleep 3; systemctl restart sshd
# async: 1 # async: 1
# poll: 0 # poll: 0
# Does NOT Work # Does NOT Work
# #
@@ -14,108 +16,112 @@
# Start request repeated too quickly. # Start request repeated too quickly.
# #
# See also: https://github.com/ansible/ansible-modules-core/issues/1533 # See also: https://github.com/ansible/ansible-modules-core/issues/1533
#
- name: Restart ssh - name: Restart ssh
service: ansible.builtin.service:
name: ssh name: ssh
state: restarted state: restarted
- name: Reload nfs - name: Reload nfs
service: ansible.builtin.service:
name: nfs-kernel-server name: nfs-kernel-server
state: reloaded state: reloaded
enabled: yes enabled: true
when: when:
- "groups['nfs_server']|string is search(inventory_hostname)" - "groups['nfs_server']|string is search(inventory_hostname)"
- name: Restart postfix - name: Restart postfix
service: ansible.builtin.service:
name: postfix name: postfix
state: restarted state: restarted
- name: Reload bind9 - name: Reload bind9
service: ansible.builtin.service:
name: bind9 name: bind9
state: reloaded state: reloaded
enabled: yes enabled: true
- name: Restart smbd - name: Restart smbd
service: ansible.builtin.service:
name: smbd name: smbd
daemon_reload: yes daemon_reload: true
state: restarted state: restarted
- name: Restart nmbd - name: Restart nmbd
service: ansible.builtin.service:
name: nmbd name: nmbd
daemon_reload: yes daemon_reload: true
state: restarted state: restarted
- name: Reload samba config - name: Reload samba config
shell: smbcontrol all reload-config ansible.builtin.command:
cmd: smbcontrol all reload-config
changed_when: false
when: when:
- inventory_hostname in groups['samba_server'] - inventory_hostname in groups['samba_server']
- name: Restart systemd-journald - name: Restart systemd-journald
service: ansible.builtin.service:
name: systemd-journald name: systemd-journald
state: restarted state: restarted
- name: Restart redis-server - name: Restart redis-server
vars: vars:
_daemon: "{{ 'redis' if ansible_facts['distribution'] == 'CentOS' else 'redis-server' }}" _daemon: "{{ 'redis' if ansible_facts['distribution'] == 'CentOS' else 'redis-server' }}"
service: ansible.builtin.service:
name: "{{ _daemon }}" name: "{{ _daemon }}"
state: restarted state: restarted
- name: Restart tor service - name: Restart tor service
service: ansible.builtin.service:
name: tor name: tor
state: restarted state: restarted
- name: Reload tor service - name: Reload tor service
service: ansible.builtin.service:
name: tor name: tor
state: reloaded state: reloaded
- name: Reload postfwd - name: Reload postfwd
service: ansible.builtin.service:
name: postfwd name: postfwd
state: reloaded state: reloaded
- name: Restart systemd-resolved - name: Restart systemd-resolved
service: ansible.builtin.service:
name: systemd-resolved name: systemd-resolved
state: restarted state: restarted
- name: Restart nfs-kernel-server - name: Restart nfs-kernel-server
service: ansible.builtin.service:
name: nfs-kernel-server name: nfs-kernel-server
state: restarted state: restarted
- name: Restart ntp - name: Restart ntp
service: ansible.builtin.service:
name: ntpsec name: ntpsec
daemon_reload: yes daemon_reload: true
state: restarted state: restarted
- name: Restart mariadb - name: Restart mariadb
service: ansible.builtin.service:
name: mariadb name: mariadb
daemon_reload: yes daemon_reload: true
state: restarted state: restarted
- name: Restart apache2 - name: Restart apache2
service: ansible.builtin.service:
name: apache2 name: apache2
daemon_reload: yes daemon_reload: true
state: restarted state: restarted
- name: Reload AppArmor profile clamd - name: Reload AppArmor profile clamd
command: apparmor_parser -r /etc/apparmor.d/usr.sbin.clamd ansible.builtin.command:
cmd: apparmor_parser -r /etc/apparmor.d/usr.sbin.clamd
changed_when: false
- name: Restart clamav-daemon - name: Restart clamav-daemon
service: ansible.builtin.service:
name: clamav-daemon name: clamav-daemon
state: restarted state: restarted
+6 -4
View File
@@ -166,10 +166,10 @@
- apt-configuration - apt-configuration
- name: (apt.yml) apt update - name: (apt.yml) apt update
ansible.builtin.apt: ansible.builtin.command: apt-get update # noqa: command-instead-of-module
update_cache: true
cache_valid_time: "{{ 0 if common_apt_config_updated is defined and common_apt_config_updated.changed else apt_update_cache_valid_time }}"
changed_when: false changed_when: false
environment:
DEBIAN_FRONTEND: noninteractive
when: apt_update|bool when: apt_update|bool
tags: tags:
- apt-update - apt-update
@@ -196,7 +196,9 @@
- name: (apt.yml) apt upgrade - name: (apt.yml) apt upgrade
ansible.builtin.apt: ansible.builtin.apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true # Cache refresh happens in the apt update task above.
# Keep fallback refresh only if apt_update is disabled.
update_cache: "{{ not (apt_update | bool) }}"
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: apt_upgrade|bool when: apt_upgrade|bool
tags: tags:
+9 -17
View File
@@ -224,28 +224,20 @@
tags: tags:
- unattended-upgrades - unattended-upgrades
- name: (basic.yml) check if /etc/apt/apt.conf.d/20auto-upgrades exists - name: (basic.yml) configure auto-upgrades periodic settings
ansible.builtin.stat: ansible.builtin.copy:
path: /etc/apt/apt.conf.d/20auto-upgrades dest: /etc/apt/apt.conf.d/20auto-upgrades
register: common_ua_enabled content: |
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
owner: root
group: root
mode: "0644"
when: when:
- ansible_facts['distribution'] == "Debian" - ansible_facts['distribution'] == "Debian"
tags: tags:
- unattended-upgrades - unattended-upgrades
- name: (basic.yml) activate unattended upgrades
ansible.builtin.command:
cmd: dpkg-reconfigure -plow unattended-upgrades
creates: /etc/apt/apt.conf.d/20auto-upgrades
environment:
DEBIAN_FRONTEND: noninteractive
DEBCONF_NONINTERACTIVE_SEEN: "true"
when:
- ansible_facts['distribution'] == "Debian"
- not common_ua_enabled.stat.exists
tags:
- unattended-upgrades
- name: (basic.yml) copy apt-listchanges.conf - name: (basic.yml) copy apt-listchanges.conf
ansible.builtin.template: ansible.builtin.template:
src: etc/apt/listchanges.conf.j2 src: etc/apt/listchanges.conf.j2
+4 -4
View File
@@ -4,10 +4,10 @@
# --- # ---
- name: (caching-nameserver.yml) update - name: (caching-nameserver.yml) update
ansible.builtin.apt: ansible.builtin.command: apt-get update # noqa: command-instead-of-module
update_cache: true
cache_valid_time: "{{ 0 if common_apt_config_updated is defined and common_apt_config_updated.changed else apt_update_cache_valid_time }}"
changed_when: false changed_when: false
environment:
DEBIAN_FRONTEND: noninteractive
when: when:
- ansible_facts["distribution"] == "Debian" - ansible_facts["distribution"] == "Debian"
- apt_update|bool - apt_update|bool
@@ -28,7 +28,7 @@
- name: (caching-nameserver.yml) upgrade - name: (caching-nameserver.yml) upgrade
ansible.builtin.apt: ansible.builtin.apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true update_cache: "{{ not (apt_update | bool) }}"
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: when:
- ansible_facts["distribution"] == "Debian" - ansible_facts["distribution"] == "Debian"
+13 -17
View File
@@ -8,22 +8,6 @@
else '/etc/redis/redis.conf' else '/etc/redis/redis.conf'
}} }}
- name: (redis-server.yml) update
ansible.builtin.apt:
update_cache: true
cache_valid_time: >-
{{
0
if apt_config_updated is defined and apt_config_updated.changed
else apt_update_cache_valid_time
}}
changed_when: false
when:
- ansible_facts['distribution'] == "Debian"
- apt_update|bool
tags:
- redis-server
- name: >- - name: >-
(redis-server.yml) Configure any half-installed packages (redis-server.yml) Configure any half-installed packages
'dpkg --configure -a' 'dpkg --configure -a'
@@ -37,10 +21,22 @@
tags: tags:
- redis-server - redis-server
- name: (redis-server.yml) update
ansible.builtin.command: apt-get update # noqa: command-instead-of-module
changed_when: false
environment:
DEBIAN_FRONTEND: noninteractive
when:
- ansible_facts['distribution'] == "Debian"
- apt_update|bool
tags:
- redis-server
- name: (redis-server.yml) upgrade - name: (redis-server.yml) upgrade
ansible.builtin.apt: ansible.builtin.apt:
upgrade: "{{ apt_upgrade_type }}" upgrade: "{{ apt_upgrade_type }}"
update_cache: true # apt cache refresh happens in the preceding redis update task
update_cache: false
dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}"
when: when:
- ansible_facts['distribution'] == "Debian" - ansible_facts['distribution'] == "Debian"
+2
View File
@@ -8,6 +8,7 @@
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ inventory_dir }}/files/homedirs/{{ user.name }}" path: "{{ inventory_dir }}/files/homedirs/{{ user.name }}"
delegate_to: localhost delegate_to: localhost
become: false
loop: "{{ default_user }}" loop: "{{ default_user }}"
loop_control: loop_control:
loop_var: user loop_var: user
@@ -19,6 +20,7 @@
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ inventory_dir }}/files/homedirs/root" path: "{{ inventory_dir }}/files/homedirs/root"
delegate_to: localhost delegate_to: localhost
become: false
register: common_local_template_dir_root register: common_local_template_dir_root
# -- # --
+2
View File
@@ -128,6 +128,7 @@
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ inventory_dir }}/files/homedirs/{{ item.name }}" path: "{{ inventory_dir }}/files/homedirs/{{ item.name }}"
delegate_to: localhost delegate_to: localhost
become: false
with_items: "{{ webadmin_user }}" with_items: "{{ webadmin_user }}"
loop_control: loop_control:
label: "{{ item.name }}" label: "{{ item.name }}"
@@ -268,6 +269,7 @@
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ inventory_dir }}/files/homedirs/webadmin/.vim" path: "{{ inventory_dir }}/files/homedirs/webadmin/.vim"
delegate_to: localhost delegate_to: localhost
become: false
register: common_local_template_dir_vim_webadmin register: common_local_template_dir_vim_webadmin
with_items: "{{ webadmin_user }}" with_items: "{{ webadmin_user }}"
loop_control: loop_control: