olimp/roles/snikket/tasks/main.yml
Administrator cd8becfeb3 Update 9 files
- /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
2026-03-23 11:53:25 +05:00

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