NewsBlur/ansible/roles/mongo/tasks/main.yml

149 lines
4 KiB
YAML
Raw Normal View History

2021-02-03 10:39:11 -05:00
---
2021-05-10 19:11:24 -04:00
- name: Permissions for mongo
become: yes
file:
state: directory
mode: 0777
path: /var/log/mongodb
2021-07-16 11:51:52 -04:00
- name: Get the volume name
shell: ls /dev/disk/by-id/ | grep -v part
register: volume_name_raw
- set_fact:
volume_name: "{{ volume_name_raw.stdout }}"
- debug:
msg: "{{ volume_name }}"
- name: Create the mount point
become: yes
file:
path: "/mnt/{{ inventory_hostname | regex_replace('db-|-', '') }}"
state: directory
- name: Mount volume read-write
become: yes
mount:
path: "/mnt/{{ inventory_hostname | regex_replace('db-|-', '') }}"
src: "/dev/disk/by-id/{{ volume_name }}"
fstype: xfs
opts: defaults,discard
state: mounted
- name: Copy MongoDB keyfile
2021-07-14 19:59:00 -04:00
become: yes
copy:
content: "{{ mongodb_keyfile }}"
dest: /srv/newsblur/config/mongodb_keyfile.key
2021-07-14 19:59:00 -04:00
owner: root
mode: 0400
2021-07-14 19:59:00 -04:00
tags:
- keyfile
- name: Make docker network for newsblurnet
become: yes
docker_network:
name: newsblurnet
notify: restart docker
- name: Make backup directory
become: yes
file:
path: /opt/mongo/newsblur/backup/
state: directory
2021-07-23 19:01:06 -04:00
mode: 0666
2021-02-03 10:39:11 -05:00
- name: Start db-mongo docker container
become: yes
docker_container:
name: mongo
2021-02-03 10:39:11 -05:00
image: mongo:3.6
state: started
2021-05-10 18:30:54 -04:00
container_default_behavior: no_defaults
hostname: "{{ inventory_hostname }}"
2021-02-03 10:39:11 -05:00
restart_policy: unless-stopped
networks_cli_compatible: yes
network_mode: host
# network_mode: default
# networks:
# - name: newsblurnet
# aliases:
# - mongo
# ports:
# - "27017:27017"
2021-05-10 19:11:24 -04:00
command: --config /etc/mongod.conf
2021-02-03 10:39:11 -05:00
volumes:
2021-05-10 18:30:54 -04:00
- /mnt/{{ inventory_hostname | regex_replace('db-|-', '') }}:/data/db
- /srv/newsblur/ansible/roles/mongo/templates/mongo.conf:/etc/mongod.conf
- /srv/newsblur/config/mongodb_keyfile.key:/srv/newsblur/config/mongodb_keyfile.key
2021-05-10 18:46:02 -04:00
- /var/log/mongodb/:/var/log/mongodb/
- /opt/mongo/newsblur/backup/:/backup/
2021-02-15 19:13:05 -05:00
- name: Register mongo in consul
tags: consul
2021-02-15 19:13:05 -05:00
become: yes
template:
src: consul_service.json
dest: /etc/consul.d/mongo.json
2021-05-10 18:08:04 -04:00
when: (inventory_hostname | regex_replace('[0-9]+', '')) in ['db-mongo', 'db-mongo-secondary'] or inventory_hostname.startswith('db2')
notify:
- reload consul
- name: Register mongo-analytics in consul
tags: consul
become: yes
template:
src: consul_service.analytics.json
dest: /etc/consul.d/mongo.json
2021-03-10 16:54:18 -05:00
when: (inventory_hostname | regex_replace('[0-9]+', '')) == 'db-mongo-analytics' or inventory_hostname.startswith('db3')
2021-02-15 19:13:05 -05:00
notify:
- reload consul
2021-06-07 15:44:59 -04:00
2021-06-29 17:51:14 -04:00
- name: Setup logrotate for mongo
become: yes
copy: src=logrotate.conf dest=/etc/logrotate.d/mongodb mode=0755
tags:
- logrotate
2021-06-29 17:51:14 -04:00
- name: Add sanity checkers cronjob for disk usage
2021-06-07 15:44:59 -04:00
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;
docker run --rm -it
OUTPUT=$(eval sudo df / | head -n 2 | tail -1);
-v /srv/newsblur:/srv/newsblur
--network=newsblurnet
--hostname {{ ansible_hostname }}
newsblur/newsblur_python3 /srv/newsblur/utils/monitor_disk_usage.py $OUTPUT
tags:
- sanity-checker
- name: Add mongo backup
cron:
name: mongo backup
minute: "0"
hour: "4"
job: /srv/newsblur/docker/mongo/backup_mongo.sh
when: '"db-mongo-secondary1" in inventory_hostname'
- name: Add mongo starred_stories+stories backup
cron:
name: mongo backup
minute: "0"
hour: "5"
job: /srv/newsblur/docker/mongo/backup_mongo_stories.sh
when: '"db-mongo-secondary1" in inventory_hostname'
# Renaming a db-mongo3 to db-mongo2:
# - Change hostname to db-mongo2 on Digital Ocean (doctl)
# - Change hostname to db-mongo2 in /etc/hostname
# - Symlink /mnt/mongo2 to /mnt/mongo3
# - tf state mv "digitalocean_droplet.db-mongo-primary[2]" "digitalocean_droplet.db-mongo-primary[1]"
# - tf state mv "digitalocean_volume.mongo_volume[2]" "digitalocean_volume.mongo_volume[1]"