redis: data directory is configurable
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Jérémy Lecour 2020-01-17 14:54:05 +01:00 committed by Jérémy Lecour
parent d3dc98a778
commit adc1aad883
7 changed files with 78 additions and 71 deletions

View file

@ -1,16 +1,16 @@
---
redis_systemd_name: redis-server
redis_conf_dir: /etc/redis
redis_conf_dir_prefix: /etc/redis
redis_port: 6379
redis_bind_interface: 127.0.0.1
redis_socket_enabled: True
redis_socket_dir: '/var/run/redis'
redis_socket_dir_prefix: '/var/run/redis'
redis_socket_perms: 770
redis_pid_dir: "/var/run/redis"
redis_pid_dir_prefix: "/var/run/redis"
redis_timeout: 300
@ -19,7 +19,7 @@ redis_password: NULL
# for slave authorization on master
redis_password_master: "{{ redis_password }}"
redis_log_dir: /var/log/redis
redis_log_dir_prefix: /var/log/redis
redis_log_level: "notice"
redis_databases: 16
@ -31,7 +31,7 @@ redis_save:
- 60 10000
redis_rdbcompression: True
redis_data_dir: /var/lib/redis
redis_data_dir_prefix: /var/lib/redis
redis_data_file: dump.rdb
redis_maxclients: 10000

View file

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

View file

@ -1,38 +0,0 @@
[Unit]
Description=Advanced key-value store
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis-%i/redis.conf
PIDFile=/var/run/redis-%i/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis-%i
Group=redis-%i
RuntimeDirectory=redis-%i
ExecStartPre=-/bin/run-parts --verbose /etc/redis-%i/redis-server.pre-up.d
ExecStartPost=-/bin/run-parts --verbose /etc/redis-%i/redis-server.post-up.d
ExecStop=-/bin/run-parts --verbose /etc/redis-%i/redis-server.pre-down.d
ExecStop=/bin/kill -s TERM $MAINPID
ExecStopPost=-/bin/run-parts --verbose /etc/redis-%i/redis-server.post-down.d
UMask=007
PrivateTmp=yes
LimitNOFILE=65535
PrivateDevices=yes
ProtectHome=yes
ReadOnlyDirectories=/
ReadWriteDirectories=-/var/lib/redis-%i
ReadWriteDirectories=-/var/log/redis-%i
ReadWriteDirectories=-/var/run/redis-%i
CapabilityBoundingSet=~CAP_SYS_PTRACE
# redis-server writes its own config file when in cluster mode so we allow
# writing there (NB. ProtectSystem=true over ProtectSystem=full)
ProtectSystem=true
ReadWriteDirectories=-/etc/redis-%i
[Install]
WantedBy=multi-user.target

View file

@ -91,8 +91,8 @@
- redis
- name: Systemd template for redis instances is installed (Debian 8)
copy:
src: 'redis-server@jessie.service'
template:
src: 'redis-server@jessie.service.j2'
dest: '/etc/systemd/system/redis-server@.service'
mode: "0644"
owner: "root"
@ -104,8 +104,8 @@
- redis
- name: Systemd template for redis instances is installed (Debian 9 or later)
copy:
src: 'redis-server@stretch.service'
template:
src: 'redis-server@stretch.service.j2'
dest: '/etc/systemd/system/redis-server@.service'
mode: "0644"
owner: "root"

View file

@ -39,14 +39,20 @@
- include: instance-server.yml
vars:
redis_systemd_name: "redis-server@{{ redis_instance_name }}"
redis_conf_dir: "/etc/redis-{{ redis_instance_name }}"
redis_socket_dir: "/var/run/redis-{{ redis_instance_name }}"
redis_pid_dir: "/var/run/redis-{{ redis_instance_name }}"
redis_log_dir: "/var/log/redis-{{ redis_instance_name }}"
redis_data_dir: "/var/lib/redis-{{ redis_instance_name }}"
redis_conf_dir: "{{ redis_conf_dir_prefix }}-{{ redis_instance_name }}"
redis_socket_dir: "{{ redis_socket_dir_prefix }}-{{ redis_instance_name }}"
redis_pid_dir: "{{ redis_pid_dir_prefix }}-{{ redis_instance_name }}"
redis_log_dir: "{{ redis_log_dir_prefix }}-{{ redis_instance_name }}"
redis_data_dir: "{{ redis_data_dir_prefix }}-{{ redis_instance_name }}"
when: redis_instance_name is defined
- include: default-server.yml
vars:
redis_conf_dir: "{{ redis_conf_dir_prefix }}"
redis_socket_dir: "{{ redis_socket_dir_prefix }}"
redis_pid_dir: "{{ redis_pid_dir_prefix }}"
redis_log_dir: "{{ redis_log_dir_prefix }}"
redis_data_dir: "{{ redis_data_dir_prefix }}"
when: redis_instance_name is not defined
- name: Is Munin installed

View file

@ -0,0 +1,19 @@
[Unit]
Description=Advanced key-value store
After=network.target
[Service]
Type=forking
PermissionsStartOnly=True
User=redis-%i
Group=redis-%i
ExecStartPre=/bin/mkdir -p {{ redis_socket_dir_prefix }}-%i {{ redis_pid_dir_prefix }}-%i
ExecStartPre=/bin/chown redis-%i:redis-%i {{ redis_socket_dir_prefix }}-%i {{ redis_pid_dir_prefix }}-%i
ExecStartPre=/bin/chmod 0750 {{ redis_socket_dir_prefix }}-%i {{ redis_pid_dir_prefix }}-%i
ExecStart=/usr/bin/redis-server {{ redis_conf_dir_prefix }}-%i/redis.conf --unixsocket {{ redis_socket_dir_prefix }}-%i/redis.sock --pidfile {{ redis_pid_dir_prefix }}-%i/redis-server.pid
ExecStop=/usr/bin/redis-cli -s {{ redis_socket_dir_prefix }}-%i/redis.sock shutdown
ExecStopPost=/bin/rm -rf {{ redis_socket_dir_prefix }}-%i {{ redis_pid_dir_prefix }}-%i
Restart=always
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,39 @@
[Unit]
Description=Advanced key-value store
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/redis-server {{ redis_conf_dir_prefix }}-%i/redis.conf
PIDFile=/var/run/redis-%i/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis-%i
Group=redis-%i
RuntimeDirectory=redis-%i
ExecStartPre=-/bin/run-parts --verbose {{ redis_conf_dir_prefix }}-%i/redis-server.pre-up.d
ExecStartPost=-/bin/run-parts --verbose {{ redis_conf_dir_prefix }}-%i/redis-server.post-up.d
ExecStop=-/bin/run-parts --verbose {{ redis_conf_dir_prefix }}-%i/redis-server.pre-down.d
ExecStop=/bin/kill -s TERM $MAINPID
ExecStopPost=-/bin/run-parts --verbose {{ redis_conf_dir_prefix }}-%i/redis-server.post-down.d
UMask=007
PrivateTmp=yes
LimitNOFILE=65535
PrivateDevices=yes
ProtectHome={{ redis_data_dir_prefix | match('/home') | ternary('no', 'yes') }}
ReadOnlyDirectories=/
ReadWriteDirectories=-{{ redis_data_dir_prefix }}-%i
ReadWriteDirectories=-{{ redis_log_dir_prefix }}-%i
ReadWriteDirectories=-{{ redis_pid_dir_prefix }}-%i
ReadWriteDirectories=-{{ redis_socket_dir_prefix }}-%i
CapabilityBoundingSet=~CAP_SYS_PTRACE
# redis-server writes its own config file when in cluster mode so we allow
# writing there (NB. ProtectSystem=true over ProtectSystem=full)
ProtectSystem=true
ReadWriteDirectories=-{{ redis_conf_dir_prefix }}-%i
[Install]
WantedBy=multi-user.target