diff --git a/ansible/roles/deploy_container_chartdb/defaults/main.yml b/ansible/roles/deploy_container_chartdb/defaults/main.yml new file mode 100644 index 0000000..f98084d --- /dev/null +++ b/ansible/roles/deploy_container_chartdb/defaults/main.yml @@ -0,0 +1,5 @@ +########### +# ChartDB # +########### +container_chartdb_version: latest +container_chartdb_domain: chartdb.example.com \ No newline at end of file diff --git a/ansible/roles/deploy_container_chartdb/files/.gitkeep b/ansible/roles/deploy_container_chartdb/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/deploy_container_chartdb/handlers/main.yml b/ansible/roles/deploy_container_chartdb/handlers/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/deploy_container_chartdb/meta/main.yml b/ansible/roles/deploy_container_chartdb/meta/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/deploy_container_chartdb/tasks/main.yml b/ansible/roles/deploy_container_chartdb/tasks/main.yml new file mode 100644 index 0000000..d4b4c2e --- /dev/null +++ b/ansible/roles/deploy_container_chartdb/tasks/main.yml @@ -0,0 +1,27 @@ +--- +- name: Ensure data directories exist + ansible.builtin.file: + path: "{{ container_base_dir }}/" + state: directory + mode: '0755' + +- name: Deploy Docker Compose and .env files + ansible.builtin.template: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + mode: '0775' + loop: + - {src: '.env.j2', dest: '{{ container_base_dir }}/.env'} + - {src: 'docker-compose.yml.j2', dest: '{{ container_base_dir }}/docker-compose.yml'} + +- name: Stop Container + community.docker.docker_compose_v2: + project_src: "{{ container_base_dir }}" + state: absent + +- name: Start Container + community.docker.docker_compose_v2: + project_src: "{{ container_base_dir }}" + state: present + pull: always + recreate: always diff --git a/ansible/roles/deploy_container_chartdb/templates/.env.j2 b/ansible/roles/deploy_container_chartdb/templates/.env.j2 new file mode 100644 index 0000000..3819d39 --- /dev/null +++ b/ansible/roles/deploy_container_chartdb/templates/.env.j2 @@ -0,0 +1,2 @@ +CHARTDB_VERSION={{ container_chartdb_version }} +CHARTDB_DOMAIN={{ container_chartdb_domain }} \ No newline at end of file diff --git a/ansible/roles/deploy_container_chartdb/templates/docker-compose.yml.j2 b/ansible/roles/deploy_container_chartdb/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..76407d2 --- /dev/null +++ b/ansible/roles/deploy_container_chartdb/templates/docker-compose.yml.j2 @@ -0,0 +1,24 @@ +--- +services: + chartdb: + image: ghcr.io/chartdb/chartdb:${CHARTDB_VERSION:-latest} + container_name: chartdb + restart: unless-stopped + networks: + - traefik + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.chartdb.entrypoints=http" + - "traefik.http.routers.chartdb.rule=Host(`${CHARTDB_DOMAIN}`)" + - "traefik.http.middlewares.chartdb-https-redirect.redirectscheme.scheme=https" + - "traefik.http.routers.chartdb.middlewares=chartdb-https-redirect" + - "traefik.http.routers.chartdb-secure.entrypoints=https" + - "traefik.http.routers.chartdb-secure.rule=Host(`${CHARTDB_DOMAIN}`)" + - "traefik.http.routers.chartdb-secure.tls=true" + - "traefik.http.routers.chartdb-secure.service=chartdb" + - "traefik.http.services.chartdb.loadbalancer.server.port=80" + +networks: + traefik: + external: true \ No newline at end of file diff --git a/ansible/roles/deploy_container_chartdb/vars/main.yml b/ansible/roles/deploy_container_chartdb/vars/main.yml new file mode 100644 index 0000000..b33f179 --- /dev/null +++ b/ansible/roles/deploy_container_chartdb/vars/main.yml @@ -0,0 +1 @@ +container_base_dir: /opt/docker/chartdb \ No newline at end of file