diff --git a/data/ansible/roles/nats/defaults/main.yaml b/data/ansible/roles/nats/defaults/main.yaml new file mode 100644 index 000000000..66c7d1301 --- /dev/null +++ b/data/ansible/roles/nats/defaults/main.yaml @@ -0,0 +1,8 @@ +--- +nats_version: 2.9.17 + +nats_user: nats +nats_group: nats + +service_enabled: true +service_state: started diff --git a/data/ansible/roles/nats/tasks/main.yaml b/data/ansible/roles/nats/tasks/main.yaml new file mode 100644 index 000000000..d5ab0f6c0 --- /dev/null +++ b/data/ansible/roles/nats/tasks/main.yaml @@ -0,0 +1,39 @@ +--- +- name: Create user and group for NATS + become: yes + block: + - group: + name: "{{ nats_group }}" + state: present + - user: + name: "{{ nats_user }}" + group: "{{ nats_group }}" + system: yes + state: present + +- name: Download NATS server + get_url: + url: "https://github.com/nats-io/nats-server/releases/download/v{{ nats_version }}/nats-server-v{{ nats_version }}-linux-amd64.tar.gz" + dest: "/tmp/nats-server-v{{ nats_version }}-linux-amd64.tar.gz" + mode: '0755' + +- name: Extract NATS server archive + unarchive: + src: "/tmp/nats-server-v{{ nats_version }}-linux-amd64.tar.gz" + dest: "/opt/nats" + remote_src: yes + +- name: Create systemd service file for NATS + template: + src: nats.service.j2 + dest: /etc/systemd/system/nats.service + +- name: Reload systemd daemon + systemd: + daemon_reload: yes + +- name: Set NATS service state + systemd: + name: nats + enabled: "{{ service_enabled }}" + state: "{{ service_state }}" diff --git a/data/ansible/roles/nats/templates/nats.service.j2 b/data/ansible/roles/nats/templates/nats.service.j2 new file mode 100644 index 000000000..28ae70bb6 --- /dev/null +++ b/data/ansible/roles/nats/templates/nats.service.j2 @@ -0,0 +1,12 @@ +[Unit] +Description=NATS Server +After=network.target + +[Service] +ExecStart=/opt/nats/nats-server-v{{ nats_version }}-linux-amd64/nats-server +User={{ nats_user }} +Group={{ nats_group }} +Restart=on-failure + +[Install] +WantedBy=multi-user.target