WIP: separate Redis instances from default server

This commit is contained in:
Jérémy Lecour 2019-09-05 06:44:38 +02:00
parent 415aedb78a
commit d0111f9a4f
10 changed files with 89 additions and 99 deletions

View file

@ -13,12 +13,12 @@ Everything is in the `tasks/main.yml` file.
Main variables are :
* `redis_daemon`: name of the process ;
* `redis_conf_path`: config file location ;
* `redis_conf_dir`: config directory ;
* `redis_port`: listening TCP port ;
* `redis_bind_interface`: listening IP address ;
* `redis_password`: password for redis. Empty means no password ;
* `redis_unixsocket`: Unix socket ;
* `redis_socket_dir`: Unix socket directory ;
* `redis_loglevel`: log verbosity ;
* `redis_logfile`: log file location.
* `redis_log_dir`: log file directory.
The full list of variables (with default values) can be found in `defaults/main.yml`.

View file

@ -1,12 +1,13 @@
---
redis_daemon: redis-server
redis_conf_path: /etc/redis/redis.conf
redis_systemd_name: redis-server
redis_conf_dir: /etc/redis
redis_port: 6379
redis_bind_interface: 127.0.0.1
redis_unixsocket: '/var/run/redis/redis.sock'
redis_unixsocketperm: 770
redis_pidfile: "/var/run/redis/{{ redis_daemon }}.pid"
redis_socket_dir: '/var/run/redis'
redis_socket_perms: 770
redis_pid_dir: "/var/run/redis"
redis_timeout: 300
# for client authorization
@ -15,7 +16,7 @@ redis_password: NULL
redis_password_master: "{{ redis_password }}"
redis_loglevel: "notice"
redis_logfile: /var/log/redis/redis-server.log
redis_log_dir: /var/log/redis
redis_databases: 16
@ -26,8 +27,8 @@ redis_save:
- 60 10000
redis_rdbcompression: "yes"
redis_dbfilename: dump.rdb
redis_dbdir: /var/lib/redis
redis_data_dir: /var/lib/redis
redis_data_file: dump.rdb
redis_maxclients: 128
@ -50,3 +51,5 @@ redis_restart_force: False
redis_disabled_commands: []
redis_sentinel_install: False
redis_default_server_disabled: True

View file

@ -3,13 +3,13 @@ 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
ExecStartPre=/bin/mkdir -m 0755 -p /var/run/redis-%i
ExecStartPre=/bin/chown redis-%i: /var/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
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
Restart=always
User=redis-%i
Group=redis-%i

View file

@ -1,7 +1,7 @@
---
- name: restart redis
systemd:
name: "{{ redis_daemon }}"
name: "{{ redis_systemd_name }}"
state: restarted
- name: restart redis (noop)

View file

@ -0,0 +1,18 @@
---
- name: Redis is configured.
template:
src: redis.conf.j2
dest: "{{ redis_conf_dir }}"
mode: "0644"
notify: "{{ redis_restart_handler_name }}"
tags:
- redis
- name: Redis is running and enabled on boot.
systemd:
name: "{{ redis_systemd_name }}"
enabled: yes
state: started
tags:
- redis

View file

@ -1,40 +1,5 @@
---
# - name: "Set variables for the instance '{{ redis_instance_name }}'"
# 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: Systemd template for redis instances is installed
copy:
src: 'redis-server@.service'
dest: '/etc/systemd/system/'
mode: "0644"
tags:
- redis
- name: Redis SysVinit script is stopped and disabled
service:
name: "redis-server"
enabled: no
state: stopped
tags:
- redis
- name: "Redis instance '{{ redis_instance_name }}' configuration file is present"
template:
src: redis.conf.j2
dest: "{{ redis_conf_path }}"
mode: "0644"
tags:
- redis
- name: "Redis instance '{{ redis_instance_name }}' group is present"
group:
name: "redis-{{ redis_instance_name }}"
@ -53,35 +18,53 @@
tags:
- redis
- name: "Ensure redis base folders will be accessible for all instances"
file:
dest: "{{ item }}"
state: directory
mode: "0755"
owner: "redis"
group: "redis"
with_items:
- "/var/lib/redis"
- "/var/log/redis"
- name: "Instances '{{ redis_instance_name }}' directories are present"
file:
dest: "{{ item }}"
state: directory
mode: "0755"
owner: "redis-{{ redis_instance_name }}"
group: "redis-{{ redis_instance_name }}"
follow: yes
state: directory
with_items:
- "{{ redis_dbdir }}"
- "{{ redis_logfile | dirname }}"
- "{{ redis_conf_dir }}"
- "{{ redis_pid_dir }}"
- "{{ redis_socket_dir }}"
- "{{ redis_data_dir }}"
- "{{ redis_log_dir }}"
tags:
- redis
- name: "Redis instance '{{ redis_instance_name }}' configuration file is present"
template:
src: redis.conf.j2
dest: "{{ redis_conf_dir }}/redis.conf"
mode: "0644"
tags:
- redis
- name: Systemd template for redis instances is installed
copy:
src: 'redis-server@.service'
dest: '/etc/systemd/system/'
mode: "0644"
tags:
- redis
- name: "Redis '{{ redis_instance_name }}' systemd unit is enabled and started"
systemd:
name: "{{ redis_daemon }}"
name: "{{ redis_systemd_name }}"
enabled: yes
state: started
daemon_reload: yes
tags:
- redis
- name: Redis SysVinit script is stopped and disabled
service:
name: "redis-server"
enabled: no
state: stopped
when: redis_default_server_disabled
tags:
- redis

View file

@ -37,34 +37,18 @@
tags:
- redis
- include: instances.yml
- include: instance-server.yml
vars:
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 }}"
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 }}"
when: redis_instance_name is defined
- name: Redis is configured.
template:
src: redis.conf.j2
dest: "{{ redis_conf_path }}"
mode: "0644"
notify: "{{ redis_restart_handler_name }}"
- include: default-server.yml
when: redis_instance_name is not defined
tags:
- redis
- name: Redis is running and enabled on boot.
systemd:
name: "{{ redis_daemon }}"
enabled: yes
state: started
when: redis_instance_name is not defined
tags:
- redis
- name: Is Munin installed
stat:
@ -74,7 +58,7 @@
- redis
- munin
- include: munin.yml
- include: default-munin.yml
when:
- _munin_installed.stat.exists
- _munin_installed.stat.isdir
@ -83,7 +67,7 @@
- redis
- munin
- include: munin-instances.yml
- include: instance-munin.yml
when:
- _munin_installed.stat.exists
- _munin_installed.stat.isdir
@ -102,7 +86,9 @@
- nrpe
- include: nrpe_stretch.yml
when: ansible_distribution_release == "stretch" and nrpe_evolix_config.stat.exists == true
when:
- ansible_distribution_release == "stretch"
- nrpe_evolix_config.stat.exists == true
tags:
- redis
- nrpe

View file

@ -1,11 +1,11 @@
daemonize yes
pidfile {{ redis_pidfile }}
pidfile {{ redis_pid_dir }}/redis-server.pid
port {{ redis_port }}
bind {{ redis_bind_interface }}
{% if redis_unixsocket %}
unixsocket {{ redis_unixsocket }}
unixsocketperm {{ redis_unixsocketperm }}
unixsocket {{ redis_socket_dir }}/redis.sock
unixsocketperm {{ redis_socket_perms }}
{% endif %}
{% if redis_password %}
@ -18,7 +18,7 @@ masterauth {{ redis_password_master }}
timeout {{ redis_timeout }}
loglevel {{ redis_loglevel }}
logfile {{ redis_logfile }}
logfile {{ redis_log_dir }}/redis-server.pid
# To enable logging to the system logger, just set 'syslog-enabled' to yes,
# and optionally update the other syslog parameters to suit your needs.
@ -33,8 +33,8 @@ save {{ save }}
{% endfor %}
rdbcompression {{ redis_rdbcompression }}
dbfilename {{ redis_dbfilename }}
dir {{ redis_dbdir }}
dbfilename {{ redis_data_file }}
dir {{ redis_data_dir }}
{% if redis_installed_version | version_compare('3.2', '>=') %}
protected-mode {{ redis_protected_mode }}