From 5c29a98a47b346f3c6c3703777ed752d5f5028cb Mon Sep 17 00:00:00 2001 From: sonny Date: Mon, 21 Oct 2024 21:44:11 +0200 Subject: [PATCH] Initial commit --- .gitignore | 16 ++++++++ playbook.yml | 53 +++++++++++++++++++++++++++ tasks.yml | 73 +++++++++++++++++++++++++++++++++++++ templates/docker-compose.j2 | 42 +++++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 .gitignore create mode 100644 playbook.yml create mode 100644 tasks.yml create mode 100644 templates/docker-compose.j2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad2ea9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +*.retry +*.swp + +.venv +.env +env +venv + +node_modules/ + +.vault +.vaults/ +vault +vaults/ + +roles/ diff --git a/playbook.yml b/playbook.yml new file mode 100644 index 0000000..b917256 --- /dev/null +++ b/playbook.yml @@ -0,0 +1,53 @@ +- hosts: localhost + tasks: + - name: create required directories + become: true + file: + path: '{{ item }}' + state: directory + mode: '0755' + owner: sonny + group: sonny + loop: + - '{{ app_dir }}' + - '{{ data_dir }}' + - '{{ postgres_dir }}' + + - name: copy docker-compose file + template: + src: 'templates/docker-compose.j2' + dest: '{{ app_dir }}/docker-compose.yml' + + - name: stop forgejo + command: docker compose --file docker-compose.yml down + args: + chdir: '{{ app_dir }}' + + - name: pull {{ image_tag }} + command: docker compose --file docker-compose.yml pull + args: + chdir: '{{ app_dir }}' + + #- name: start forgejo + # command: docker compose --file docker-compose.yml up --detach + # args: + # chdir: '{{ app_dir }}' + + vars: + app_dir: '/srv/docker/forgejo' + data_dir: '/home/sonny/vm/forgejo/data' + postgres_dir: '/home/sonny/vm/forgejo/postgres' + + image_tag: 'codeberg.org/forgejo/forgejo:9' + + postgres_user: forgejo + postgres_name: forgejo + postgres_password: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 38616139663030376462383464343866313865653837386335646331313265373530653534663866 + 3839613831616630363338366635303836353335353433630a376665366632663435633837376265 + 62636164343965663866663530366561326136383937663439383033653935303238636463656364 + 3439656234643262330a356264336637386465643234323832393233306539336162386239343538 + 61363165363338653932336233346536646134313762396463666438663734643765303230356535 + 63653963383433616563393339613665323335336537323965303630626566363762653830323933 + 313334313532346261326436326563636235 diff --git a/tasks.yml b/tasks.yml new file mode 100644 index 0000000..518cb12 --- /dev/null +++ b/tasks.yml @@ -0,0 +1,73 @@ +- name: create sites directory + become: true + file: + path: '/srv/docker' + state: directory + owner: root + group: root + mode: 0755 + +- name: create newsreader app directory + become: true + file: + path: '{{ app_dir }}' + state: directory + mode: '0755' + owner: 'sonny' + group: 'sonny' + +- name: clone project + git: + repo: '{{ app_repository }}' + dest: '{{ app_dir }}' + version: '{{ app_ref }}' + update: true + +- name: copy templates + template: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + loop: + - { src: 'templates/env.j2', dest: '{{ app_dir }}/.production.env' } + - { + src: 'templates/docker-compose.j2', + dest: '{{ app_dir }}/docker-compose.resources.yml' + } + +- name: stop newsreader + command: > + docker compose + --env-file .production.env + --file docker-compose.yml + --file docker-compose.production.yml + --file docker-compose.resources.yml + down + args: + chdir: '{{ app_dir }}' + +# to allow next startup to generate a new volume +- name: remove static volume + command: docker volume rm newsreader_static-files + +- name: build newsreader + command: > + docker compose + --env-file .production.env + --file docker-compose.yml + --file docker-compose.production.yml + --file docker-compose.resources.yml + build + args: + chdir: '{{ app_dir }}' + +- name: start newsreader + command: > + docker compose + --env-file .production.env + --file docker-compose.yml + --file docker-compose.production.yml + --file docker-compose.resources.yml + up + --detach + args: + chdir: '{{ app_dir }}' diff --git a/templates/docker-compose.j2 b/templates/docker-compose.j2 new file mode 100644 index 0000000..4e011cb --- /dev/null +++ b/templates/docker-compose.j2 @@ -0,0 +1,42 @@ +# {{ ansible_managed }} + +networks: + forgejo: + external: false + +services: + server: + image: '{{ image_tag }}' + container_name: forgejo + environment: + - USER_UID=1000 + - USER_GID=1000 + - FORGEJO__database__DB_TYPE=postgres + - FORGEJO__database__HOST=db:5432 + - FORGEJO__database__NAME={{ postgres_name }} + - FORGEJO__database__USER={{ postgres_user }} + - FORGEJO__database__PASSWD={{ postgres_password }} + restart: always + networks: + - forgejo + volumes: + - {{ data_dir }}:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - '3000:3000' + - '22:22' + depends_on: + - db + + db: + image: postgres:14 + restart: always + environment: + - POSTGRES_USER={{ postgres_user }} + - POSTGRES_PASSWORD={{ postgres_password }} + - POSTGRES_DB={{ postgres_name }} + networks: + - forgejo + volumes: + - {{ postgres_dir }}:/var/lib/postgresql/data