ansible/roles/redis/tasks/main.yml
genofire 0a6b680cda Write a role to setup a Redis instance.
The role expects two parameters:

  * `redis_instance`: the instance name
  * `redis_client_group`: the group allowed to access the instance's unix socket

Fixes #17
Updates #10
2020-10-24 14:07:10 +02:00

100 lines
2.7 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
- name: Install redis
package:
name: redis
state: present
- name: 'Create /var/db/redis-{{ redis_instance }}'
file:
path: '/var/db/redis-{{ redis_instance }}'
state: directory
owner: redis
group: redis
mode: 0700
- name: 'Create /var/run/redis-{{ redis_instance }}'
file:
path: '/var/run/redis-{{ redis_instance }}'
state: directory
owner: redis
group: '{{ redis_client_group }}'
mode: 0750
- name: 'Add /var/log/redis-{{ redis_instance }} to fstab'
mount:
path: /var/log/redis-{{ redis_instance }}
src: tmpfs
fstype: tmpfs
opts: 'rw,size={{ redis_log_size }},mode={{ redis_log_mode }},uid={{ redis_log_uid }},gid={{ redis_log_gid }},late'
state: mounted
- name: 'Create redis-{{ redis_instance }} service directories'
file:
path: '/etc/s6-rc/service/redis-{{ redis_instance}}{{ item }}'
state: directory
owner: root
group: wheel
mode: 0755
with_items: '{{ redis_service_dirs }}'
notify:
- Reload s6-rc
- 'Restart redis-{{ redis_instance }} log'
- 'Restart redis-{{ redis_instance }}'
- name: 'Generate redis-{{ redis_instance }} service scripts'
template:
dest: '/etc/s6-rc/service/redis-{{ redis_instance }}{{ item }}'
src: 'redis{{ item }}.j2'
mode: 0555
owner: root
group: wheel
with_items: '{{ redis_service_scripts }}'
notify:
- Reload s6-rc
- 'Restart redis-{{ redis_instance }} log'
- 'Restart redis-{{ redis_instance }}'
- name: 'Generate redis-{{ redis_instance }} service configuration'
copy:
dest: '/etc/s6-rc/service/redis-{{ redis_instance}}{{ item.name }}'
content: '{{ item.content }}'
mode: 0444
owner: root
group: wheel
loop_control:
label: 'redis-{{ redis_instance }}{{ item.name }} = {{ item.content }}'
notify:
- Reload s6-rc
- 'Restart redis-{{ redis_instance }} log'
- 'Restart redis-{{ redis_instance }}'
with_items: '{{ redis_service_config }}'
- name: 'Configure redis-{{ redis_instance }}'
template:
dest: '/usr/local/etc/redis-{{ redis_instance }}.conf'
src: redis.conf.j2
mode: 0444
owner: root
group: wheel
notify:
- 'Restart redis-{{ redis_instance }}'
- name: Flush handlers
meta: flush_handlers
- name: 'Start redis-{{ redis_instance }}'
command: 'fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change redis-{{ redis_instance }}'
register: change
changed_when: change.stdout | length > 0
- name: 'Enable redis-{{ redis_instance }}'
lineinfile:
path: /etc/s6-rc/service/enabled/contents
regexp: "^redis-{{ redis_instance }}$"
line: 'redis-{{ redis_instance }}'
state: present
notify:
- Reload s6-rc
- name: Flush handlers (again)
meta: flush_handlers