mirror of
				https://gitea.0xace.cc/ansible-galaxy/redis.git
				synced 2025-11-04 05:37:24 +00:00 
			
		
		
		
	add redis role
This commit is contained in:
		
							
								
								
									
										5
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					Setup redis service. 
 | 
				
			||||||
 | 
					Supported modes:
 | 
				
			||||||
 | 
					- Redis sentinel cluster
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Tested only with Ubuntu 20.04
 | 
				
			||||||
							
								
								
									
										12
									
								
								defaults/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								defaults/main.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					redis_debian_version: "6:6.2.6-1rl1~focal1"
 | 
				
			||||||
 | 
					redis_debian_package: redis-server
 | 
				
			||||||
 | 
					redis_sentinel_debian_package: redis-sentinel
 | 
				
			||||||
 | 
					redis_sentinel_debian_version: "6:6.2.6-1rl1~focal1"
 | 
				
			||||||
 | 
					redis_masterauth: P@ssw0rd
 | 
				
			||||||
 | 
					redis_masteruser: masteruser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					redis_debian_apt_key:
 | 
				
			||||||
 | 
					  - name: redis.io.gpg
 | 
				
			||||||
 | 
					    url: https://packages.redis.io/gpg
 | 
				
			||||||
 | 
					    keyring: /etc/apt/trusted.gpg.d/redis.io.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										58
									
								
								tasks/Debian/install.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								tasks/Debian/install.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Add gpg keys for redis
 | 
				
			||||||
 | 
					  ansible.builtin.apt_key:
 | 
				
			||||||
 | 
					    url: "{{ item.url }}"
 | 
				
			||||||
 | 
					    keyring: "{{ item.keyring }}"
 | 
				
			||||||
 | 
					  loop: "{{ redis_debian_apt_key }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Enable https transport for apt
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    name: apt-transport-https
 | 
				
			||||||
 | 
					    update_cache: yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Add redis.list to sources
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: "redis.list.j2"
 | 
				
			||||||
 | 
					    dest: /etc/apt/sources.list.d/redis.list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#- name: Add redis repository from PPA
 | 
				
			||||||
 | 
					#  ansible.builtin.apt_repository:
 | 
				
			||||||
 | 
					#    repo: ppa:redislabs/redis
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Check if redis is installed
 | 
				
			||||||
 | 
					  ansible.builtin.shell: dpkg-query -l {{ redis_debian_package }} 2>&1 | grep {{ redis_debian_version }}
 | 
				
			||||||
 | 
					  ignore_errors: True
 | 
				
			||||||
 | 
					  register: is_redis
 | 
				
			||||||
 | 
					  changed_when: is_redis.rc != 0
 | 
				
			||||||
 | 
					  failed_when: False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Mask redis before install
 | 
				
			||||||
 | 
					  ansible.builtin.systemd:
 | 
				
			||||||
 | 
					    name: "{{ redis_debian_package }}"
 | 
				
			||||||
 | 
					    masked: yes
 | 
				
			||||||
 | 
					  when: is_redis.rc != 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Install redis {{ redis_debian_version }}
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    name: "{{ redis_debian_package }}={{ redis_debian_version }}"
 | 
				
			||||||
 | 
					    update_cache: yes
 | 
				
			||||||
 | 
					  when: is_redis.rc != 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Check if redis-sentinel is installed
 | 
				
			||||||
 | 
					  ansible.builtin.shell: dpkg-query -W {{ redis_sentinel_debian_package }} 2>&1 | grep {{ redis_sentinel_debian_version }}
 | 
				
			||||||
 | 
					  ignore_errors: True
 | 
				
			||||||
 | 
					  register: is_redis_sentinel
 | 
				
			||||||
 | 
					  changed_when: is_redis_sentinel.rc != 0
 | 
				
			||||||
 | 
					  failed_when: False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Mask redis-sentinel before install 
 | 
				
			||||||
 | 
					  ansible.builtin.systemd:
 | 
				
			||||||
 | 
					    name: "{{ redis_sentinel_debian_package }}"
 | 
				
			||||||
 | 
					    masked: yes
 | 
				
			||||||
 | 
					  when: is_redis_sentinel.rc != 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Install redis-sentinel {{ redis_sentinel_debian_version }}
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    name: "{{ redis_sentinel_debian_package }}={{ redis_sentinel_debian_version }}"
 | 
				
			||||||
 | 
					    update_cache: yes
 | 
				
			||||||
 | 
					  when: is_redis_sentinel != 0
 | 
				
			||||||
							
								
								
									
										5
									
								
								tasks/configure-sentinel.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tasks/configure-sentinel.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Add redis-sentinel config
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: sentinel.conf.j2
 | 
				
			||||||
 | 
					    dest: "/etc/redis/sentinel.conf"
 | 
				
			||||||
							
								
								
									
										5
									
								
								tasks/configure.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tasks/configure.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Add redis config
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: redis.conf.j2
 | 
				
			||||||
 | 
					    dest: "/etc/redis/redis.conf"
 | 
				
			||||||
							
								
								
									
										5
									
								
								tasks/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tasks/main.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- include: redis.yaml
 | 
				
			||||||
 | 
					  tags:
 | 
				
			||||||
 | 
					  - redis
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										50
									
								
								tasks/redis.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								tasks/redis.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Set fact about redis master
 | 
				
			||||||
 | 
					  set_fact:
 | 
				
			||||||
 | 
					    redis_master_ip: "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}"
 | 
				
			||||||
 | 
					  delegate_to: "{{ item }}"
 | 
				
			||||||
 | 
					  loop: "{{ play_hosts }}"
 | 
				
			||||||
 | 
					  run_once: yes
 | 
				
			||||||
 | 
					  when: hostvars[inventory_hostname].master is defined
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					- debug:
 | 
				
			||||||
 | 
					    msg: "{{ redis_master_ip }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Include redis installation tasks
 | 
				
			||||||
 | 
					  include: "{{ ansible_os_family }}/install.yaml"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Check if redis is running
 | 
				
			||||||
 | 
					  command: systemctl status redis-server
 | 
				
			||||||
 | 
					  ignore_errors: yes
 | 
				
			||||||
 | 
					  changed_when: False
 | 
				
			||||||
 | 
					  register: service_redis_status
 | 
				
			||||||
 | 
					  failed_when: False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Configure redis
 | 
				
			||||||
 | 
					  include: configure.yaml
 | 
				
			||||||
 | 
					  when: service_redis_status.rc != 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Start redis server
 | 
				
			||||||
 | 
					  service:
 | 
				
			||||||
 | 
					    name: redis-server
 | 
				
			||||||
 | 
					    enabled: True
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Check if redis-sentinel is running
 | 
				
			||||||
 | 
					  command: systemctl status redis-sentinel
 | 
				
			||||||
 | 
					  ignore_errors: yes
 | 
				
			||||||
 | 
					  changed_when: False
 | 
				
			||||||
 | 
					  register: service_redis_sentinel_status
 | 
				
			||||||
 | 
					  failed_when: False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Configure redis-sentinel
 | 
				
			||||||
 | 
					  include: configure-sentinel.yaml
 | 
				
			||||||
 | 
					  when: service_redis_sentinel_status.rc != 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Start redis-sentinel
 | 
				
			||||||
 | 
					  service:
 | 
				
			||||||
 | 
					    name: redis-sentinel
 | 
				
			||||||
 | 
					    enabled: True
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
							
								
								
									
										78
									
								
								templates/redis.conf.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								templates/redis.conf.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					bind 127.0.0.1 {{ ansible_default_ipv4.address }}
 | 
				
			||||||
 | 
					protected-mode no
 | 
				
			||||||
 | 
					supervised systemd
 | 
				
			||||||
 | 
					{% if master is not defined %}
 | 
				
			||||||
 | 
					replicaof {{ redis_master_ip }} 6379
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					masterauth {{ redis_masterauth }}
 | 
				
			||||||
 | 
					masteruser {{ redis_masteruser }}
 | 
				
			||||||
 | 
					user {{ redis_masteruser }} +@all on >{{ redis_masterauth }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					port 6379
 | 
				
			||||||
 | 
					tcp-backlog 511
 | 
				
			||||||
 | 
					timeout 0
 | 
				
			||||||
 | 
					tcp-keepalive 300
 | 
				
			||||||
 | 
					daemonize yes
 | 
				
			||||||
 | 
					supervised auto
 | 
				
			||||||
 | 
					pidfile /run/redis/redis-server.pid
 | 
				
			||||||
 | 
					loglevel notice
 | 
				
			||||||
 | 
					logfile /var/log/redis/redis-server.log
 | 
				
			||||||
 | 
					databases 16
 | 
				
			||||||
 | 
					always-show-logo no
 | 
				
			||||||
 | 
					set-proc-title yes
 | 
				
			||||||
 | 
					proc-title-template "{title} {listen-addr} {server-mode}"
 | 
				
			||||||
 | 
					stop-writes-on-bgsave-error yes
 | 
				
			||||||
 | 
					rdbcompression yes
 | 
				
			||||||
 | 
					rdbchecksum yes
 | 
				
			||||||
 | 
					dbfilename dump.rdb
 | 
				
			||||||
 | 
					rdb-del-sync-files no
 | 
				
			||||||
 | 
					dir /var/lib/redis
 | 
				
			||||||
 | 
					replica-serve-stale-data yes
 | 
				
			||||||
 | 
					replica-read-only yes
 | 
				
			||||||
 | 
					repl-diskless-sync no
 | 
				
			||||||
 | 
					repl-diskless-sync-delay 5
 | 
				
			||||||
 | 
					repl-diskless-load disabled
 | 
				
			||||||
 | 
					repl-disable-tcp-nodelay no
 | 
				
			||||||
 | 
					replica-priority 100
 | 
				
			||||||
 | 
					acllog-max-len 128
 | 
				
			||||||
 | 
					lazyfree-lazy-eviction no
 | 
				
			||||||
 | 
					lazyfree-lazy-expire no
 | 
				
			||||||
 | 
					lazyfree-lazy-server-del no
 | 
				
			||||||
 | 
					replica-lazy-flush no
 | 
				
			||||||
 | 
					lazyfree-lazy-user-del no
 | 
				
			||||||
 | 
					lazyfree-lazy-user-flush no
 | 
				
			||||||
 | 
					oom-score-adj no
 | 
				
			||||||
 | 
					oom-score-adj-values 0 200 800
 | 
				
			||||||
 | 
					disable-thp yes
 | 
				
			||||||
 | 
					appendonly no
 | 
				
			||||||
 | 
					appendfilename "appendonly.aof"
 | 
				
			||||||
 | 
					appendfsync everysec
 | 
				
			||||||
 | 
					no-appendfsync-on-rewrite no
 | 
				
			||||||
 | 
					auto-aof-rewrite-percentage 100
 | 
				
			||||||
 | 
					auto-aof-rewrite-min-size 64mb
 | 
				
			||||||
 | 
					aof-load-truncated yes
 | 
				
			||||||
 | 
					aof-use-rdb-preamble yes
 | 
				
			||||||
 | 
					lua-time-limit 5000
 | 
				
			||||||
 | 
					slowlog-log-slower-than 10000
 | 
				
			||||||
 | 
					slowlog-max-len 128
 | 
				
			||||||
 | 
					latency-monitor-threshold 0
 | 
				
			||||||
 | 
					notify-keyspace-events ""
 | 
				
			||||||
 | 
					hash-max-ziplist-entries 512
 | 
				
			||||||
 | 
					hash-max-ziplist-value 64
 | 
				
			||||||
 | 
					list-max-ziplist-size -2
 | 
				
			||||||
 | 
					list-compress-depth 0
 | 
				
			||||||
 | 
					set-max-intset-entries 512
 | 
				
			||||||
 | 
					zset-max-ziplist-entries 128
 | 
				
			||||||
 | 
					zset-max-ziplist-value 64
 | 
				
			||||||
 | 
					hll-sparse-max-bytes 3000
 | 
				
			||||||
 | 
					stream-node-max-bytes 4096
 | 
				
			||||||
 | 
					stream-node-max-entries 100
 | 
				
			||||||
 | 
					activerehashing yes
 | 
				
			||||||
 | 
					client-output-buffer-limit normal 0 0 0
 | 
				
			||||||
 | 
					client-output-buffer-limit replica 256mb 64mb 60
 | 
				
			||||||
 | 
					client-output-buffer-limit pubsub 32mb 8mb 60
 | 
				
			||||||
 | 
					hz 10
 | 
				
			||||||
 | 
					dynamic-hz yes
 | 
				
			||||||
 | 
					aof-rewrite-incremental-fsync yes
 | 
				
			||||||
 | 
					rdb-save-incremental-fsync yes
 | 
				
			||||||
 | 
					jemalloc-bg-thread yes
 | 
				
			||||||
							
								
								
									
										1
									
								
								templates/redis.list.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								templates/redis.list.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					deb https://packages.redis.io/deb {{ ansible_distribution_release }} main
 | 
				
			||||||
							
								
								
									
										17
									
								
								templates/sentinel.conf.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								templates/sentinel.conf.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					bind {{ ansible_default_ipv4.address }}
 | 
				
			||||||
 | 
					port 26379
 | 
				
			||||||
 | 
					daemonize yes
 | 
				
			||||||
 | 
					supervised auto
 | 
				
			||||||
 | 
					pidfile /run/sentinel/redis-sentinel.pid
 | 
				
			||||||
 | 
					logfile /var/log/redis/redis-sentinel.log
 | 
				
			||||||
 | 
					dir /var/lib/redis
 | 
				
			||||||
 | 
					sentinel monitor mymaster {{ redis_master_ip }} 6379 2
 | 
				
			||||||
 | 
					sentinel auth-pass mymaster {{ redis_masterauth }}
 | 
				
			||||||
 | 
					sentinel auth-user mymaster {{ redis_masteruser }}
 | 
				
			||||||
 | 
					sentinel down-after-milliseconds mymaster 30000
 | 
				
			||||||
 | 
					acllog-max-len 128
 | 
				
			||||||
 | 
					sentinel parallel-syncs mymaster 1
 | 
				
			||||||
 | 
					sentinel failover-timeout mymaster 180000
 | 
				
			||||||
 | 
					sentinel deny-scripts-reconfig yes
 | 
				
			||||||
 | 
					SENTINEL resolve-hostnames no
 | 
				
			||||||
 | 
					SENTINEL announce-hostnames no
 | 
				
			||||||
		Reference in New Issue
	
	Block a user