ansible_drone/tasks/drone-database.yml

108 lines
3.1 KiB
YAML

---
- name: Creates postgres backup directory
file:
path: "{{ drone_postgres_backup_dir }}/backup"
state: directory
owner: root
group: root
mode: 0755
register: drone_postgres_backup_dir_state
when: drone_database_driver == "postgres"
tags:
- postgres
- database
- name: Creates postgres recovery directory
file:
path: "{{ drone_postgres_backup_dir }}/restore"
state: directory
owner: root
group: root
mode: 0755
when: drone_database_driver == "postgres"
tags:
- postgres
- database
- name: start postgres for drone ci
docker_container:
name: postgres
image: postgres:11
state: started
restart_policy: always
ports:
- "5432:5432"
volumes:
- "postgres_data:/var/lib/postgresql/data"
- "{{ drone_postgres_backup_dir }}/backup:/var/lib/pgbackup"
- "{{ drone_postgres_backup_dir }}/restore:/docker-entrypoint-initdb.d:ro"
env:
POSTGRES_PASSWORD: "{{ drone_postgres_password }}"
POSTGRES_USER: "{{ drone_postgres_user }}"
POSTGRES_DB: "{{ drone_postgres_db }}"
when: drone_postgres_backup_dir_state is defined and drone_postgres_backup_dir_state.changed or
drone_database_driver == "postgres"
tags:
- postgres
- database
- skip_ansible_lint
- name: create backup service for drone postgres database
template:
src: "templates/{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
mode: "{{ item.mode }}"
vars:
backup_frequency: "{{ drone_postgres_backup_frequency|default('daily') }}"
backup_path: "{{ drone_postgres_backup_dir }}"
with_items:
- {src: postgres_backup.service.j2, dest: /etc/systemd/system/postgres_backup.service, mode: "0644"}
- {src: postgres_backup.timer.j2, dest: /etc/systemd/system/postgres_backup.timer, mode: "0644"}
- {src: pg_backup.sh.j2, dest: /usr/local/bin/pg_backup.sh, mode: "0755"}
notify: reload postgres_backup service
when: drone_postgres_backup_dir_state is defined and drone_postgres_backup_dir_state.changed or
drone_database_driver == "postgres"
tags:
- postgres
- database
- name: ensure backup service for drone postgres database is enabled
systemd:
name: postgres_backup.timer
enabled: yes
- name: Creates mysql directory
file:
path: "{{ drone_mysql_data_dir }}"
state: directory
mode: 0755
register: drone_mysql_data_dir
when: drone_database_driver == "mysql"
tags:
- mysql
- database
- name: start mysql for drone ci
docker_container:
name: mysql
image: mysql:5.7
state: started
restart_policy: always
ports:
- "3306:3306"
volumes:
- "{{ drone_mysql_data_dir }}:/var/lib/mysqlql/data"
env:
MYSQL_PASSWORD: "{{ drone_mysql_password }}"
MYSQL_USER: "{{ drone_mysql_user }}"
MYSQL_DATABASE: "{{ drone_mysql_db }}"
MYSQL_ROOT_PASSWORD: "{{ drone_mysql_password }}"
when: drone_mysql_data_dir is defined and drone_mysql_data_dir.changed or
drone_database_driver == "mysql"
tags:
- mysql
- database
- skip_ansible_lint