Compare commits

..

50 Commits

Author SHA1 Message Date
ace
c669ac9e36 bitwarden: bump to 1.34.3, helm chart 2.0.40 2025-08-05 19:29:38 +03:00
ace
cce620dca0 bitwarden: bump to 1.34.2, helm chart 2.0.39 2025-07-27 23:58:40 +03:00
ace
8bc72c25d6 gitea: bump to 1.24.3, helm chart 12.1.2
peertube: bump to 7.2.3, helm chart 0.4.5

mastodon: bump to v4.4.2, helm chart 6.5.1

gitea-act-runner: bump to 0.2.12, helm chart 0.1.13
2025-07-25 15:20:04 +03:00
ace
4cd0b9b606 mastodon: bump to v4.4.1, helm chart v6.5.0 2025-07-14 00:14:39 +03:00
ace
dd02301ecf mastodon: bump to v4.2.22, helm chart v5.1.9 2025-07-13 20:56:03 +03:00
ace
e380042c04 cert-manager: bump to v1.18.2, helm chart v1.18.2 2025-07-07 11:40:06 +03:00
ace
55fd39b008 adguard-home: bump to v0.107.63, helm chart v2.3.33
cert-manager: bump to v1.18.1, helm chart v1.18.1

gitea: bump to v1.24.2, helm chart v12.1.1

rspamd: bump to v3.12.1, helm chart v0.5.7

peertube: bump to v7.2.1, helm chart v0.4.4
2025-06-28 16:28:45 +03:00
ace
7ed4837d00 adguard-home: bump to v0.107.62, helm chart v2.3.32
roundcube: bump to v1.6.11, helm chart v0.4.6

cert-manager: bump to v1.17.2, helm chart v1.17.2

bitwarden: bump to v1.34.1, helm chart v2.0.38
2025-06-11 00:56:12 +03:00
ace
a85d4b1c04 fix dns integration for cert-manager 2025-06-11 00:55:44 +03:00
ace
160fdef1cf add gitignore 2025-05-26 19:40:42 +03:00
ace
ab2040d287 add k8s_cluster_name variable and bump gitea helm chart to 12.0.0 2025-05-23 13:05:30 +03:00
ace
8a727e5dbf knot: backup config 2025-05-23 13:05:14 +03:00
ace
f6e52e1f65 fix dns integration via external-dns deployment 2025-05-23 13:05:08 +03:00
ace
74ae2c4694 pwgen: rewrite checks and passwords generation 2025-05-23 13:05:03 +03:00
ace
e67b5702d5 gitea: bump to v1.23.6 with helm chart v11.0.1
cert-manager: bump to v1.17.1, helm chart v1.17.1
2025-03-27 12:37:13 +03:00
ace
cfbdf9cc99 ingress-nginx: bump v1.12.1 with helm chart v4.12.1
wikijs: bump to v2.5.307, helm chart v2.3.19

peertube: bump to v7.1.0, helm chart v0.4.2

adguard-home: bump to v0.107.59, helm chart v2.3.31
2025-03-25 16:27:56 +03:00
ace
ee7630d087 mastodon: bump to v4.2.19, helm chart v5.1.7 2025-03-14 23:39:20 +03:00
ace
2b2d7369ed rspamd: bump to v3.11.1, helm chart v0.5.6 2025-03-09 17:02:22 +03:00
ace
d5d7e94c44 gitea-act-runner: bump to v0.2.11, helm chart v0.1.12
gitea: bump to v1.23.4 with helm chart v11.0.0

mastodon: bump to v4.2.17, helm chart v5.1.6

adguard-home: bump to v0.107.57, helm chart v2.3.30
2025-03-02 17:25:16 +03:00
ace
b46b8db671 postfix: bump to v3.5.25, helm chart v0.1.7
dovecot: bump to v2.3.16, helm chart v0.1.8

rspamd: bump to v3.11.0, helm chart v0.5.5

roundcube: bump to v1.6.10, helm chart v0.4.5
2025-02-15 22:27:38 +03:00
ace
a97fca288f bitwarden: bump to v1.33.2, helm chart v2.0.37 2025-02-12 15:31:17 +03:00
ace
66e627144f bitwarden: bump to v1.33.1, helm chart v2.0.36
ikijs: bump to v2.5.306, helm chart v2.3.18

gitea: bump to v1.22.3 with helm chart v10.6.0
2025-02-06 00:36:46 +03:00
ace
b561d64770 peertube: bump to v7.0.1, helm chart v0.4.1
bitwarden: bump to v1.33.0, helm chart v2.0.35

adguard-home: bump to v0.107.56, helm chart v2.3.29

cert-manager: bump to v1.16.3, helm chart v1.16.3

metallb: bump to v0.14.9, helm chart v0.14.9
2025-01-26 17:13:27 +03:00
ace
e2201d03f7 peertube: bump to v7.0.0, helm chart v0.4.0
bitwarden: bump to v1.32.7, helm chart v2.0.34
2024-12-22 15:13:02 +03:00
ace
ee0305870a bitwarden: bump to v1.32.5, helm chart v2.0.32 2024-11-19 17:59:02 +03:00
ace
d8f13a79d4 bitwarden: bump to v1.32.4, helm chart v2.0.31
adguard-home: bump to v0.107.54, helm chart v2.3.28
2024-11-11 13:34:56 +03:00
ace
53334d338a rspamd: bump to v3.10.2, helm chart v0.5.4
peertube: bump to v6.3.3, helm chart v0.3.8

bitwarden: bump to v1.32.3, helm chart v2.0.30
2024-11-03 17:07:06 +03:00
ace
9efcd2ffa1 gitea: bump to v1.22.3 with helm chart v10.5.0 2024-10-21 11:47:12 +03:00
ace
9a390d4637 bitwarden: bump to v1.32.2, helm chart v2.0.29
wikijs: bump to v2.5.305, helm chart v2.3.17
2024-10-14 11:20:34 +03:00
ace
d32fd50715 peertube: bump to v6.3.2, helm chart v0.3.7 2024-10-08 14:42:07 +03:00
ace
9309c4de87 peertube: bump to v6.3.1, helm chart v0.3.6 2024-10-08 10:58:12 +03:00
ace
f4646f1a49 gitea-act-runner: bump to v0.2.11, helm chart v0.1.11 2024-10-06 22:08:57 +03:00
ace
1fd0d78314 bitwarden: bump to v1.32.1, helm chart v2.0.28
adguard-home: bump to v0.107.53, helm chart v2.3.27
2024-10-04 04:57:34 +03:00
ace
5adaf91a44 wikijs: bump to v2.5.304, helm chart v2.3.16 2024-09-22 22:22:09 +03:00
ace
4db7240f5a gitea: bump to v1.22.2 with helm chart v10.4.1 2024-09-12 14:51:01 +03:00
ace
526bc6c2c0 roundcube: bump to v1.6.9, helm chart v0.4.4 2024-09-03 19:41:26 +03:00
ace
70a50a5c15 update dovecot, postfix and rspamd 2024-08-24 03:30:37 +03:00
ace
4c0646972c postgres-operator: bump to v1.13.0, helm chart v1.13.0
postgres-operator-ui: bump to v1.13.0, helm chart v1.13.0
2024-08-24 03:12:47 +03:00
ace
e221d7fa65 mastodon: bump to v4.2.12, helm chart v5.1.5 2024-08-19 19:25:12 +03:00
ace
bc214c1763 cert-manager: bump to v1.15.3, helm chart v1.15.3
mastodon: bump to v4.2.11, helm chart v5.1.4
2024-08-19 14:16:20 +03:00
ace
21614ffc2e update services versions 2024-08-13 02:50:15 +03:00
ace
2a83565d59 bitwarden: bump to v1.31.0, helm chart v2.0.26
peertube: bump to v6.2.1, helm chart v0.3.5
2024-08-03 00:42:44 +03:00
ace
87d7312099 mastodon: bump to v4.2.10, helm chart v5.1.3 2024-07-05 01:20:13 +03:00
ace
7d4b66a777 nextcloud: bump to v29.0.3, helm chart v5.0.2 2024-06-30 01:15:18 +03:00
ace
e05607693a cert-manager: bump to v1.14.6, helm chart v1.14.6
postgres-operator: bump to v1.12.2, helm chart v1.12.2

postgres-operator-ui: bump to v1.12.2, helm chart v1.12.2
2024-06-16 17:39:16 +03:00
ace
c16ab291dd fix selinux for haproxy 2024-06-16 17:39:10 +03:00
ace
5a980d28ad fix selinux for nginx 2024-06-16 17:39:08 +03:00
ace
4bdaff7cca fix vps playbook 2024-06-01 19:09:58 +03:00
ace
2991123422 mastodon: bump to vv4.2.9, helm chart v5.1.2
postgres-operator: bump to v1.12.0, helm chart v1.12.0

postgres-operator-ui: bump to v1.12.0, helm chart v1.12.0
2024-06-01 03:42:30 +03:00
ace
e9c70618f6 roundcube: fix tls 2024-06-01 03:42:18 +03:00
27 changed files with 332 additions and 436 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.venv

View File

@@ -1,4 +1,5 @@
# Common # # Common #
k8s_cluster_name: mycluster
namespace: ghp namespace: ghp
docker_registry: gitea.geekhome.org/ghp docker_registry: gitea.geekhome.org/ghp
domain: example.com domain: example.com

View File

@@ -1,5 +1,5 @@
# MetalLB balancer # MetalLB balancer
metallb_version: 0.14.5 metallb_version: 0.14.9
# NFS provisioners # NFS provisioners
nfs_client_provisioner_hdd_version: 4.0.18 nfs_client_provisioner_hdd_version: 4.0.18
@@ -12,7 +12,7 @@ ceph_csi_rbd_version: 3.8.0
ceph_csi_cephfs_version: 3.8.0 ceph_csi_cephfs_version: 3.8.0
# Cert-manager # Cert-manager
cert_manager_version: 1.14.5 cert_manager_version: 1.18.2
# External-DNS # External-DNS
external_dns_version: 6.31.0 external_dns_version: 6.31.0
@@ -21,13 +21,13 @@ internal_dns_version: 6.31.0
service_dns_version: 6.31.0 service_dns_version: 6.31.0
# Ingress Nginx # Ingress Nginx
external_ingress_nginx_version: 4.2.3 external_ingress_nginx_version: 4.12.1
internal_ingress_nginx_version: 4.2.3 internal_ingress_nginx_version: 4.12.1
local_ingress_nginx_version: 4.2.3 local_ingress_nginx_version: 4.12.1
# PostgreSQL operator # PostgreSQL operator
postgres_operator_version: 1.11.0 postgres_operator_version: 1.13.0
postgres_operator_ui_version: 1.11.0 postgres_operator_ui_version: 1.13.0
# OpenLDAP # OpenLDAP
openldap_version: 1.2.7 openldap_version: 1.2.7
@@ -36,42 +36,42 @@ openldap_version: 1.2.7
minio_version: 5.0.13 minio_version: 5.0.13
# Adguard Home # Adguard Home
adguard_version: 2.3.26 adguard_version: 2.3.33
# Bitwarden (aka Vaultwarden) # Bitwarden (aka Vaultwarden)
bitwarden_version: 2.0.25 bitwarden_version: 2.0.40
# Gitea # Gitea
gitea_ingress_nginx_version: 4.2.3 gitea_ingress_nginx_version: 4.12.1
gitea_dns_version: 6.31.0 gitea_dns_version: 6.31.0
gitea_version: 10.1.4 gitea_version: 12.1.2
# Gitea Act Runner # Gitea Act Runner
gitea_act_runner_version: 0.1.10 gitea_act_runner_version: 0.1.13
# Docker and Helm chart registries # Docker and Helm chart registries
harbor_version: 1.12.4 harbor_version: 1.12.4
# Mastodon # Mastodon
mastodon_version: 4.0.1 mastodon_version: 6.5.1
# Nextcloud # Nextcloud
nextcloud_version: 4.6.4 nextcloud_version: 5.0.2
# Email # Email
dovecot_version: 0.1.6 dovecot_version: 0.1.8
postfix_version: 0.1.5 postfix_version: 0.1.7
roundcube_version: 0.4.2 roundcube_version: 0.4.6
rspamd_version: 0.5.2 rspamd_version: 0.5.7
# Pypi server # Pypi server
pypiserver_version: 2.5.0 pypiserver_version: 2.5.0
# WikiJS # WikiJS
wikijs_version: 2.3.15 wikijs_version: 2.3.19
# PeerTube # PeerTube
peertube_version: 0.3.4 peertube_version: 0.4.5
# Playmaker android APK repository # Playmaker android APK repository
playmaker_version: 0.1.3 playmaker_version: 0.1.3

View File

@@ -12,20 +12,14 @@ knot_conf: |
any: debug any: debug
key: key:
- id: k8s - id: k8s-{{ k8s_cluster_name }}-{{ namespace }}
algorithm: hmac-sha512 algorithm: hmac-sha512
secret: {{ k8s_tsig }} secret: {{ k8s_tsig }}
- id: vps - id: ddclient-{{ k8s_cluster_name }}-{{ namespace }}
algorithm: hmac-sha512 algorithm: hmac-sha512
secret: {{ ddclient_tsig }} secret: {{ ddclient_tsig }}
remote:
# - id: slave
# address: 192.168.1.1@53
#
# - id: master
# address: 192.168.2.1@53
remote: remote:
- id: dns_server - id: dns_server
address: 127.0.0.1@53 address: 127.0.0.1@53
@@ -34,24 +28,15 @@ knot_conf: |
- id: dns_zone_sbm - id: dns_zone_sbm
parent: [dns_server] parent: [dns_server]
acl: acl:
- id: deny_all - id: deny_all
deny: on # no action specified and deny on implies denial of all actions deny: on # no action specified and deny on implies denial of all actions
- id: key_rule - id: key_rule
key: [vps, k8s] # Access based just on TSIG key key: [k8s-{{ k8s_cluster_name }}-{{ namespace }},ddclient-{{ k8s_cluster_name }}-{{ namespace }}] # Access based just on TSIG key
address: 192.168.0.0/16 address: 192.168.0.0/16
action: [transfer, notify, update] action: [transfer, notify, update]
# - id: acl_slave
# address: 192.168.1.1
# action: transfer
# - id: acl_master
# address: 192.168.2.1
# action: notify
template: template:
- id: default - id: default
storage: "/var/lib/knot" storage: "/var/lib/knot"
@@ -73,14 +58,3 @@ knot_conf: |
dnssec-signing: on dnssec-signing: on
dnssec-policy: rsa dnssec-policy: rsa
zonefile-load: difference zonefile-load: difference
# # Master zone
# - domain: example.com
# notify: slave
# acl: acl_slave
# # Slave zone
# - domain: example.net
# master: master
# acl: acl_master

View File

@@ -1,15 +1,18 @@
--- ---
- hosts: web_proxy - hosts: web_proxy
become: true
roles: roles:
- nginx - nginx
tags: web-proxy tags: web-proxy
- hosts: mail_proxy - hosts: mail_proxy
become: true
roles: roles:
- haproxy - haproxy
tags: mail-proxy tags: mail-proxy
- hosts: ddclient - hosts: ddclient
become: true
roles: roles:
- { role: docker, when: ddclient_container_engine == "docker" } - { role: docker, when: ddclient_container_engine == "docker" }
- { role: podman, when: ddclient_container_engine == "podman" } - { role: podman, when: ddclient_container_engine == "podman" }

View File

@@ -3,4 +3,5 @@ cert_manager_namespace: "cert-manager"
cert_manager_lets_encrypt_mailbox: "admin@{{ domain }}" cert_manager_lets_encrypt_mailbox: "admin@{{ domain }}"
cert_manager_base64_tsig_key: "{{ k8s_tsig | b64encode }}" cert_manager_base64_tsig_key: "{{ k8s_tsig | b64encode }}"
cert_manager_default_values: cert_manager_default_values:
installCRDs: true crds:
enabled: true

View File

@@ -50,7 +50,7 @@
rfc2136: rfc2136:
nameserver: "{{ external_dns_ip | default(dns_ip) }}:53" nameserver: "{{ external_dns_ip | default(dns_ip) }}:53"
tsigAlgorithm: HMACSHA512 tsigAlgorithm: HMACSHA512
tsigKeyName: k8s tsigKeyName: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
tsigSecretSecretRef: tsigSecretSecretRef:
key: tsig-secret-key key: tsig-secret-key
name: tsig-secret name: tsig-secret
@@ -81,7 +81,7 @@
rfc2136: rfc2136:
nameserver: "{{ external_dns_ip | default(dns_ip) }}:53" nameserver: "{{ external_dns_ip | default(dns_ip) }}:53"
tsigAlgorithm: HMACSHA512 tsigAlgorithm: HMACSHA512
tsigKeyName: k8s tsigKeyName: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
tsigSecretSecretRef: tsigSecretSecretRef:
key: tsig-secret-key key: tsig-secret-key
name: tsig-secret name: tsig-secret

View File

@@ -1,4 +1,6 @@
external_dns_chart_ref: "bitnami/external-dns" external_dns_chart_ref: "bitnami/external-dns"
external_dns_tsigKeyname: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
external_dns_tsigSecretAlg: "hmac-sha512"
external_dns_default_values: external_dns_default_values:
fullnameOverride: "{{ external_dns_name | default(namespace + '-external-dns') }}" fullnameOverride: "{{ external_dns_name | default(namespace + '-external-dns') }}"
ingressClassFilters: ["{{ external_ingress_class }}"] ingressClassFilters: ["{{ external_ingress_class }}"]
@@ -9,8 +11,8 @@ external_dns_default_values:
port: 53 port: 53
zone: "{{ external_domain | default(domain) }}" zone: "{{ external_domain | default(domain) }}"
tsigSecret: "{{ k8s_tsig }}" tsigSecret: "{{ k8s_tsig }}"
tsigSecretAlg: "{{ external_dns_tsigSecretAlg | default('hmac-sha512') }}" tsigSecretAlg: "{{ external_dns_tsigSecretAlg }}"
tsigKeyname: "{{ external_dns_tsigKeyname | default('k8s') }}" tsigKeyname: "{{ external_dns_tsigKeyname }}"
tsigAxfr: true tsigAxfr: true
## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration ## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration
minTTL: "30s" minTTL: "30s"

View File

@@ -32,7 +32,7 @@ gitea_default_values:
hosts: hosts:
- "{{ gitea_short_name }}.{{ domain }}" - "{{ gitea_short_name }}.{{ domain }}"
redis-cluster: valkey-cluster:
enabled: false enabled: false
postgresql-ha: postgresql-ha:
@@ -153,6 +153,8 @@ gitea_ingress_nginx_default_values:
gitea_dns_chart_ref: "bitnami/external-dns" gitea_dns_chart_ref: "bitnami/external-dns"
gitea_dns_tsigKeyname: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
gitea_dns_tsigSecretAlg: "hmac-sha512"
gitea_dns_default_values: gitea_dns_default_values:
fullnameOverride: "{{ gitea_dns_name | default(namespace + '-gitea-internal-dns') }}" fullnameOverride: "{{ gitea_dns_name | default(namespace + '-gitea-internal-dns') }}"
ingressClassFilters: ["{{ gitea_ingress_class }}"] ingressClassFilters: ["{{ gitea_ingress_class }}"]
@@ -163,8 +165,8 @@ gitea_dns_default_values:
port: 53 port: 53
zone: "{{ domain }}" zone: "{{ domain }}"
tsigSecret: "{{ k8s_tsig }}" tsigSecret: "{{ k8s_tsig }}"
tsigSecretAlg: "{{ gitea_dns_tsigSecretAlg | default('hmac-sha512') }}" tsigSecretAlg: "{{ gitea_dns_tsigSecretAlg }}"
tsigKeyname: "{{ gitea_dns_tsigKeyname | default('k8s') }}" tsigKeyname: "{{ gitea_dns_tsigKeyname }}"
tsigAxfr: true tsigAxfr: true
## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration ## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration
minTTL: "30s" minTTL: "30s"

View File

@@ -13,6 +13,13 @@
- restart haproxy - restart haproxy
when: haproxy_config is defined when: haproxy_config is defined
- name: set haproxy_connect_any flag on and keep it persistent across reboots
ansible.posix.seboolean:
name: haproxy_connect_any
state: yes
persistent: yes
when: ansible_selinux is defined and ansible_selinux != False and ansible_selinux.status == 'enabled'
- name: start haproxy service - name: start haproxy service
systemd: systemd:
name: haproxy name: haproxy

View File

@@ -1,4 +1,6 @@
internal_dns_chart_ref: "bitnami/external-dns" internal_dns_chart_ref: "bitnami/external-dns"
internal_dns_tsigKeyname: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
internal_dns_tsigSecretAlg: "hmac-sha512"
internal_dns_default_values: internal_dns_default_values:
fullnameOverride: "{{ internal_dns_name | default(namespace + '-internal-dns') }}" fullnameOverride: "{{ internal_dns_name | default(namespace + '-internal-dns') }}"
ingressClassFilters: ["{{ internal_ingress_class }}"] ingressClassFilters: ["{{ internal_ingress_class }}"]
@@ -9,8 +11,8 @@ internal_dns_default_values:
port: 53 port: 53
zone: "{{ internal_domain | default(domain) }}" zone: "{{ internal_domain | default(domain) }}"
tsigSecret: "{{ k8s_tsig }}" tsigSecret: "{{ k8s_tsig }}"
tsigSecretAlg: "{{ internal_dns_tsigSecretAlg | default('hmac-sha512') }}" tsigSecretAlg: "{{ internal_dns_tsigSecretAlg }}"
tsigKeyname: "{{ internal_dns_tsigKeyname | default(namespace) }}" tsigKeyname: "{{ internal_dns_tsigKeyname }}"
tsigAxfr: true tsigAxfr: true
## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration ## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration
minTTL: "30s" minTTL: "30s"

View File

@@ -29,6 +29,7 @@
owner: "root" owner: "root"
group: "knot" group: "knot"
validate: "knotc -c %s conf-check" validate: "knotc -c %s conf-check"
backup: true
notify: Restart knot notify: Restart knot
- name: Enable and start knot - name: Enable and start knot

View File

@@ -1,4 +1,6 @@
local_dns_chart_ref: "bitnami/external-dns" local_dns_chart_ref: "bitnami/external-dns"
local_dns_tsigKeyname: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
local_dns_tsigSecretAlg: "hmac-sha512"
local_dns_default_values: local_dns_default_values:
fullnameOverride: "{{ local_dns_name | default(namespace + '-local-dns') }}" fullnameOverride: "{{ local_dns_name | default(namespace + '-local-dns') }}"
ingressClassFilters: ["{{ local_ingress_class }}"] ingressClassFilters: ["{{ local_ingress_class }}"]
@@ -9,8 +11,8 @@ local_dns_default_values:
port: 53 port: 53
zone: "{{ local_domain }}" zone: "{{ local_domain }}"
tsigSecret: "{{ k8s_tsig }}" tsigSecret: "{{ k8s_tsig }}"
tsigSecretAlg: "{{ local_dns_tsigSecretAlg | default('hmac-sha512') }}" tsigSecretAlg: "{{ local_dns_tsigSecretAlg }}"
tsigKeyname: "{{ local_dns_tsigKeyname | default(namespace) }}" tsigKeyname: "{{ local_dns_tsigKeyname }}"
tsigAxfr: true tsigAxfr: true
## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration ## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration
minTTL: "30s" minTTL: "30s"

View File

@@ -26,42 +26,25 @@ mastodon_default_values:
- "{{ mastodon_short_name }}.{{ domain }}" - "{{ mastodon_short_name }}.{{ domain }}"
mastodon: mastodon:
# create an initial administrator user; the password is autogenerated and will
# have to be reset
createAdmin: createAdmin:
enabled: true enabled: true
username: "{{ mastodon_admin_user | default(mastodon_admin_username) | default('mastodon') }}" username: "{{ mastodon_admin_user | default(mastodon_admin_username) | default('mastodon') }}"
password: "{{ mastodon_admin_pass | default(mastodon_admin_password) }}" password: "{{ mastodon_admin_pass | default(mastodon_admin_password) }}"
email: "{{ mastodon_admin_email }}" email: "{{ mastodon_admin_email }}"
# available locales: https://github.com/tootsuite/mastodon/blob/master/config/application.rb#L43
locale: en locale: en
local_domain: "{{ mastodon_short_name }}.{{ domain }}" local_domain: "{{ mastodon_short_name }}.{{ domain }}"
cron:
# run `tootctl media remove` every week
removeMedia:
enabled: true
schedule: "0 0 * * 0"
web:
port: 3000
streaming:
port: 4000
# this should be set manually since os.cpus() returns the number of CPUs on
# the node running the pod, which is unrelated to the resources allocated to
# the pod by k8s
workers: 2
sidekiq:
concurrency: 25
# these must be set manually; autogenerated keys are rotated on each upgrade
secrets: secrets:
secret_key_base: "{{ mastodon_vapid_public_key_base64 | hash('sha256') }}" secret_key_base: "{{ mastodon_vapid_public_key_base64 | hash('sha256') }}"
otp_secret: "{{ mastodon_vapid_public_key_base64 | hash('sha256') | hash('sha256') }}" otp_secret: "{{ mastodon_vapid_public_key_base64 | hash('sha256') | hash('sha256') }}"
vapid: vapid:
private_key: "{{ mastodon_vapid_private_key_base64 | b64decode }}" private_key: "{{ mastodon_vapid_private_key_base64 | b64decode }}"
public_key: "{{ mastodon_vapid_public_key_base64 | b64decode }}" public_key: "{{ mastodon_vapid_public_key_base64 | b64decode }}"
activeRecordEncryption:
primaryKey: "{{ mastodon_primary_key_secret }}"
deterministicKey: "{{ mastodon_deterministic_key_secret }}"
keyDerivationSalt: "{{ mastodon_key_derivation_salt_secret }}"
smtp: smtp:
auth_method: login auth_method: login
@@ -95,11 +78,6 @@ mastodon_default_values:
storage: "{{ mastodon_system_size | default('100Gi') }}" storage: "{{ mastodon_system_size | default('100Gi') }}"
elasticsearch: elasticsearch:
# `false` will disable full-text search
#
# if you enable ES after the initial install, you will need to manually run
# RAILS_ENV=production bundle exec rake chewy:sync
# (https://docs.joinmastodon.org/admin/optional/elasticsearch/)
enabled: "{{ mastodon_enable_elasticsearch }}" enabled: "{{ mastodon_enable_elasticsearch }}"
master: master:
name: master name: master
@@ -116,20 +94,14 @@ mastodon_default_values:
## ##
replicas: 1 replicas: 1
# https://github.com/bitnami/charts/tree/master/bitnami/postgresql#parameters
postgresql: postgresql:
# Disable for external PostgreSQL
enabled: false enabled: false
postgresqlHostname: "{{ namespace }}-postgres.{{ postgres_db_namespace | default(namespace) }}.svc.cluster.local" postgresqlHostname: "{{ namespace }}-postgres.{{ postgres_db_namespace | default(namespace) }}.svc.cluster.local"
# you must set a password; the password generated by the postgresql chart will
# be rotated on each upgrade:
# https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade
auth: auth:
database: mastodon database: mastodon
username: "{{ mastodon_db_username }}" username: "{{ mastodon_db_username }}"
password: "{{ mastodon_db_password }}" password: "{{ mastodon_db_password }}"
# https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters
redis: redis:
architecture: standalone architecture: standalone
enabled: true enabled: true

View File

@@ -15,38 +15,3 @@
chart_ref: "{{ mastodon_chart_ref }}" chart_ref: "{{ mastodon_chart_ref }}"
chart_version: "{{ mastodon_version | default(omit) }}" chart_version: "{{ mastodon_version | default(omit) }}"
release_values: "{{ mastodon_combined_values | from_yaml }}" release_values: "{{ mastodon_combined_values | from_yaml }}"
- name: Search for mastodon web pod
kubernetes.core.k8s_info:
kind: Pod
namespace: "{{ mastodon_namespace | default(namespace) }}"
label_selectors:
- app.kubernetes.io/component=web
- app.kubernetes.io/instance=mastodon
register: mastodon_web_pod_name
- name: Remove mastodon web pod for restart
kubernetes.core.k8s:
state: absent
api_version: v1
kind: Pod
namespace: "{{ mastodon_namespace | default(namespace) }}"
name: "{{ mastodon_web_pod_name.resources[0].metadata.name }}"
- name: Search for mastodon streaming pod
kubernetes.core.k8s_info:
kind: Pod
namespace: "{{ mastodon_namespace | default(namespace) }}"
label_selectors:
- app.kubernetes.io/component=streaming
- app.kubernetes.io/instance=mastodon
register: mastodon_streaming_pod_name
- name: Remove mastodon streaming pod for restart
kubernetes.core.k8s:
state: absent
api_version: v1
kind: Pod
namespace: "{{ mastodon_namespace | default(namespace) }}"
name: "{{ mastodon_streaming_pod_name.resources[0].metadata.name }}"

View File

@@ -10,3 +10,17 @@
register: install_nginx_result register: install_nginx_result
tags: tags:
- nginx-install - nginx-install
- name: set httpd_can_network_connect flag on and keep it persistent across reboots
ansible.posix.seboolean:
name: httpd_can_network_connect
state: yes
persistent: yes
when: ansible_selinux is defined and ansible_selinux != False and ansible_selinux.status == 'enabled'
- name: set httpd_can_network_relay flag on and keep it persistent across reboots
ansible.posix.seboolean:
name: httpd_can_network_relay
state: yes
persistent: yes
when: ansible_selinux is defined and ansible_selinux != False and ansible_selinux.status == 'enabled'

View File

@@ -20,6 +20,7 @@ postgres_operator_ui_default_values:
envs: envs:
# IMPORTANT: While operator chart and UI chart are idendependent, this is the interface between # IMPORTANT: While operator chart and UI chart are idendependent, this is the interface between
# UI and operator API. Insert the service name of the operator API here! # UI and operator API. Insert the service name of the operator API here!
appUrl: "https://{{ postgres_operator_ui_short_name }}.{{ domain }}"
operatorApiUrl: "http://postgres-operator:8080" operatorApiUrl: "http://postgres-operator:8080"
operatorClusterNameLabel: "cluster-name" operatorClusterNameLabel: "cluster-name"
resourcesVisible: "False" resourcesVisible: "False"

View File

@@ -20,6 +20,9 @@ default_accounts:
secret_keys: secret_keys:
- { name: peertube } - { name: peertube }
- { name: harbor } - { name: harbor }
- { name: mastodon_primary_key }
- { name: mastodon_deterministic_key }
- { name: mastodon_key_derivation_salt }
htpasswd_accounts: htpasswd_accounts:
- { name: pypiserver_admin } - { name: pypiserver_admin }

View File

@@ -1,47 +1,36 @@
- name: Test if DKIM private key exists - name: Generate DKIM keys
shell: grep -c "dkim_private_key_base64" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true when: passwords['dkim_public_key_base64'] is not defined or passwords['dkim_private_key_base64'] is not defined
register: dkim_private_key_test_grep block:
- name: Create DKIM keys
docker_container:
name: ddclient
image: "{{ docker_registry }}/pwgen"
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "sh dkim-key.sh {{ mail_domain | default(domain) }}"
register: dkim_container_output
- name: Test if DKIM public key exists - name: Set dkim_keys
shell: grep -c "dkim_public_key_base64" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true set_fact:
register: dkim_public_key_test_grep dkim_keys: "{{ dkim_container_output.container.Output | from_yaml }}"
- name: Create DKIM keys - name: Show DKIM private key
docker_container: debug:
name: ddclient msg: "ddclient private key: {{ dkim_keys['dkim'][0]['default.private'] | b64decode }}"
image: "{{ docker_registry }}/pwgen" verbosity: 2
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "sh dkim-key.sh {{ mail_domain | default(domain) }}"
register: dkim_container_output
when: dkim_private_key_test_grep.stdout == '0' or dkim_public_key_test_grep.stdout == '0'
- name: Set ddclient_key - name: Show DKIM public key
set_fact: debug:
dkim_keys: "{{ dkim_container_output.container.Output | from_yaml }}" msg: "ddclient public key: {{ dkim_keys['dkim'][0]['default.txt'] | b64decode }}"
when: dkim_private_key_test_grep.stdout == '0' or dkim_public_key_test_grep.stdout == '0' verbosity: 2
- name: Show DKIM private key - name: Write DKIM private key
debug: lineinfile:
msg: "ddclient private key: {{ dkim_keys['dkim'][0]['default.private'] | b64decode }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "dkim_private_key_base64: \"{{ dkim_keys['dkim'][0]['default.private'] }}\""
when: dkim_private_key_test_grep.stdout == '0'
- name: Show DKIM public key - name: Write DKIM public key
debug: lineinfile:
msg: "ddclient public key: {{ dkim_keys['dkim'][0]['default.txt'] | b64decode }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "dkim_public_key_base64: \"{{ dkim_keys['dkim'][0]['default.txt'] }}\""
when: dkim_public_key_test_grep.stdout == '0'
- name: Write DKIM private key
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "dkim_private_key_base64: \"{{ dkim_keys['dkim'][0]['default.private'] }}\""
when: dkim_private_key_test_grep.stdout == '0'
- name: Write DKIM public key
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "dkim_public_key_base64: \"{{ dkim_keys['dkim'][0]['default.txt'] }}\""
when: dkim_public_key_test_grep.stdout == '0'

View File

@@ -1,46 +1,36 @@
- name: Test if password exists in file for {{ item.name }} - name: Generate htpasswd for {{ item.name }}
shell: grep -c "^{{ item.name }}_password" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true when: passwords[item.name + '_password'] is not defined or passwords[item.name + '_htpasswd_hash'] is not defined
register: password_test_grep block:
- name: Create password for {{ item.name }}
shell: "< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo;"
register: password
- name: Test if password htpasswd hash exists in file for {{ item.name }} - name: Show password json for {{ item.name }}
shell: grep -c "^{{ item.name }}_htpasswd_hash" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true debug:
register: htpasswd_hash_test_grep msg: "{{ password }}"
verbosity: 2
- name: Create password for {{ item.name }} - name: Create bcrypt hash from password for {{ item.name }}
shell: "< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo;" docker_container:
register: password name: slappasswd
when: password_test_grep.stdout == '0' image: "{{ docker_registry }}/pwgen"
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "htpasswd -B -n -i -b -C 16 {{ item.name }} {{ password.stdout | default(item.name + '_password') }}"
register: docker_container_output
- name: Show password json for {{ item.name }} - name: Show docker_container_output for {{ item.name }}
debug: debug:
msg: "{{ password }}" msg: "{{ docker_container_output }}"
verbosity: 2 verbosity: 2
when: password_test_grep.stdout == '0'
- name: Create bcrypt hash from password for {{ item.name }} - name: Write password for {{ item.name }}
docker_container: lineinfile:
name: slappasswd path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
image: "{{ docker_registry }}/pwgen" line: "{{ item.name }}_password: \"{{ password.stdout }}\""
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "htpasswd -B -n -i -b -C 16 {{ item.name }} {{ password.stdout | default(item.name + '_password') }}"
register: docker_container_output
when: htpasswd_hash_test_grep.stdout == '0'
- name: Show docker_container_output for {{ item.name }} - name: Write htpasswd hash for {{ item.name }}
debug: lineinfile:
msg: "{{ docker_container_output }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "{{ item.name }}_htpasswd_hash: \"{{ docker_container_output.container.Output.split('\n')[0].split(':')[1] }}\""
- name: Write password for {{ item.name }}
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_password: \"{{ password.stdout }}\""
when: password_test_grep.stdout == '0'
- name: Write htpasswd hash for {{ item.name }}
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_htpasswd_hash: \"{{ docker_container_output.container.Output.split('\n')[0].split(':')[1] }}\""
when: htpasswd_hash_test_grep.stdout == '0'

View File

@@ -1,7 +1,22 @@
- name: Create passwords.yaml file - name: Check that passwords.yaml exists
stat:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
register: passwords_file
- name: Create passwords.yaml file if not exists
file: file:
name: "{{ inventory_dir }}/group_vars/all/passwords.yaml" name: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
state: touch state: touch
when: not passwords_file.stat.exists
- name: Read passwords.yaml file
slurp:
src: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
register: passwords_b64
- name: Set facts about passwords
set_fact:
passwords: "{{ passwords_b64['content'] | b64decode | from_yaml }}"
- name: Create files directory for ddclient tsig - name: Create files directory for ddclient tsig
file: file:

View File

@@ -1,49 +1,34 @@
- name: Test if password exists in file for {{ item.name }} - name: Generate password for {{ item.name }}
shell: grep -c "^{{ item.name }}_password" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true when: passwords[item.name + '_password'] is not defined
register: password_test_grep block:
- name: Create password for {{ item.name }}
shell: "< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo;"
register: password
- name: Test if password pbkdf2-sha512 hash exists in file for {{ item.name }} - name: Show password json for {{ item.name }}
shell: grep -c "^{{ item.name }}_pbkdf2_sha512_hash" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true debug:
register: pbkdf2_sha512_hash_test_grep msg: "{{ password }}"
verbosity: 2
- name: Create password for {{ item.name }} - name: Write password for {{ item.name }}
shell: "< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo;" lineinfile:
register: password path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
when: password_test_grep.stdout == '0' line: "{{ item.name }}_password: \"{{ password.stdout }}\""
- name: Show password json for {{ item.name }} - name: Generate password for {{ item.name }}
debug: when: passwords[item.name + '_pbkdf2_sha512_hash'] is not defined
msg: "{{ password }}" block:
verbosity: 2 - name: Create PBKDF2-SHA512 hash from password for {{ item.name }}
when: password_test_grep.stdout == '0' docker_container:
name: slappasswd
image: "{{ docker_registry }}/pwgen"
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "slappasswd -o module-load=pw-pbkdf2 -h {PBKDF2-SHA512} -s {{ password.stdout | default(item.name + '_password') }}"
register: docker_container_output
- name: Create PBKDF2-SHA512 hash from password for {{ item.name }} - name: Write PBKDF2-SHA512 hash for {{ item.name }}
docker_container: lineinfile:
name: slappasswd path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
image: "{{ docker_registry }}/pwgen" line: "{{ item.name }}_pbkdf2_sha512_hash: \"{{ docker_container_output.container.Output.split('\n')[0] }}\""
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "slappasswd -o module-load=pw-pbkdf2 -h {PBKDF2-SHA512} -s {{ password.stdout | default(item.name + '_password') }}"
register: docker_container_output
when: pbkdf2_sha512_hash_test_grep.stdout == '0'
- debug:
msg: "{{ docker_container_output }}"
- name: Show docker_container_output for {{ item.name }}
debug:
msg: "{{ docker_container_output }}"
verbosity: 2
- name: Write password for {{ item.name }}
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_password: \"{{ password.stdout }}\""
when: password_test_grep.stdout == '0'
- name: Write PBKDF2-SHA512 hash for {{ item.name }}
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_pbkdf2_sha512_hash: \"{{ docker_container_output.container.Output.split('\n')[0] }}\""
when: pbkdf2_sha512_hash_test_grep.stdout == '0'

View File

@@ -1,20 +1,16 @@
- name: Test if secret exists in file for {{ item.name }}
shell: grep -c "^{{ item.name }}_secret" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true
register: secret_test_grep
- name: Create secret for {{ item.name }} - name: Create secret for {{ item.name }}
shell: "openssl rand -hex 32" when: passwords[item.name + '_secret'] is not defined
register: secret block:
when: secret_test_grep.stdout == '0' - name: Create secret for {{ item.name }}
shell: "openssl rand -hex 32"
register: secret
- name: Show secret json for {{ item.name }} - name: Show secret json for {{ item.name }}
debug: debug:
msg: "{{ secret }}" msg: "{{ secret }}"
verbosity: 2 verbosity: 2
when: secret_test_grep.stdout == '0'
- name: Write secret for {{ item.name }} - name: Write secret for {{ item.name }}
lineinfile: lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_secret: \"{{ secret.stdout }}\"" line: "{{ item.name }}_secret: \"{{ secret.stdout }}\""
when: secret_test_grep.stdout == '0'

View File

@@ -1,99 +1,78 @@
- name: Test if k8s TSIG key exists - name: Generate K8s TSIG for Knot DNS
shell: grep -c "k8s_tsig" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true when: passwords['k8s_tsig'] is not defined
register: k8s_tsig_test_grep block:
- name: Generate k8s TSIG key for Knot DNS
docker_container:
name: keymgr
image: "{{ docker_registry }}/tsig"
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "keymgr -t k8s-{{ k8s_cluster_name }}-{{ namespace }} hmac-sha512"
register: knot_container_output
- name: Test if ddclinet TSIG key exists - name: Set k8s_key
shell: grep -c "ddclient_tsig" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true set_fact:
register: ddclient_tsig_test_grep k8s_key: "{{ knot_container_output.container.Output | from_yaml }}"
- name: Test if ddclinet TSIG key exists - name: Show k8s TSIG key
shell: grep -c "ddclient_tsig_public_key_base64" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true debug:
register: ddclient_tsig_public_key_test_grep msg: "Knot k8s key for k8s-{{ k8s_cluster_name }}-{{ namespace }}: {{ k8s_key['key'][0]['secret'] }}"
- name: Test if ddclinet TSIG key exists - name: Write TSIG for Kubernetes
shell: grep -c "ddclient_tsig_private_key_base64" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true lineinfile:
register: ddclient_tsig_private_key_test_grep path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "k8s_tsig: \"{{ k8s_key['key'][0]['secret'] }}\""
- name: Generate k8s TSIG key for Knot DNS - name: Generate ddclient private and public TSIG keys for Knot DNS
docker_container: when:
name: keymgr - passwords['ddclient_tsig_public_key_base64'] is not defined or passwords['ddclient_tsig_private_key_base64'] is not defined
image: "{{ docker_registry }}/tsig" block:
cleanup: true - name: Generate TSIG key for ddclient
detach: false docker_container:
container_default_behavior: no_defaults name: ddclient
command: "keymgr -t {{ namespace }} hmac-sha512" image: "{{ docker_registry }}/tsig"
register: knot_container_output cleanup: true
when: k8s_tsig_test_grep.stdout == '0' detach: false
container_default_behavior: no_defaults
command: "bash tsig-key.sh ddclient-{{ k8s_cluster_name }}-{{ namespace }}"
register: ddclient_container_output
- name: Set k8s_key - name: Set ddclient_key
set_fact: set_fact:
k8s_key: "{{ knot_container_output.container.Output | from_yaml }}" ddclient_key: "{{ ddclient_container_output.container.Output | from_yaml }}"
when: k8s_tsig_test_grep.stdout == '0'
- name: Show k8s TSIG key - name: Show ddclient TSIG public key file
debug: debug:
msg: "Knot k8s key: {{ k8s_key['key'][0]['secret'] }}" msg: "ddclient key for ddclient-{{ k8s_cluster_name }}-{{ namespace }}: {{ ddclient_key['tsig'][0]['key'] | b64decode }}"
when: k8s_tsig_test_grep.stdout == '0' verbosity: 2
- name: Write TSIG for Kubernetes - name: Show ddclient TSIG private key file
lineinfile: debug:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml" msg: "ddclient key for ddclient-{{ k8s_cluster_name }}-{{ namespace }}: {{ ddclient_key['tsig'][0]['private'] | b64decode }}"
line: "k8s_tsig: \"{{ k8s_key['key'][0]['secret'] }}\"" verbosity: 2
when: k8s_tsig_test_grep.stdout == '0'
- name: Generate TSIG key for ddclient - name: Write ddclient TSIG public key file in base64
docker_container: lineinfile:
name: ddclient path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
image: "{{ docker_registry }}/tsig" line: "ddclient_tsig_public_key_base64: \"{{ ddclient_key['tsig'][0]['key'] }}\""
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "bash tsig-key.sh {{ namespace }}"
register: ddclient_container_output
when: ddclient_tsig_public_key_test_grep.stdout == '0' or ddclient_tsig_private_key_test_grep.stdout == '0'
- name: Set ddclient_key - name: Show ddclient TSIG key
set_fact: debug:
ddclient_key: "{{ ddclient_container_output.container.Output | from_yaml }}" msg: "{{ ddclient_tsig_key }}"
when: ddclient_tsig_public_key_test_grep.stdout == '0' or ddclient_tsig_private_key_test_grep.stdout == '0' verbosity: 2
- name: Show ddclient TSIG public key file - name: Write ddclient TSIG key
debug: lineinfile:
msg: "ddclient key: {{ ddclient_key['tsig'][0]['key'] | b64decode }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "ddclient_tsig: \"{{ ddclient_tsig_key['Key'] }}\""
when: ddclient_tsig_public_key_test_grep.stdout == '0'
- name: Show ddclient TSIG private key file - name: Write ddclient TSIG private key file in base64
debug: lineinfile:
msg: "ddclient key: {{ ddclient_key['tsig'][0]['private'] | b64decode }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "ddclient_tsig_private_key_base64: \"{{ ddclient_key['tsig'][0]['private'] }}\""
when: ddclient_tsig_private_key_test_grep.stdout == '0'
- name: Write ddclient TSIG public key file in base64 - name: Set ddclient TSIG key
lineinfile: set_fact:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml" ddclient_tsig_key: "{{ ddclient_key['tsig'][0]['private'] | b64decode | from_yaml }}"
line: "ddclient_tsig_public_key_base64: \"{{ ddclient_key['tsig'][0]['key'] }}\""
when: ddclient_tsig_public_key_test_grep.stdout == '0'
- name: Write ddclient TSIG private key file in base64
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "ddclient_tsig_private_key_base64: \"{{ ddclient_key['tsig'][0]['private'] }}\""
when: ddclient_tsig_private_key_test_grep.stdout == '0'
- name: Set ddclient TSIG key
set_fact:
ddclient_tsig_key: "{{ ddclient_key['tsig'][0]['private'] | b64decode | from_yaml }}"
when: ddclient_tsig_test_grep.stdout == '0'
- name: Show ddclient TSIG key
debug:
msg: "{{ ddclient_tsig_key }}"
verbosity: 2
when: ddclient_tsig_test_grep.stdout == '0'
- name: Write ddclient TSIG key
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "ddclient_tsig: \"{{ ddclient_tsig_key['Key'] }}\""
when: ddclient_tsig_test_grep.stdout == '0'

View File

@@ -1,47 +1,36 @@
- name: Test if VAPID private key exists - name: Generate VAPID keys
shell: grep -c "^{{ item.name }}_vapid_private_key_base64" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true when: passwords[item.name + '_vapid_public_key_base64'] is not defined or passwords[item.name + '_vapid_private_key_base64'] is not defined
register: vapid_private_key_test_grep block:
- name: Create VAPID keys
docker_container:
name: vapid
image: "{{ docker_registry }}/pwgen"
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "/vapid"
register: vapid_container_output
- name: Test if VAPID public key exists - name: Set VAPID keys fact
shell: grep -c "^{{ item.name }}_vapid_public_key_base64" "{{ inventory_dir }}/group_vars/all/passwords.yaml" || true set_fact:
register: vapid_public_key_test_grep vapid_keys: "{{ vapid_container_output.container.Output | from_yaml }}"
- name: Create VAPID keys - name: Show VAPID private key
docker_container: debug:
name: vapid msg: "vapid private key: {{ vapid_keys['vapidPrivateKey'] }}"
image: "{{ docker_registry }}/pwgen" verbosity: 2
cleanup: true
detach: false
container_default_behavior: no_defaults
command: "/vapid"
register: vapid_container_output
when: vapid_private_key_test_grep.stdout == '0' or vapid_public_key_test_grep.stdout == '0'
- name: Set VAPID keys fact - name: Show VAPID public key
set_fact: debug:
vapid_keys: "{{ vapid_container_output.container.Output | from_yaml }}" msg: "vapid public key: {{ vapid_keys['vapidPublicKey'] }}"
when: vapid_private_key_test_grep.stdout == '0' or vapid_public_key_test_grep.stdout == '0' verbosity: 2
- name: Show VAPID private key - name: Write VAPID private key
debug: lineinfile:
msg: "vapid private key: {{ vapid_keys['vapidPrivateKey'] }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "{{ item.name }}_vapid_private_key_base64: \"{{ vapid_keys['vapidPrivateKey'] | b64encode }}\""
when: vapid_private_key_test_grep.stdout == '0'
- name: Show VAPID public key - name: Write VAPID public key
debug: lineinfile:
msg: "vapid public key: {{ vapid_keys['vapidPublicKey'] }}" path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
verbosity: 2 line: "{{ item.name }}_vapid_public_key_base64: \"{{ vapid_keys['vapidPublicKey'] | b64encode }}\""
when: vapid_public_key_test_grep.stdout == '0'
- name: Write VAPID private key
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_vapid_private_key_base64: \"{{ vapid_keys['vapidPrivateKey'] | b64encode }}\""
when: vapid_private_key_test_grep.stdout == '0'
- name: Write VAPID public key
lineinfile:
path: "{{ inventory_dir }}/group_vars/all/passwords.yaml"
line: "{{ item.name }}_vapid_public_key_base64: \"{{ vapid_keys['vapidPublicKey'] | b64encode }}\""
when: vapid_public_key_test_grep.stdout == '0'

View File

@@ -77,7 +77,7 @@ roundcube_default_values:
'ssl' => array( 'ssl' => array(
'verify_peer' => false, 'verify_peer' => false,
'allow_self_signed' => true, 'allow_self_signed' => true,
'ciphers' => 'TLSv1.3+HIGH:!aNull:@STRENGTH', 'ciphers' => 'TLSv1.2+HIGH:!aNull:@STRENGTH',
), ),
); );
// For STARTTLS SMTP // For STARTTLS SMTP
@@ -85,7 +85,7 @@ roundcube_default_values:
'ssl' => array( 'ssl' => array(
'verify_peer' => false, 'verify_peer' => false,
'allow_self_signed' => true, 'allow_self_signed' => true,
'ciphers' => 'TLSv1.3+HIGH:!aNull:@STRENGTH', 'ciphers' => 'TLSv1.2+HIGH:!aNull:@STRENGTH',
), ),
); );
?> ?>

View File

@@ -1,4 +1,6 @@
service_dns_chart_ref: "bitnami/external-dns" service_dns_chart_ref: "bitnami/external-dns"
service_dns_tsigKeyname: "k8s-{{ k8s_cluster_name }}-{{ namespace }}"
service_dns_tsigSecretAlg: "hmac-sha512"
service_dns_default_values: service_dns_default_values:
fullnameOverride: "{{ service_dns_name | default(namespace + '-service-dns') }}" fullnameOverride: "{{ service_dns_name | default(namespace + '-service-dns') }}"
domainFilters: ["{{ service_domain | default(domain) }}"] domainFilters: ["{{ service_domain | default(domain) }}"]
@@ -9,8 +11,8 @@ service_dns_default_values:
port: 53 port: 53
zone: "{{ service_domain | default(domain) }}" zone: "{{ service_domain | default(domain) }}"
tsigSecret: "{{ k8s_tsig }}" tsigSecret: "{{ k8s_tsig }}"
tsigSecretAlg: "{{ service_dns_tsigSecretAlg | default('hmac-sha512') }}" tsigSecretAlg: "{{ service_dns_tsigSecretAlg }}"
tsigKeyname: "{{ service_dns_tsigKeyname | default(namespace) }}" tsigKeyname: "{{ service_dns_tsigKeyname }}"
tsigAxfr: true tsigAxfr: true
## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration ## Possible units [ns, us, ms, s, m, h], see more https://golang.org/pkg/time/#ParseDuration
minTTL: "30s" minTTL: "30s"