diff --git a/db.postgres/defaults/main.yml b/db.postgres/defaults/main.yml new file mode 100644 index 0000000..3354fcb --- /dev/null +++ b/db.postgres/defaults/main.yml @@ -0,0 +1,31 @@ +db__postgres_image_name: "dhub.touchin.ru/common/postgresql-walg" +db__postgres_image_tag: "10_0.2.9" +db__postgres_data_directory: "/var/lib/postgresql/data/pgdata" +db__postgres_image: "{{ db__postgres_image_name }}:{{ db__postgres_image_tag }}" + +db__postgres_command_default: + - "./entrypoint.sh" + - "postgres" + +db__postgres_port: "5432" +# db__postgres_port: "127.0.0.1:5432:5432" + +# db__postgres_database_name: my-db +# db__postgres_username: postgres +# db__postgres_password: secret + +# db__postgres_server_name: postgres +# db__postgres_container_name: postgres + +# db__postgres_backup_enabled: false +# db__postgres_postgres_mode: "backup" +# db__postgres_s3_region: "eu-central-1" +# db__postgres_s3_access_key: "KEY" +# db__postgres_s3_secret_key: "SECRET" +# db__postgres_s3_prefix: "s3://bucket-name/path/to/subfolder" +# db__postgres_delete_retain: 15 +# db__postgres_base_backup_in: "30 2 * * *" + +# db__postgres_recovery_enabled: false +# db__postgres_archive_timeout: 600 +# db__postgres_checkpoint_timeout: 600 diff --git a/db.postgres/tasks/main.yml b/db.postgres/tasks/main.yml new file mode 100644 index 0000000..9d108f9 --- /dev/null +++ b/db.postgres/tasks/main.yml @@ -0,0 +1,39 @@ +--- + +- name: DB.POSTGRES | Prepare deployment + include_role: + name: docker.deployment.prepare + public: "yes" + vars: + deployment_name: "{{ db__postgres_deployment_name }}" + tags: + - postgres + +- name: DB.POSTGRES | Merge commandline agruments + set_fact: + db__postgres_command: "{{ db__postgres_command_default + db__postgres_command_custom }}" + tags: + - postgres + +- name: DB.POSTGRES | Copy templates + template: + src: "templates/{{ item }}.j2" + dest: "{{ docker_deployment__deploy_path }}/{{ item }}" + with_items: + - docker-compose.yml + - backup.env + become_user: "{{ docker_deployment__deploy_user_name }}" + become: yes + tags: + - files + - postgres + +- name: DB.POSTGRES | Run deployment + docker_service: + project_src: "{{ docker_deployment__deploy_path }}" + restarted: "yes" + become: yes + become_user: "{{ docker_deployment__deploy_user_name }}" + tags: + - run + - postgres diff --git a/db.postgres/templates/backup.env.j2 b/db.postgres/templates/backup.env.j2 new file mode 100644 index 0000000..60bade6 --- /dev/null +++ b/db.postgres/templates/backup.env.j2 @@ -0,0 +1,9 @@ +{% if db__postgres_backup_enabled == true %} +POSTGRES_MODE={{ db__postgres_postgres_mode }} +AWS_REGION={{ db__postgres_s3_region }} +AWS_ACCESS_KEY_ID={{ db__postgres_s3_access_key }} +AWS_SECRET_ACCESS_KEY={{ db__postgres_s3_secret_key }} +WALE_S3_PREFIX={{ db__postgres_s3_prefix }} +WALG_DELETE_RETAIN={{ db__postgres_delete_retain }} +WALG_BASE_BACKUP_IN={{ db__postgres_base_backup_in }} +{% endif %} diff --git a/db.postgres/templates/docker-compose.yml.j2 b/db.postgres/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..3a77fb2 --- /dev/null +++ b/db.postgres/templates/docker-compose.yml.j2 @@ -0,0 +1,27 @@ +version: "3.7" + +services: + {{ db__postgres_server_name }}: + container_name: "{{ db__postgres_container_name }}" + image: "{{ db__postgres_image }}" + restart: unless-stopped + volumes: + - "{{ docker_deployment__volume_path }}:/var/lib/postgresql/data" + command: {{ db__postgres_command_default }} + env_file: + - backup.env + environment: + - PGDATA={{ db__postgres_data_directory }} + - POSTGRES_DB={{ db__postgres_database_name }} + - POSTGRES_USER={{ db__postgres_username }} + - POSTGRES_PASSWORD={{ db__postgres_password }} + labels: + "traefik.enable": "false" + networks: + - "{{ docker__traefik_network }}" + ports: + - "{{ db__postgres_port }}" + +networks: + {{ docker__traefik_network }}: + external: true diff --git a/repository.nexus/tasks/main.yml b/repository.nexus/tasks/main.yml index 6cd1428..be89609 100644 --- a/repository.nexus/tasks/main.yml +++ b/repository.nexus/tasks/main.yml @@ -11,7 +11,7 @@ - name: DOCKER.NEXUS | Copy templates template: - src: templates/{{ item }}.j2 + src: "templates/{{ item }}.j2" dest: "{{ docker_deployment__deploy_path }}/{{ item }}" with_items: - docker-compose.yml