soju/tasks/main.yaml
author Luke Hoersten <luke@hoersten.org>
Sat, 28 Mar 2026 13:42:08 -0500
changeset 255 433b19646947
child 256 f7af0562f84c
permissions -rw-r--r--
Added soju role.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
255
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     1
---
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     2
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     3
- name: install soju
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     4
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     5
  apt: name="soju"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     6
  notify: restart soju
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     7
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     8
- name: install soju db schema file
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     9
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    10
  template:
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    11
    src: "setup_db.psql.j2"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    12
    dest: "/tmp/setup_db_soju.psql"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    13
    owner: "postgres"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    14
    group: "postgres"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    15
    mode: "0600"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    16
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    17
- name: setup soju db
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    18
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    19
  become_user: "postgres"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    20
  command: "psql -f /tmp/setup_db_soju.psql"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    21
  changed_when: false
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    22
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    23
- name: create soju data dir
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    24
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    25
  file:
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    26
    path: "{{soju_data_dir}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    27
    state: "directory"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    28
    owner: "{{soju_user}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    29
    group: "{{soju_user}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    30
    mode: "0755"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    31
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    32
- name: configure soju
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    33
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    34
  template:
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    35
    src: "config.j2"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    36
    dest: "/etc/soju/config"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    37
    mode: "0644"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    38
  notify: restart soju
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    39
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    40
- name: enable soju service
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    41
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    42
  systemd: name="soju.service" enabled="yes" state="started"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    43
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    44
- name: flush handlers to ensure soju is restarted with latest config
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    45
  meta: flush_handlers
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    46
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    47
- name: create soju admin user
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    48
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    49
  become_user: "{{soju_user}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    50
  shell: "echo '{{soju_admin_password}}' | sojudb -config /etc/soju/config create-user {{soju_admin_user}} -admin"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    51
  register: soju_create_user
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    52
  changed_when: soju_create_user.rc == 0
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    53
  failed_when: soju_create_user.rc != 0 and 'duplicate key' not in soju_create_user.stderr
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    54
  no_log: true
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    55
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    56
- name: create soju networks
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    57
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    58
  become_user: "{{soju_user}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    59
  command: >
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    60
    sojuctl -config /etc/soju/config user run {{soju_admin_user}}
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    61
    network create
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    62
    -addr {{item.addr}}
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    63
    -name {{item.name}}
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    64
    -nick {{item.nick}}
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    65
  loop: "{{soju_networks}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    66
  register: soju_network_create
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    67
  changed_when: soju_network_create.rc == 0
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    68
  failed_when: soju_network_create.rc != 0 and 'already exists' not in soju_network_create.stderr
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    69
  no_log: true
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    70
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    71
- name: configure soju network sasl
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    72
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    73
  become_user: "{{soju_user}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    74
  command: >
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    75
    sojuctl -config /etc/soju/config user run {{soju_admin_user}}
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    76
    sasl set-plain -network {{item.name}} {{item.sasl_username}} {{item.sasl_password}}
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    77
  loop: "{{soju_networks}}"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    78
  when: item.sasl_username is defined
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    79
  no_log: true
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    80
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    81
- name: install nginx stream config
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    82
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    83
  template:
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    84
    src: "nginx-stream.conf.j2"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    85
    dest: "/etc/nginx/streams-available/soju.conf"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    86
  notify: reload nginx
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    87
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    88
- name: enable nginx stream config
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    89
  become: yes
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    90
  file:
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    91
    src: "/etc/nginx/streams-available/soju.conf"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    92
    dest: "/etc/nginx/streams-enabled/soju.conf"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    93
    state: "link"
433b19646947 Added soju role.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    94
  notify: reload nginx