From 844137a86d36ca9a0b81387dcadb6ff6473a3c09 Mon Sep 17 00:00:00 2001 From: josiah Date: Sat, 2 May 2020 17:55:38 -0500 Subject: [PATCH] Prep for docker swarm updates. --- ansible/roles/awfulAll/tasks/main.yml | 89 +++++++++--- .../awfulAll/templates/awful-compose.yml | 137 +++++++++++++++++- .../roles/gitea/templates/gitea-compose.yml | 4 +- .../nextcloud/templates/nextcloud-compose.yml | 4 +- 4 files changed, 204 insertions(+), 30 deletions(-) diff --git a/ansible/roles/awfulAll/tasks/main.yml b/ansible/roles/awfulAll/tasks/main.yml index e1bee4b..69f9dcc 100644 --- a/ansible/roles/awfulAll/tasks/main.yml +++ b/ansible/roles/awfulAll/tasks/main.yml @@ -1,27 +1,66 @@ --- +# deploy a awful-n host from scratch. -# Update the mojo git repo -- name: ensure the app folders exist - file: state=directory path={{ item }} owner=josiah group=josiah mode=0700 - loop: [ '/home/josiah/apps/mojo/', '/home/josiah/apps/arke/', '/home/josiah/apps/znc/', '/home/josiah/apps/awful/' ] - -- name: update the mojo git repo - git: - repo: 'https://git.awful.club/hosted/mojojojo-bot.git' - dest: /home/josiah/apps/mojo/ - version: master - -- name: update the arke git repo - git: - repo: 'https://git.awful.club/hosted/arke.git' - dest: /home/josiah/apps/arke/ - version: master - -- name: update the znc git repo - git: - repo: 'https://git.awful.club/hosted/znc-docker.git' - dest: /home/josiah/apps/znc/ - version: master +# boot strap server +# - name: Install aptitude using apt +# apt: name=aptitude state=latest update_cache=yes force_apt_get=yes + +# - name: Install required system packages for docker install +# apt: name={{ item }} state=latest update_cache=yes +# loop: [ 'apt-transport-https', 'ca-certificates', 'software-properties-common' ] + +# - name: Add Docker GPG apt Key +# apt_key: +# url: https://download.docker.com/linux/debian/gpg +# state: present + +# - name: Add Docker Repository +# apt_repository: +# repo: deb https://download.docker.com/linux/ubuntu bionic stable +# state: present + +# - name: Update apt +# apt: update_cache=yes + +# - name: Install required system packages +# apt: name={{ sys_packages }} state=latest + +# - name: add 'josiah' to docker group +# user: +# name='josiah' +# groups=docker +# append=yes + +# - name: Init a new swarm with default parameters +# docker_swarm: +# state: present + +# - name: ensure the app folders exist +# file: state=directory path={{ item }} owner=josiah group=josiah mode=0700 +# loop: [ '/home/josiah/apps/mojo/', '/home/josiah/apps/arke/', '/home/josiah/apps/znc/', '/home/josiah/apps/awful/' ] + +# - name: allow for pretty json errors +# pip: +# name: jsondiff + +# Update the app git repos +# - name: update the mojo git repo +# git: +# repo: 'https://git.awful.club/hosted/mojojojo-bot.git' +# dest: /home/josiah/apps/mojo/ +# version: master + +# - name: update the arke git repo +# git: +# repo: 'https://git.awful.club/hosted/arke.git' +# dest: /home/josiah/apps/arke/ +# version: master + +# - name: update the znc git repo +# git: +# repo: 'https://git.awful.club/hosted/znc-docker.git' +# dest: /home/josiah/apps/znc/ +# version: master - name: copy over awful-All compose file template: @@ -32,6 +71,8 @@ - {src: 'awful-compose.yml', dest: '/home/josiah/apps/awful/docker-compose.yml'} - name: Deploy awful stack - docker_compose: + docker_stack: state: present - project_src: "/home/josiah/apps/awful/" + name: awfulAll + compose: + - /home/josiah/apps/awful/docker-compose.yml diff --git a/ansible/roles/awfulAll/templates/awful-compose.yml b/ansible/roles/awfulAll/templates/awful-compose.yml index 02850d9..a113e96 100644 --- a/ansible/roles/awfulAll/templates/awful-compose.yml +++ b/ansible/roles/awfulAll/templates/awful-compose.yml @@ -1,12 +1,56 @@ version: '3' +networks: + gitea: + external: false + +volumes: + nextcloud: + db: + traefik_acme: + traefik_logs: + services: + traefik: + image: traefik + networks: + - pubnet + command: --web --docker --docker.swarmmode --docker.watch --logLevel=DEBUG + ports: + - 80:80 + - 443:443 + - 5000:5000 + volumes: + - traefik_acme:/acme/ + - traefik_logs:/var/log/access.log + - /var/run/docker.sock:/var/run/docker.sock + - /home/josiah/apps/traefik/traefik.toml:/traefik.toml + deploy: + mode: global + placement: + constraints: + - node.role == manager + labels: + - "traefik.enable=true" + - "traefik.http.routers.awfulAll-traefik-api.rule=Host(`awful-1.awful.club`)&&(PathPrefix(`/api`)||PathPrefix(`/dashboard`)||PathPrefix(`/debug`))" + - "traefik.http.routers.awfulAll-traefik-api.service=api@internal" + - "traefik.http.routers.awfulAll-traefik-api.entrypoints=http" + + whoami: + image: containous/whoami:latest + networks: + - pubnet + labels: + - "traefik.enable=true" + - "traefik.http.routers.awfulAll-whoami.rule=Host(`awful-1.awful.club`) && PathPrefix(`/whoami`)" + - "traefik.http.routers.awfulAll-whoami.service=awfulAll-whoami" + - "traefik.http.services.awfulAll-whoami.loadbalancer.server.port=80" + mojo-web: build: context: /home/josiah/apps/mojo/mojo-web/ dockerfile: Dockerfile image: mojo-web - environment: SLACK_BOT_TOKEN: {{ slack_bot_token }} volumes: @@ -21,7 +65,12 @@ services: SLACK_BOT_TOKEN: {{ slack_bot_token }} volumes: - /mnt/volume_sfo2_znc/:/shared/ - + labels: + - "traefik.enable=true" + - "traefik.http.services.awfulAll-mojo-rtm.loadbalancer.server.port=443" + - "traefik.http.routers.awfulAll-mojo-rtm.service=awfulAll-mojo-rtm" + - "traefik.http.routers.awfulAll-mojo-rtm.rule=Host(`slack.awful.club`)" + arke: build: context: /home/josiah/apps/arke/ @@ -39,3 +88,87 @@ services: - 5000:5000 volumes: - /mnt/volume_sfo2_znc/:/znc-data + labels: + - "traefik.enable=true" + - "traefik.http.services.awfulAll-mojo-rtm.loadbalancer.server.port=5000" + - "traefik.http.routers.awfulAll-mojo-rtm.service=awfulAll-znc" + - "traefik.http.routers.awfulAll-mojo-rtm.rule=Host(`bouncer.awful.club`)" + + gitea-server: + image: gitea/gitea:latest + environment: + - USER_UID=1000 + - USER_GID=1000 + - DB_TYPE=postgres + - DB_HOST=db:5432 + - DB_NAME={{ GITEA_DB_NAME }} + - DB_USER={{ GITEA_DB_USER }} + - DB_PASSWD={{ GITEA_DB_PASSWD }} + restart: always + networks: + - gitea + volumes: + - /mnt/volume_sfo2_01/gitea:/data + ports: + - "3000:3000" + - "222:22" + depends_on: + - db + labels: + - "traefik.enable=true" + - "traefik.services.awfulAll-gitea.port=222" + - "traefik.http.services.awfulAll-gitea.loadbalancer.server.port=3000" + - "traefik.http.routers.awfulAll-gitea.service=awfulAll-znc" + - "traefik.http.routers.awfulAll-gitea.rule=Host(`git.awful.club`)" + + gitea-db: + image: postgres:9.6 + restart: always + environment: + - POSTGRES_USER={{ GITEA_POSTGRES_USER }} + - POSTGRES_PASSWORD={{ GITEA_POSTGRES_USER }} + - POSTGRES_DB={{ GITEA_POSTGRES_USER }} + networks: + - gitea + volumes: + - /mnt/volume_sfo2_01/psql:/var/lib/postgresql/data + + nextcloud-db: + image: postgres:9.6 + ports: + - 5432:5432 + restart: always + volumes: + - /mnt/shared_document_store/nextcloud/sql:/var/lib/postgresql + environment: + - USER_UID=1000 + - USER_GID=1000 + - POSTGRES_ROOT_PASSWORD={{ NEXTCLOUD_POSTGRES_ROOT_PASSWORD }} + - POSTGRES_PASSWORD={{ NEXTCLOUD_POSTGRES_PASSWORD }} + - POSTGRES_DB={{ NEXTCLOUD_POSTGRES_DATABASE }} + - POSTGRES_USER={{ NEXTCLOUD_POSTGRES_USER }} + - POSTGRES_HOST={{ NEXTCLOUD_POSTGRES_HOST }} + - NEXTCLOUD_ADMIN_USER={{ NEXTCLOUD_ADMIN_USER }} + - NEXTCLOUD_ADMIN_PASSWORD={{ NEXTCLOUD_ADMIN_PASSWORD }} + + nextcloud-app: + image: nextcloud:18 + ports: + - 8080:80 + links: + - nextcloud-db + volumes: + - /mnt/shared_document_store/nextcloud/html/:/var/www/html/ + depends_on: + - nextcloud-db + environment: + - USER_UID=1000 + - USER_GID=1000 + - POSTGRES_ROOT_PASSWORD={{ NEXTCLOUD_POSTGRES_ROOT_PASSWORD }} + - POSTGRES_PASSWORD={{ NEXTCLOUD_POSTGRES_PASSWORD }} + - POSTGRES_DB={{ NEXTCLOUD_POSTGRES_DATABASE }} + - POSTGRES_USER={{ NEXTCLOUD_POSTGRES_USER }} + - POSTGRES_HOST={{ NEXTCLOUD_POSTGRES_HOST }} + - NEXTCLOUD_ADMIN_USER={{ NEXTCLOUD_ADMIN_USER }} + - NEXTCLOUD_ADMIN_PASSWORD={{ NEXTCLOUD_ADMIN_PASSWORD }} + diff --git a/ansible/roles/gitea/templates/gitea-compose.yml b/ansible/roles/gitea/templates/gitea-compose.yml index 8fb1e2c..ca44ab1 100644 --- a/ansible/roles/gitea/templates/gitea-compose.yml +++ b/ansible/roles/gitea/templates/gitea-compose.yml @@ -5,7 +5,7 @@ networks: external: false services: - server: + gitea-server: image: gitea/gitea:latest environment: - USER_UID=1000 @@ -26,7 +26,7 @@ services: depends_on: - db - db: + gitea-db: image: postgres:9.6 restart: always environment: diff --git a/ansible/roles/nextcloud/templates/nextcloud-compose.yml b/ansible/roles/nextcloud/templates/nextcloud-compose.yml index 9e362a5..09118ca 100644 --- a/ansible/roles/nextcloud/templates/nextcloud-compose.yml +++ b/ansible/roles/nextcloud/templates/nextcloud-compose.yml @@ -5,7 +5,7 @@ volumes: db: services: - db: + nextcloud-db: image: postgres:9.6 ports: - 5432:5432 @@ -23,7 +23,7 @@ services: - NEXTCLOUD_ADMIN_USER={{ NEXTCLOUD_ADMIN_USER }} - NEXTCLOUD_ADMIN_PASSWORD={{ NEXTCLOUD_ADMIN_PASSWORD }} - app: + nextcloud-app: image: nextcloud:18 ports: - 8080:80