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

112 lines
3.1 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
- name: Make docker network for newsblurnet
become: yes
docker_network:
name: newsblurnet
notify: restart docker
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
2021-02-03 10:39:11 -05:00
restart_policy: unless-stopped
networks_cli_compatible: yes
network_mode: default
networks:
- name: newsblurnet
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
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
- 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
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:
collections=(
classifier_tag
classifier_author
classifier_feed
classifier_title
userstories
shared_stories
category
category_site
sent_emails
social_profile
social_subscription
social_services
statistics
user_search
feedback
)
for collection in collections; do
echo Dumping $collection
now=$(date '+%Y-%m-%d-%H-%M')
docker exec -it mongo mongodump --db newsblur --collection $collection -o /backup/backup_mongo_${now}
echo Compressing /opt/mongo/newsblur/backup/backup_mongo_${now}.tgz
tar -zcf /opt/mongo/newsblur/backup/backup_mongo_${now}.tgz /opt/mongo/newsblur/backup/backup_mongo_${now})
done;
echo Uploading backups to S3
docker run --rm
-v /srv/newsblur:/srv/newsblur
-v /opt/mongo/newsblur/backup/:/opt/mongo/newsblur/backup/
--network=newsblurnet
/srv/newsblur/utils/backups/backup_mongo.py