ansible rework
This commit is contained in:
parent
67414814c0
commit
eecff4345a
47 changed files with 1995 additions and 538 deletions
134
ansible/playbooks/03-setup-s3fs.yaml
Normal file
134
ansible/playbooks/03-setup-s3fs.yaml
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
---
|
||||
# Stage 3: Setup S3FS on all servers
|
||||
#
|
||||
# This playbook sets up s3fs to mount S3 buckets as local filesystems.
|
||||
# Must be run after Stage 2 (full deployment) to ensure Docker is installed.
|
||||
#
|
||||
# Mounts the following buckets:
|
||||
# - asxpio-terraform-main -> /mnt/s3/terraform
|
||||
# - asxpio-backups-main -> /mnt/s3/backups
|
||||
# - asxpio-immich-main -> /mnt/s3/immich
|
||||
#
|
||||
# Cache sizes (per-host):
|
||||
# - asxpio-ops (40GB disk): 10GB cache max
|
||||
# - asxpio-services (160GB disk): 80GB cache max
|
||||
#
|
||||
# Usage:
|
||||
# ansible-playbook playbooks/03-setup-s3fs.yaml
|
||||
#
|
||||
# IMPORTANT: Ensure S3 credentials are set in group_vars/all/vault.yaml:
|
||||
# vault_s3_access_key: "your-access-key"
|
||||
# vault_s3_secret_key: "your-secret-key"
|
||||
#
|
||||
|
||||
- name: Setup S3FS on all servers
|
||||
hosts: ops_servers,services_servers
|
||||
become: true
|
||||
gather_facts: true
|
||||
|
||||
pre_tasks:
|
||||
- name: Validate S3 credentials are set
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- s3_access_key is defined
|
||||
- s3_access_key != ""
|
||||
- s3_secret_key is defined
|
||||
- s3_secret_key != ""
|
||||
fail_msg: |
|
||||
S3 credentials not set!
|
||||
Please set vault_s3_access_key and vault_s3_secret_key in:
|
||||
- group_vars/all/vault.yaml (encrypted with ansible-vault)
|
||||
OR
|
||||
- Pass via command line: -e "s3_access_key=xxx s3_secret_key=yyy"
|
||||
success_msg: "S3 credentials validated"
|
||||
|
||||
- name: Display S3 configuration
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
========================================
|
||||
S3FS Setup on {{ inventory_hostname }}
|
||||
========================================
|
||||
Target: {{ inventory_hostname }}
|
||||
S3 Region: {{ s3_region }}
|
||||
S3 Endpoint: {{ s3_endpoint }}
|
||||
|
||||
Buckets to mount:
|
||||
{% for bucket in s3_buckets %}
|
||||
- {{ bucket.name }} -> {{ bucket.mount_point }}
|
||||
{% endfor %}
|
||||
========================================
|
||||
|
||||
roles:
|
||||
- role: s3fs
|
||||
|
||||
post_tasks:
|
||||
- name: Display mounted filesystems
|
||||
ansible.builtin.command:
|
||||
cmd: df -h
|
||||
register: df_output
|
||||
changed_when: false
|
||||
|
||||
- name: Show S3 mounts
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ df_output.stdout_lines | select('search', 's3fs') | list }}"
|
||||
|
||||
- name: Create immich library directory structure
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
mode: '0775'
|
||||
owner: root
|
||||
group: docker
|
||||
loop:
|
||||
- /mnt/s3/immich/library
|
||||
- /mnt/s3/immich/library/backups
|
||||
- /mnt/s3/immich/library/encoded-video
|
||||
- /mnt/s3/immich/library/library
|
||||
- /mnt/s3/immich/library/profile
|
||||
- /mnt/s3/immich/library/thumbs
|
||||
- /mnt/s3/immich/library/upload
|
||||
when: inventory_hostname in groups['services_servers']
|
||||
|
||||
- name: Display post-setup information
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
========================================
|
||||
S3FS Setup Complete on {{ inventory_hostname }}!
|
||||
========================================
|
||||
|
||||
✅ All S3 buckets mounted successfully
|
||||
|
||||
Mount points:
|
||||
{% for bucket in s3_buckets %}
|
||||
- {{ bucket.mount_point }} ({{ bucket.name }})
|
||||
{% endfor %}
|
||||
|
||||
Cache configuration:
|
||||
- Location: /var/cache/s3fs
|
||||
- Max size: ~{{ (40 - (s3fs_ensure_diskfree / 1024)) | int }}GB
|
||||
- Free space reserved: {{ (s3fs_ensure_diskfree / 1024) | int }}GB
|
||||
|
||||
{% if inventory_hostname in groups['services_servers'] %}
|
||||
Immich library structure created at:
|
||||
/mnt/s3/immich/library/
|
||||
├── backups/
|
||||
├── encoded-video/
|
||||
├── library/
|
||||
├── profile/
|
||||
├── thumbs/
|
||||
└── upload/
|
||||
|
||||
Next steps for Immich migration:
|
||||
1. Manually sync data from legacy server:
|
||||
rsync -avz --info=progress2 \
|
||||
asxpio-old:/srv/immich/library/ \
|
||||
/mnt/s3/immich/library/
|
||||
|
||||
2. Backup Immich PostgreSQL database on legacy server:
|
||||
docker exec immich_postgres pg_dumpall -U postgres | gzip > /tmp/immich-db.sql.gz
|
||||
|
||||
3. Deploy Immich service configured to use S3 storage:
|
||||
IMMICH_MEDIA_LOCATION=/mnt/s3/immich/library
|
||||
{% endif %}
|
||||
|
||||
========================================
|
||||
Loading…
Add table
Add a link
Reference in a new issue