Refactor: Organize Ansible project structure
- Reorganized Ansible project structure to follow best practices. - Created dedicated directories: , , , , and . - Categorized playbooks into (host-specific) and (service-specific). - Moved all roles into the directory and standardized their naming conventions. - Relocated to for better variable management. - Renamed to to reflect its global variable scope. - Created to correctly set the to the new directory. - Moved and into the directory. - Added to providing explanations for common commands. - Cleaned up directories from all individual roles to centralize version control.
This commit is contained in:
9
roles/docker_spin_up/tasks/dashboard_my_public.yml
Normal file
9
roles/docker_spin_up/tasks/dashboard_my_public.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
- name: "{{ docker_name }}"
|
||||
community.docker.docker_container:
|
||||
name: "{{ docker_name }}"
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
ports:
|
||||
- 3000:3000
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/config:/app/config" # Make sure your local config directory exists
|
||||
34
roles/docker_spin_up/tasks/email.yml
Normal file
34
roles/docker_spin_up/tasks/email.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
- name: email
|
||||
community.docker.docker_container:
|
||||
image: docker.io/mailserver/docker-mailserver:latest
|
||||
name: email
|
||||
#container_name: mailserver
|
||||
# If the FQDN for your mail-server is only two labels (eg: example.com),
|
||||
# you can assign this entirely to `hostname` and remove `domainname`.
|
||||
hostname: mail
|
||||
domainname: katebartova.cz
|
||||
env:
|
||||
SSL_TYPE: letsencrypt
|
||||
env_file: "{{ docker_homepath }}/mailserver.env"
|
||||
# More information about the mail-server ports:
|
||||
# https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/
|
||||
# To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks.
|
||||
ports:
|
||||
- "25:25" # SMTP (explicit TLS => STARTTLS)
|
||||
- "143:143" # IMAP4 (explicit TLS => STARTTLS)
|
||||
- "465:465" # ESMTP (implicit TLS)
|
||||
- "587:587" # ESMTP (explicit TLS => STARTTLS)
|
||||
- "993:993" # IMAP4 (implicit TLS)
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/docker-data/dms/mail-data/:/var/mail/"
|
||||
- "{{ docker_homepath }}/docker-data/dms/mail-state/:/var/mail-state/"
|
||||
- "{{ docker_homepath }}/docker-data/dms/mail-logs/:/var/log/mail/"
|
||||
- "{{ docker_homepath }}/docker-data/dms/config/:/tmp/docker-mailserver/"
|
||||
- "/bigpool/nginx/letsencrypt/:/etc/letsencrypt/:ro"
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
restart_policy: always
|
||||
#stop_grace_period: 1m
|
||||
capabilities:
|
||||
- NET_ADMIN
|
||||
- SYS_PTRACE
|
||||
24
roles/docker_spin_up/tasks/gitea.yml
Normal file
24
roles/docker_spin_up/tasks/gitea.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
- name: gitea
|
||||
community.docker.docker_container:
|
||||
image: gitea/gitea:1.19.3
|
||||
name: gitea
|
||||
env:
|
||||
USER_UID: "1000"
|
||||
USER_GID: "1000"
|
||||
GITEA__database__DB_TYPE: "mysql"
|
||||
GITEA__database__HOST: "{{ mysql_host}}:3306"
|
||||
GITEA__database__NAME: "{{ GITEA__database__NAME }}"
|
||||
GITEA__database__USER: "{{ GITEA__database__USER }}"
|
||||
GITEA__database__PASSWD: "{{ GITEA__database__PASSWD }}"
|
||||
ROOT_URL: "http://pi-vpn:8082/"
|
||||
restart_policy: always
|
||||
networks:
|
||||
- name: http
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/gitea:/data"
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
# - "8082:3000"
|
||||
- "222:22"
|
||||
34
roles/docker_spin_up/tasks/jellyfin.yml
Normal file
34
roles/docker_spin_up/tasks/jellyfin.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
- name: Dir-jellyfin-config
|
||||
ansible.builtin.file:
|
||||
path: "{{ docker_homepath }}/config"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ primary_group }}"
|
||||
state: directory
|
||||
mode: '0711'
|
||||
|
||||
- name: Dir-jellyfin-cache
|
||||
ansible.builtin.file:
|
||||
path: "{{ docker_homepath }}/cache"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ primary_group }}"
|
||||
state: directory
|
||||
mode: '0711'
|
||||
|
||||
|
||||
- name: jellyfin
|
||||
community.docker.docker_container:
|
||||
name: jellyfin
|
||||
image: jellyfin/jellyfin:2024042215
|
||||
user: "{{ uid }}:{{ gid }}"
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "Etc/UTC"
|
||||
JELLYFIN_PublishedServerUrl: "jellyfin.lan" #optional
|
||||
volumes:
|
||||
- "/bigpool/tata/Music:/Music:ro"
|
||||
- "{{ docker_homepath }}/config:/config"
|
||||
- "{{ docker_homepath }}/cache:/cache"
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: http
|
||||
17
roles/docker_spin_up/tasks/main.yml
Normal file
17
roles/docker_spin_up/tasks/main.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
# tasks file for docker_spin_up
|
||||
#- name: Copy composer
|
||||
# template:
|
||||
# src: "../templates/{{ docker_compose_file }}"
|
||||
# dest: "/{{ docker_homepath }}/docker-compose.yml"
|
||||
# owner: root
|
||||
# group: root
|
||||
# mode: '0644'
|
||||
|
||||
- name: Create a network
|
||||
community.docker.docker_network:
|
||||
name: http
|
||||
|
||||
- name: Spin up {{ docker_compose_file }}
|
||||
ansible.builtin.include_tasks:
|
||||
"{{ docker_compose_file }}"
|
||||
82
roles/docker_spin_up/tasks/monitoring.yml
Normal file
82
roles/docker_spin_up/tasks/monitoring.yml
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
- name: Dir-loki
|
||||
ansible.builtin.file:
|
||||
path: "{{ docker_homepath }}/loki-data"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ primary_group }}"
|
||||
state: directory
|
||||
mode: '0711'
|
||||
|
||||
- name: Dir-grafana
|
||||
ansible.builtin.file:
|
||||
path: "{{ docker_homepath }}/grafana-data"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ primary_group }}"
|
||||
state: directory
|
||||
mode: '0711'
|
||||
|
||||
- name: Dir-promtail
|
||||
ansible.builtin.file:
|
||||
path: "{{ docker_homepath }}/promtail-data"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ primary_group }}"
|
||||
state: directory
|
||||
mode: '0711'
|
||||
|
||||
- name: promtail config copy
|
||||
template:
|
||||
src: ../templates/promtail-config.yml
|
||||
dest: "{{ docker_homepath }}/promtail-data/promtail-config.yml"
|
||||
owner: "{{ user}}"
|
||||
group: "{{ primary_group }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: loki
|
||||
community.docker.docker_container:
|
||||
name: loki
|
||||
user: "{{ uid }}:{{ gid }}"
|
||||
image: 'grafana/loki:main-2c878c8'
|
||||
restart_policy: unless-stopped
|
||||
#ports:
|
||||
# - '3100:3100'
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/loki-data:/loki"
|
||||
- "/etc/resolv.conf:/etc/resolv.conf:ro"
|
||||
- "/etc/timezone:/etc/timezone:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
networks:
|
||||
- name: http
|
||||
|
||||
- name: grafana
|
||||
community.docker.docker_container:
|
||||
name: grafana
|
||||
image: 'grafana/grafana:10.2.6'
|
||||
user: "{{ uid }}:{{ gid }}"
|
||||
restart_policy: unless-stopped
|
||||
#ports:
|
||||
# - '3000:3000'
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/grafana-data:/var/lib/grafana"
|
||||
- "/etc/timezone:/etc/timezone:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
networks:
|
||||
- name: http
|
||||
|
||||
- name: promtail
|
||||
community.docker.docker_container:
|
||||
name: promtail
|
||||
image: 'grafana/promtail:main-e2952b9'
|
||||
user: "0:0"
|
||||
restart_policy: unless-stopped
|
||||
command: -config.file=/etc/promtail/promtail-config.yml -config.expand-env=true
|
||||
#ports:
|
||||
# - '3000:3000'
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/promtail-data:/etc/promtail"
|
||||
- "/var/log:/var/log:ro"
|
||||
- "/run/log/journal/:/run/log/journal/:ro"
|
||||
- "/etc/machine-id:/etc/machine-id:ro"
|
||||
- "/etc/timezone:/etc/timezone:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
networks:
|
||||
- name: http
|
||||
19
roles/docker_spin_up/tasks/nextcloud.yml
Normal file
19
roles/docker_spin_up/tasks/nextcloud.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
- name: nextcloud
|
||||
community.docker.docker_container:
|
||||
name: nextcloud
|
||||
image: nextcloud:26.0-fpm
|
||||
restart_policy: always
|
||||
# ports:
|
||||
# - 8080:80
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/nextcloud_nextcloud_1/_data:/var/www/html"
|
||||
env:
|
||||
MYSQL_PASSWORD: "{{ NEXTCLOUD_MYSQL_PASSWORD }}"
|
||||
MYSQL_DATABASE: "{{ NEXTCLOUD_MYSQL_DATABASE }}"
|
||||
MYSQL_USER: "{{ NEXTCLOUD_MYSQL_USER }}"
|
||||
MYSQL_HOST: "{{ mysql_host }}"
|
||||
PHP_MEMORY_LIMIT: 2G
|
||||
PHP_UPLOAD_LIMIT: 10G
|
||||
networks:
|
||||
- name: http
|
||||
16
roles/docker_spin_up/tasks/nginx.yml
Normal file
16
roles/docker_spin_up/tasks/nginx.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
- name: nginx
|
||||
community.docker.docker_container:
|
||||
name: nginx
|
||||
image: 'jc21/nginx-proxy-manager:latest'
|
||||
restart_policy: unless-stopped
|
||||
ports:
|
||||
- '80:80'
|
||||
#- "{{ ip_admin }}:81:81"
|
||||
- '443:443'
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/data:/data"
|
||||
- "{{ docker_homepath }}/letsencrypt:/etc/letsencrypt"
|
||||
- "/bigpool/nextcloud/nextcloud_nextcloud_1/_data/:/var/www/html:ro"
|
||||
networks:
|
||||
- name: http
|
||||
20
roles/docker_spin_up/tasks/pi-hole.yml
Normal file
20
roles/docker_spin_up/tasks/pi-hole.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
- name: pi-hole
|
||||
community.docker.docker_container:
|
||||
name: pi-hole
|
||||
image: pihole/pihole:2024.03.2
|
||||
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
|
||||
ports:
|
||||
- "53:53/tcp"
|
||||
- "53:53/udp"
|
||||
# - "8092:80/tcp"
|
||||
env:
|
||||
TZ: 'Europe/Prague'
|
||||
WEBPASSWORD: "{{ password }}"
|
||||
# Volumes store your data between container upgrades
|
||||
volumes:
|
||||
- "{{ docker_homepath }}/etc-pihole:/etc/pihole"
|
||||
- "{{ docker_homepath }}/etc-dnsmasq.d:/etc/dnsmasq.d"
|
||||
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: http
|
||||
24
roles/docker_spin_up/tasks/transmission.yaml
Normal file
24
roles/docker_spin_up/tasks/transmission.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
- name: transmission
|
||||
community.docker.docker_container:
|
||||
name: transmission
|
||||
image: lscr.io/linuxserver/transmission:latest
|
||||
#container_name: transmission
|
||||
env:
|
||||
PUID: "{{ uid }}"
|
||||
PGID: "{{ uid }}"
|
||||
TZ: Europe/Berlin
|
||||
#TRANSMISSION_WEB_HOME=/combustion-release/ #optional
|
||||
USER: "{{ user }}" #optional
|
||||
PASS: "{{ password }}" #optional
|
||||
volumes:
|
||||
# - /path/to/data:/config
|
||||
- "{{ docker_homepath }}/downloads:/downloads"
|
||||
- "{{ docker_homepath }}/watch:/watch"
|
||||
#ports:
|
||||
# - 9091:9091
|
||||
# - 51413:51413
|
||||
# - 51413:51413/udp
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: http
|
||||
Reference in New Issue
Block a user