redis: add support for multi instances

This commit is contained in:
Victor LABORIE 2018-09-19 17:24:26 +02:00
parent 09e48516c6
commit 8546f0f34f
7 changed files with 102 additions and 3 deletions

View File

@ -17,6 +17,7 @@ The **patch** part changes incrementally at each release.
* mysql: add a variable to prevent mysql from restarting
* networkd-to-ifconfig: add a role to switch from networkd to ifconfig
* webapps/evoadmin-web: add users to /etc/aliases
* redis: add support for multi instances
### Changed
* dovecot: stronger TLS configuration

View File

@ -5,6 +5,7 @@ redis_conf_path: /etc/redis/redis.conf
redis_port: 6379
redis_bind_interface: 127.0.0.1
redis_unixsocket: '/var/run/redis/redis.sock'
redis_pidfile: "/var/run/redis/{{ redis_daemon }}.pid"
redis_timeout: 300
redis_password: NULL

View File

@ -0,0 +1,18 @@
[Unit]
Description=Advanced key-value store
After=network.target
[Service]
ExecStartPre=/bin/mkdir -m 0755 -p /run/redis/%i
ExecStartPre=/bin/chown redis-%i: /run/redis/%i
PermissionsStartOnly=yes
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis-%i.conf --unixsocket /run/redis/%i/redis.sock --pidfile /run/redis/%i/redis-server.pid
ExecStop=/usr/bin/redis-cli -s /run/redis/%i/redis.sock shutdown
Restart=always
User=redis-%i
Group=redis-%i
[Install]
WantedBy=multi-user.target

View File

@ -1,6 +1,6 @@
---
- name: restart redis
service:
systemd:
name: "{{ redis_daemon }}"
state: restarted

74
redis/tasks/instances.yml Normal file
View File

@ -0,0 +1,74 @@
---
- name: Deploy systemd templates for redis instances
copy:
src: 'redis-server@.service'
dest: '/etc/systemd/system/'
mode: "0644"
tags:
- redis
- name: Disable standard redis service
service:
name: "redis-server"
enabled: no
state: stopped
tags:
- redis
- set_fact:
redis_daemon: "redis-server@{{ redis_instance_name }}"
redis_conf_path: "/etc/redis/redis-{{ redis_instance_name }}.conf"
redis_unixsocket: "/var/run/redis/{{ redis_instance_name }}/redis.sock"
redis_pidfile: "/var/run/redis/{{ redis_instance_name }}/{{ redis_daemon }}.pid"
redis_logfile: "/var/log/redis/{{ redis_instance_name }}/redis-server.log"
redis_dbdir: "/var/lib/redis/{{ redis_instance_name }}"
tags:
- redis
- name: Configure redis instance.
template:
src: redis.conf.j2
dest: "{{ redis_conf_path }}"
mode: "0644"
tags:
- redis
- name: Create redis instance group
group:
name: "redis-{{ redis_instance_name }}"
state: present
system: True
tags:
- redis
- name: Create redis instance user
user:
name: "redis-{{ redis_instance_name }}"
group: "redis-{{ redis_instance_name }}"
state: present
system: True
shell: '/bin/falase'
tags:
- redis
- name: Create needed dir
file:
dest: "{{ item }}"
state: directory
mode: "0755"
owner: "redis-{{ redis_instance_name }}"
group: "redis-{{ redis_instance_name }}"
with_items:
- "{{ redis_dbdir }}"
- "{{ redis_logfile | dirname }}"
tags:
- redis
- name: Redis instance is running and enabled on boot.
systemd:
name: "{{ redis_daemon }}"
enabled: yes
state: started
daemon_reload: yes
tags:
- redis

View File

@ -24,20 +24,25 @@
tags:
- redis
- include: instances.yml
when: redis_instance_name is defined
- name: Redis is configured.
template:
src: redis.conf.j2
dest: "{{ redis_conf_path }}"
mode: "0644"
notify: restart redis
when: redis_instance_name is not defined
tags:
- redis
- name: Redis is running and enabled on boot.
service:
systemd:
name: "{{ redis_daemon }}"
enabled: yes
state: started
when: redis_instance_name is not defined
tags:
- redis

View File

@ -1,5 +1,5 @@
daemonize yes
pidfile /var/run/redis/{{ redis_daemon }}.pid
pidfile {{ redis_pidfile }}
port {{ redis_port }}
bind {{ redis_bind_interface }}