churn/ansible/install-chat.yml

140 lines
4.5 KiB
YAML
Raw Normal View History

2025-09-30 13:27:57 +01:00
---
- name: Install chat
hosts: all
become: true
tasks:
- name: Install deps
ansible.builtin.apt:
2025-09-30 13:27:57 +01:00
name:
- git
- vim
- lighttpd
- sudo
state: present
update_cache: true
when: not (is_vmdb2 | bool)
2025-09-30 13:27:57 +01:00
- name: Create dendrite directories
ansible.builtin.file:
path: "/home/{{ butter_user }}/dendrite/bin"
state: directory
2025-09-30 13:27:57 +01:00
owner: "{{ butter_user }}"
group: "{{ butter_user }}"
mode: "0755"
- name: Download pre-built dendrite archive
ansible.builtin.get_url:
url: "https://guardianproject.dev/api/packages/butter/generic/dendrite/latest/dendrite-{{ go_arch_map[ansible_architecture] }}.tar.gz"
dest: /tmp
mode: '0644'
- name: Untar dendrite
ansible.builtin.unarchive:
src: "/tmp/dendrite-{{ go_arch_map[ansible_architecture] }}.tar.gz"
dest: "/home/{{ butter_user }}/dendrite/bin"
remote_src: true
extra_opts: [--strip-components=2]
2025-09-30 13:27:57 +01:00
- name: Ensure butter_user owns Dendrite directory
ansible.builtin.file:
2025-09-30 13:27:57 +01:00
path: "/home/{{ butter_user }}/dendrite"
state: directory
recurse: true
2025-09-30 13:27:57 +01:00
- name: Generate Matrix signing key
ansible.builtin.command: ./bin/generate-keys --private-key matrix_key.pem
2025-09-30 13:27:57 +01:00
args:
creates: "/home/{{ butter_user }}/dendrite/matrix_key.pem"
2025-09-30 13:27:57 +01:00
chdir: "/home/{{ butter_user }}/dendrite"
- name: Generate self-signed TLS certificate (optional)
ansible.builtin.command: ./bin/generate-keys --tls-cert server.crt --tls-key server.key
2025-09-30 13:27:57 +01:00
args:
chdir: "/home/{{ butter_user }}/dendrite"
creates: "/home/{{ butter_user }}/dendrite/server.key"
2025-09-30 13:27:57 +01:00
- name: Download Dendrite config to target
ansible.builtin.template:
src: "templates/butterbox-dendrite.conf.j2"
2025-09-30 13:27:57 +01:00
dest: "/home/{{ butter_user }}/dendrite/butterbox-dendrite.conf"
owner: "{{ butter_user }}"
group: "{{ butter_user }}"
mode: '0644'
- name: Create log directory for Dendrite
ansible.builtin.file:
2025-09-30 13:27:57 +01:00
path: "/var/log/dendrite"
state: directory
owner: "{{ butter_user }}"
group: "{{ butter_user }}"
mode: '0755'
recurse: true
2025-09-30 13:27:57 +01:00
- name: template dendrite systemd service file
ansible.builtin.template:
src: templates/butterbox-dendrite.service.j2
2025-09-30 13:27:57 +01:00
dest: /lib/systemd/system/dendrite.service
owner: root
group: root
mode: '0644'
- name: Enable dendrite by symlink
ansible.builtin.file:
2025-09-30 13:27:57 +01:00
src: /lib/systemd/system/dendrite.service
dest: /etc/systemd/system/multi-user.target.wants/dendrite.service
state: link
- name: Ensure butter_user owns Dendrite directory
ansible.builtin.file:
2025-09-30 13:27:57 +01:00
path: "/home/{{ butter_user }}/dendrite"
state: directory
recurse: true
2025-09-30 13:27:57 +01:00
owner: "{{ butter_user }}"
group: "{{ butter_user }}"
mode: "0755"
- name: Restart service dendrite, issue daemon-reload to pick up config changes
ansible.builtin.systemd_service:
state: restarted
daemon_reload: true
name: dendrite
when: not (is_vmdb2 | bool)
- name: Start dendrite as user butter_user
become: true
2025-09-30 13:27:57 +01:00
become_user: "{{ butter_user }}"
ansible.builtin.shell: |
2025-09-30 13:27:57 +01:00
nohup /home/{{ butter_user }}/dendrite/bin/dendrite \
--config /home/{{ butter_user }}/dendrite/butterbox-dendrite.conf \
-really-enable-open-registration \
> /var/log/dendrite/dendrite-provision.log 2>&1 &
args:
chdir: "/home/{{ butter_user }}"
when: is_vmdb2 | bool
changed_when: false
2025-09-30 13:27:57 +01:00
- name: Wait for Dendrite client API to be available
ansible.builtin.wait_for:
2025-09-30 13:27:57 +01:00
host: "127.0.0.1"
port: 8008
delay: 3 # wait a few seconds before first check
timeout: 60 # give it up to a minute to start
state: started
when: is_vmdb2 | bool
2025-09-30 13:27:57 +01:00
- name: Copy public room script
ansible.builtin.template:
2025-09-30 13:27:57 +01:00
src: templates/create_public_room.sh.j2
dest: "/home/{{ butter_user }}/create_public_room.sh"
2025-09-30 13:27:57 +01:00
mode: '0755'
2025-09-30 13:27:57 +01:00
- name: Run the create_public_room.sh script
ansible.builtin.command: "/home/{{ butter_user }}/create_public_room.sh"
2025-09-30 13:27:57 +01:00
register: room_creation
ignore_errors: false
changed_when: false
2025-09-30 13:27:57 +01:00
- name: Show room creation output
ansible.builtin.debug:
2025-09-30 13:27:57 +01:00
var: room_creation.stdout