--- - name: Add APT key for Redis repository apt_key: url: https://packages.redis.io/gpg - name: Add Redis APT repository apt_repository: repo: deb https://packages.redis.io/deb bookworm main - name: Install Redis apt: name: - redis={{ redis_version }} - redis-server={{ redis_version }} - redis-tools={{ redis_version }} - name: Remove redis-server from init.d (may conflict with systemd service) file: path: /etc/init.d/redis-server state: absent when: is_docker - name: Update rc.d to reflect init.d removal command: cmd: update-rc.d redis-server remove when: is_docker - name: Stop redis-server service installed through APT (if any) systemd_service: name: redis-server state: stopped enabled: false ignore_errors: true - name: Create group for redis user group: name: redis - name: Create redis user user: name: redis group: redis create_home: false - name: Create /run/redis file: path: /run/redis state: directory owner: redis group: redis mode: 0755 - name: Create /var/lib/redis file: path: /var/lib/redis state: directory owner: redis group: redis mode: 0700 - name: Create /var/log/redis file: path: /var/log/redis state: directory owner: redis group: redis mode: 0744 - name: Create Redis configuration file template: src: redis.conf.jinja2 dest: /etc/redis.conf owner: redis group: redis mode: 0600 - name: Create Redis service file copy: src: redis.service dest: /etc/systemd/system/redis.service owner: root group: root mode: 0644 - name: Add service file for disabling transparent hugepage copy: src: transparent_hugepage.service dest: /etc/systemd/system/transparent_hugepage.service owner: root group: root mode: 0644 - name: Check if transparent hugepage is currently enabled command: cmd: cat /sys/kernel/mm/transparent_hugepage/enabled register: transparent_hugepage changed_when: false - name: Start and enable "disable transparent hugepage" service systemd_service: name: transparent_hugepage.service state: started enabled: true when: "'[never]' not in transparent_hugepage.stdout" ignore_errors: "{{ is_docker }}" - name: Check if kernel overcommit mode is already set command: cmd: sysctl -n vm.overcommit_memory register: overcommit_memory changed_when: false - name: Set kernel overcommit mode temporarily (recommended by Redis) command: cmd: sysctl vm.overcommit_memory=1 when: overcommit_memory.stdout == "0" ignore_errors: "{{ is_docker }}" - name: Make kernel overcommit mode permanent (recommended by Redis, requires restart) lineinfile: path: /etc/sysctl.conf line: vm.overcommit_memory = 1 ignore_errors: "{{ is_docker }}" - name: Start and enable redis service systemd_service: name: redis state: started enabled: true