mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
153 lines
4.9 KiB
YAML
153 lines
4.9 KiB
YAML
---
|
|
- name: Extract part of hostname to determine container name
|
|
set_fact:
|
|
redis_role: "{{ inventory_hostname.split('-')[2] }}"
|
|
redis_port: 6379
|
|
redis_secondary: yes
|
|
redis_secondary_ports:
|
|
story: 6380
|
|
user: 6381
|
|
session: 6382
|
|
pubsub: 6383
|
|
|
|
- name: Set redis_port for secondary redis servers
|
|
set_fact:
|
|
redis_port: "{{ redis_secondary_ports[redis_role] }}"
|
|
redis_secondary: yes
|
|
when: inventory_hostname not in ["db-redis-user", "db-redis-story1", "db-redis-session", "db-redis-pubsub"]
|
|
|
|
- name: Install sysfsutils for disabling transparent huge pages
|
|
become: yes
|
|
package:
|
|
name: sysfsutils
|
|
state: latest
|
|
|
|
- name: Disable transparent huge pages for redis performance - persistent change
|
|
become: yes
|
|
lineinfile:
|
|
path: /etc/sysfs.conf
|
|
create: true
|
|
regexp: '^kernel\/mm\/transparent\_hugepage\/enabled'
|
|
line: "kernel/mm/transparent_hugepage/enabled = never"
|
|
|
|
- name: Disable transparent huge pages for redis performance - live change
|
|
become: yes
|
|
shell: echo never {{ ">" }} /sys/kernel/mm/transparent_hugepage/enabled
|
|
|
|
- name: Add a vm.overcommit_memory setting at the end of the sysctl.conf
|
|
become: yes
|
|
sysctl: name=vm.overcommit_memory value=1 state=present reload=yes
|
|
|
|
- name: Template redis.conf file
|
|
copy:
|
|
src: /srv/newsblur/docker/redis/redis.conf
|
|
dest: /srv/newsblur/docker/redis/redis.conf
|
|
notify: restart redis
|
|
register: updated_config
|
|
|
|
- name: Template redis_replica.conf file
|
|
template:
|
|
src: /srv/newsblur/docker/redis/redis_replica.conf.j2
|
|
dest: "/srv/newsblur/docker/redis/redis_{{ redis_role }}_replica.conf"
|
|
notify: restart redis
|
|
register: updated_config
|
|
when: "'db-redis-story2' not in inventory_hostname"
|
|
|
|
- name: Create Redis docker volume directory
|
|
file:
|
|
path: /srv/newsblur/docker/volumes
|
|
state: directory
|
|
recurse: yes
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
|
group: "{{ ansible_effective_group_id|int }}"
|
|
|
|
- name: Create Redis docker volume with correct permissions
|
|
file:
|
|
path: "/srv/newsblur/docker/volumes/redis_{{ redis_role }}"
|
|
state: directory
|
|
recurse: yes
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
|
group: "{{ ansible_effective_group_id|int }}"
|
|
|
|
- name: Start redis docker containers
|
|
docker_container:
|
|
name: "redis-{{ redis_role }}"
|
|
image: redis:7
|
|
pull: true
|
|
state: started
|
|
command: /usr/local/etc/redis/redis_server.conf
|
|
container_default_behavior: no_defaults
|
|
hostname: "{{ inventory_hostname }}"
|
|
networks_cli_compatible: yes
|
|
# network_mode: host
|
|
network_mode: default
|
|
networks:
|
|
- name: newsblurnet
|
|
aliases:
|
|
- redis
|
|
ports:
|
|
- "{{ redis_port }}:6379"
|
|
restart_policy: unless-stopped
|
|
user: "{{ ansible_effective_user_id|int }}:{{ ansible_effective_group_id|int }}"
|
|
volumes:
|
|
- "/srv/newsblur/docker/volumes/redis_{{ redis_role }}:/data"
|
|
- /srv/newsblur/docker/redis/redis.conf:/usr/local/etc/redis/redis_server.conf
|
|
- "/srv/newsblur/docker/redis/redis_{{ redis_role }}_replica.conf:/usr/local/etc/redis/redis_replica.conf"
|
|
|
|
- name: Register redis in consul
|
|
become: yes
|
|
template:
|
|
src: consul_service.json
|
|
dest: "/etc/consul.d/redis_{{ redis_role }}.json"
|
|
notify:
|
|
- reload consul
|
|
tags: consul
|
|
|
|
- name: Add sanity checkers cronjob for disk usage
|
|
become: yes
|
|
cron:
|
|
name: disk_usage_sanity_checker
|
|
user: root
|
|
cron_file: /etc/cron.hourly/disk_usage_sanity_checker
|
|
job: >-
|
|
docker pull newsblur/newsblur_python3:latest;
|
|
OUTPUT=$(eval sudo df / | head -n 2 | tail -1);
|
|
docker run --rm -it
|
|
-v /srv/newsblur:/srv/newsblur
|
|
-h `cat /etc/hostname`
|
|
--network=newsblurnet --hostname {{ ansible_hostname }}
|
|
newsblur/newsblur_python3 /srv/newsblur/utils/monitor_disk_usage.py $OUTPUT
|
|
tags:
|
|
- sanity-checker
|
|
|
|
- name: Add sanity checkers cronjob for redis bg_save
|
|
become: yes
|
|
cron:
|
|
name: redis_bg_save_sanity_checker
|
|
user: root
|
|
cron_file: /etc/cron.hourly/redis_bg_save_sanity_checker
|
|
job: >-
|
|
docker pull newsblur/newsblur_python3:latest;
|
|
REDIS_LOG_PATH=$(eval docker inspect --format="{{ '{{' }}.LogPath {{ '}}' }}" redis)
|
|
docker run --rm -it
|
|
-v ${REDIS_LOG_PATH}:${REDIS_LOG_PATH}
|
|
-v /srv/newsblur:/srv/newsblur
|
|
-h `cat /etc/hostname`
|
|
--network=newsblurnet
|
|
newsblur/newsblur_python3 /srv/newsblur/utils/monitor_redis_bgsave.py $REDIS_LOG_PATH
|
|
when: "'redis' in inventory_hostname"
|
|
tags:
|
|
- sanity-checker
|
|
|
|
- name: Add redis backup
|
|
cron:
|
|
name: "{{ ansible_hostname }} backup"
|
|
minute: "0"
|
|
hour: "4"
|
|
job: >
|
|
docker run --rm
|
|
-v /srv/newsblur:/srv/newsblur
|
|
-v /srv/newsblur/docker/volumes/redis_{{ redis_role }}/dump.rdb:/data/dump.rdb
|
|
--network=newsblurnet
|
|
--hostname={{ ansible_hostname }}
|
|
newsblur/newsblur_python3 python /srv/newsblur/utils/backups/backup_redis.py
|