- /roles/snikket/defaults/main.yml - /roles/snikket/tasks/main.yml - /roles/snikket/handlers/main.yml - /roles/snikket/templates/nginx-custom.conf.j2 - /roles/snikket/templates/backup.sh.j2 - /roles/snikket/templates/docker-compose.yml.j2 - /roles/snikket/templates/snikket.conf.j2 - /group_vars/all.yml - /vault.yml
139 lines
3.7 KiB
YAML
139 lines
3.7 KiB
YAML
---
|
|
- name: Create Snikket base directory
|
|
file:
|
|
path: "{{ snikket_base_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
owner: root
|
|
group: root
|
|
|
|
- name: Create Snikket data directory
|
|
file:
|
|
path: "{{ snikket_data_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
owner: '65534'
|
|
group: '65534'
|
|
|
|
- name: Create nginx custom config directory
|
|
file:
|
|
path: "{{ snikket_nginx_custom_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Create backup directory
|
|
file:
|
|
path: "{{ snikket_backup_dir }}"
|
|
state: directory
|
|
mode: '0700'
|
|
owner: root
|
|
group: root
|
|
when: snikket_backup_enabled
|
|
|
|
- name: Generate snikket.conf from template
|
|
template:
|
|
src: snikket.conf.j2
|
|
dest: "{{ snikket_base_dir }}/snikket.conf"
|
|
mode: '0644'
|
|
owner: root
|
|
group: root
|
|
notify: Restart Snikket
|
|
|
|
- name: Generate docker-compose.yml from template
|
|
template:
|
|
src: docker-compose.yml.j2
|
|
dest: "{{ snikket_base_dir }}/docker-compose.yml"
|
|
mode: '0644'
|
|
owner: root
|
|
group: root
|
|
notify: Restart Snikket
|
|
|
|
- name: Generate nginx custom config from template
|
|
template:
|
|
src: nginx-custom.conf.j2
|
|
dest: "{{ snikket_nginx_custom_dir }}/snikket.conf"
|
|
mode: '0644'
|
|
owner: root
|
|
group: root
|
|
notify: Reload Snikket Proxy
|
|
|
|
- name: Pull Snikket Docker images
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ snikket_base_dir }}"
|
|
state: present
|
|
pull: true
|
|
register: docker_pull_result
|
|
changed_when: "'Pulled' in docker_pull_result.stdout or 'Downloaded' in docker_pull_result.stdout"
|
|
|
|
- name: Start Snikket services
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ snikket_base_dir }}"
|
|
state: present
|
|
register: docker_start_result
|
|
|
|
- name: Wait for Snikket to be ready
|
|
wait_for:
|
|
port: "{{ snikket_http_port }}"
|
|
host: "127.0.0.1"
|
|
timeout: 120
|
|
delay: 10
|
|
|
|
- name: Create backup script
|
|
template:
|
|
src: backup.sh.j2
|
|
dest: /usr/local/bin/snikket-backup.sh
|
|
mode: '0755'
|
|
owner: root
|
|
group: root
|
|
when: snikket_backup_enabled
|
|
|
|
- name: Add backup to crontab
|
|
cron:
|
|
name: "Snikket backup"
|
|
job: "/usr/local/bin/snikket-backup.sh"
|
|
hour: "3"
|
|
minute: "0"
|
|
weekday: "0"
|
|
user: root
|
|
when: snikket_backup_enabled
|
|
|
|
- name: Create initial admin invite (optional)
|
|
community.docker.docker_container_exec:
|
|
container: snikket
|
|
command: "create-invite --group {{ snikket_initial_invite_group }} --expires {{ snikket_initial_invite_expires }}"
|
|
register: invite_result
|
|
when: snikket_create_initial_invite
|
|
changed_when: "'invite' in invite_result.stdout.lower()"
|
|
|
|
- name: Display invite link if created
|
|
debug:
|
|
msg: "🎉 Admin invite created: {{ invite_result.stdout | trim }}"
|
|
when: snikket_create_initial_invite and invite_result.stdout is defined
|
|
|
|
- name: Health check - verify Snikket is responding
|
|
uri:
|
|
url: "https://{{ snikket_domain }}/login"
|
|
validate_certs: false
|
|
status_code: [200, 302]
|
|
register: health_check
|
|
retries: 5
|
|
delay: 10
|
|
until: health_check.status in [200, 302]
|
|
tags: skip_ansible_lint
|
|
|
|
- name: Display deployment summary
|
|
debug:
|
|
msg: |
|
|
🎉 Snikket deployment complete!
|
|
|
|
Domain: https://{{ snikket_domain }}
|
|
XMPP: {{ snikket_domain }}:{{ snikket_xmpp_port }}
|
|
TURN: {{ snikket_domain }}:{{ snikket_turn_tls_port }}
|
|
|
|
{% if snikket_create_initial_invite %}
|
|
Admin invite: {{ invite_result.stdout | trim }}
|
|
{% else %}
|
|
Create admin: docker exec snikket create-invite --admin --group default
|
|
{% endif %}
|
|
|
|
Backup script: /usr/local/bin/snikket-backup.sh |