Refactor Docker Compose configurations and add deployment workflows for cloud-pc and mini-pc services
Deploy cloud-pc / deploy (push) Failing after 15s
Deploy mini-pc / deploy (push) Failing after 4s
Deploy ru-vps / deploy (push) Failing after 5s

This commit is contained in:
Dmitry
2026-05-27 15:41:15 +03:00
parent 90128b237d
commit dc3ff78d6d
39 changed files with 603 additions and 29 deletions
+15
View File
@@ -0,0 +1,15 @@
- name: Base server setup
hosts: servers
gather_facts: true
become: false
tasks:
- name: Ping hosts
ansible.builtin.ping:
- name: Check expected LAN IP
ansible.builtin.assert:
that:
- expected_lan_ip in ansible_all_ipv4_addresses
fail_msg: "{{ inventory_hostname }} must have {{ expected_lan_ip }}; found: {{ ansible_all_ipv4_addresses | join(', ') }}"
success_msg: "{{ inventory_hostname }} has {{ expected_lan_ip }}"
when: expected_lan_ip is defined
+10
View File
@@ -0,0 +1,10 @@
# Запускать один раз на новом сервере от имени root или пользователя с полным sudo:
# ansible-playbook -i inventory/hosts.yml playbooks/bootstrap.yml -K
#
# После выполнения: Ansible-плейбуки всё равно требуют -K (become),
# но деплой через GitOps (docker compose) работает без пароля.
- name: Bootstrap servers
hosts: servers
become: true
roles:
- bootstrap
+117
View File
@@ -0,0 +1,117 @@
- name: Directory structure — cloud-pc
hosts: cloud-pc
become: true
vars:
data_user: ada
data_group: ada
tasks:
- name: Create base mount points
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
owner: "{{ data_user }}"
group: "{{ data_group }}"
mode: "0755"
loop: "{{ storage_mounts | default([]) }}"
- name: Mount base storage disks
ansible.posix.mount:
path: "{{ item.path }}"
src: "{{ item.src }}"
fstype: "{{ item.fstype }}"
opts: "{{ item.opts | default('defaults,nofail') }}"
state: mounted
loop: "{{ storage_mounts | default([]) }}"
- name: Create service data and config directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ data_user }}"
group: "{{ data_group }}"
mode: "0755"
loop:
- /opt/data/postgres
- /opt/data/nextcloud
- /opt/data/gitea
- /opt/data/gitea-runner
- /opt/data/syncthing
- /opt/data/zerotier
- /opt/samba/media
- /opt/samba/documents
- /opt/samba/backups_win
- /opt/configs
- /opt/configs/nextcloud/app
- /opt/configs/syncthing
- name: Create /opt/services
ansible.builtin.file:
path: /opt/services
state: directory
owner: "{{ data_user }}"
group: "{{ data_group }}"
mode: "0755"
- name: Create backup directories (3TB)
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ data_user }}"
group: "{{ data_group }}"
mode: "0755"
loop:
- /mnt/backup/restic/services
- /mnt/backup/restic/samba
- /mnt/backup/devices/proxmox
- /mnt/backup/devices/ada-x1
- name: Directory structure — mini-pc
hosts: mini-pc
become: true
vars:
data_user: ada
data_group: ada
tasks:
- name: Create service directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ data_user }}"
group: "{{ data_group }}"
mode: "0755"
loop:
- /opt/services
- /opt/data
- /opt/configs
- /opt/data/vaultwarden
- /opt/data/adguard/work
- /opt/data/caddy
- /opt/data/gitea-runner
- /opt/data/npm
- /opt/data/zerotier
- /opt/configs/adguard
- /opt/configs/caddy
- /opt/configs/npm/letsencrypt
- name: Directory structure — ru-vps
hosts: ru-vps
become: true
vars:
data_user: ada
data_group: ada
tasks:
- name: Create service directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ data_user }}"
group: "{{ data_group }}"
mode: "0755"
loop:
- /opt/services
- /opt/data
- /opt/configs
- /opt/data/caddy
- /opt/data/gitea-runner
- /opt/data/zerotier
- /opt/configs/caddy