soju/tasks/main.yaml
changeset 255 433b19646947
child 256 f7af0562f84c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/soju/tasks/main.yaml	Sat Mar 28 13:42:08 2026 -0500
@@ -0,0 +1,94 @@
+---
+
+- name: install soju
+  become: yes
+  apt: name="soju"
+  notify: restart soju
+
+- name: install soju db schema file
+  become: yes
+  template:
+    src: "setup_db.psql.j2"
+    dest: "/tmp/setup_db_soju.psql"
+    owner: "postgres"
+    group: "postgres"
+    mode: "0600"
+
+- name: setup soju db
+  become: yes
+  become_user: "postgres"
+  command: "psql -f /tmp/setup_db_soju.psql"
+  changed_when: false
+
+- name: create soju data dir
+  become: yes
+  file:
+    path: "{{soju_data_dir}}"
+    state: "directory"
+    owner: "{{soju_user}}"
+    group: "{{soju_user}}"
+    mode: "0755"
+
+- name: configure soju
+  become: yes
+  template:
+    src: "config.j2"
+    dest: "/etc/soju/config"
+    mode: "0644"
+  notify: restart soju
+
+- name: enable soju service
+  become: yes
+  systemd: name="soju.service" enabled="yes" state="started"
+
+- name: flush handlers to ensure soju is restarted with latest config
+  meta: flush_handlers
+
+- name: create soju admin user
+  become: yes
+  become_user: "{{soju_user}}"
+  shell: "echo '{{soju_admin_password}}' | sojudb -config /etc/soju/config create-user {{soju_admin_user}} -admin"
+  register: soju_create_user
+  changed_when: soju_create_user.rc == 0
+  failed_when: soju_create_user.rc != 0 and 'duplicate key' not in soju_create_user.stderr
+  no_log: true
+
+- name: create soju networks
+  become: yes
+  become_user: "{{soju_user}}"
+  command: >
+    sojuctl -config /etc/soju/config user run {{soju_admin_user}}
+    network create
+    -addr {{item.addr}}
+    -name {{item.name}}
+    -nick {{item.nick}}
+  loop: "{{soju_networks}}"
+  register: soju_network_create
+  changed_when: soju_network_create.rc == 0
+  failed_when: soju_network_create.rc != 0 and 'already exists' not in soju_network_create.stderr
+  no_log: true
+
+- name: configure soju network sasl
+  become: yes
+  become_user: "{{soju_user}}"
+  command: >
+    sojuctl -config /etc/soju/config user run {{soju_admin_user}}
+    sasl set-plain -network {{item.name}} {{item.sasl_username}} {{item.sasl_password}}
+  loop: "{{soju_networks}}"
+  when: item.sasl_username is defined
+  no_log: true
+
+- name: install nginx stream config
+  become: yes
+  template:
+    src: "nginx-stream.conf.j2"
+    dest: "/etc/nginx/streams-available/soju.conf"
+  notify: reload nginx
+
+- name: enable nginx stream config
+  become: yes
+  file:
+    src: "/etc/nginx/streams-available/soju.conf"
+    dest: "/etc/nginx/streams-enabled/soju.conf"
+    state: "link"
+  notify: reload nginx