Prep for docker swarm updates.

master
josiah 4 years ago
parent 71ba8267fe
commit 844137a86d

@ -1,27 +1,66 @@
--- ---
# deploy a awful-n host from scratch.
# Update the mojo git repo # boot strap server
- name: ensure the app folders exist # - name: Install aptitude using apt
file: state=directory path={{ item }} owner=josiah group=josiah mode=0700 # apt: name=aptitude state=latest update_cache=yes force_apt_get=yes
loop: [ '/home/josiah/apps/mojo/', '/home/josiah/apps/arke/', '/home/josiah/apps/znc/', '/home/josiah/apps/awful/' ]
# - name: Install required system packages for docker install
- name: update the mojo git repo # apt: name={{ item }} state=latest update_cache=yes
git: # loop: [ 'apt-transport-https', 'ca-certificates', 'software-properties-common' ]
repo: 'https://git.awful.club/hosted/mojojojo-bot.git'
dest: /home/josiah/apps/mojo/ # - name: Add Docker GPG apt Key
version: master # apt_key:
# url: https://download.docker.com/linux/debian/gpg
- name: update the arke git repo # state: present
git:
repo: 'https://git.awful.club/hosted/arke.git' # - name: Add Docker Repository
dest: /home/josiah/apps/arke/ # apt_repository:
version: master # repo: deb https://download.docker.com/linux/ubuntu bionic stable
# state: present
- name: update the znc git repo
git: # - name: Update apt
repo: 'https://git.awful.club/hosted/znc-docker.git' # apt: update_cache=yes
dest: /home/josiah/apps/znc/
version: master # - 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 - name: copy over awful-All compose file
template: template:
@ -32,6 +71,8 @@
- {src: 'awful-compose.yml', dest: '/home/josiah/apps/awful/docker-compose.yml'} - {src: 'awful-compose.yml', dest: '/home/josiah/apps/awful/docker-compose.yml'}
- name: Deploy awful stack - name: Deploy awful stack
docker_compose: docker_stack:
state: present state: present
project_src: "/home/josiah/apps/awful/" name: awfulAll
compose:
- /home/josiah/apps/awful/docker-compose.yml

@ -1,12 +1,56 @@
version: '3' version: '3'
networks:
gitea:
external: false
volumes:
nextcloud:
db:
traefik_acme:
traefik_logs:
services: 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: mojo-web:
build: build:
context: /home/josiah/apps/mojo/mojo-web/ context: /home/josiah/apps/mojo/mojo-web/
dockerfile: Dockerfile dockerfile: Dockerfile
image: mojo-web image: mojo-web
environment: environment:
SLACK_BOT_TOKEN: {{ slack_bot_token }} SLACK_BOT_TOKEN: {{ slack_bot_token }}
volumes: volumes:
@ -21,7 +65,12 @@ services:
SLACK_BOT_TOKEN: {{ slack_bot_token }} SLACK_BOT_TOKEN: {{ slack_bot_token }}
volumes: volumes:
- /mnt/volume_sfo2_znc/:/shared/ - /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: arke:
build: build:
context: /home/josiah/apps/arke/ context: /home/josiah/apps/arke/
@ -39,3 +88,87 @@ services:
- 5000:5000 - 5000:5000
volumes: volumes:
- /mnt/volume_sfo2_znc/:/znc-data - /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 }}

@ -5,7 +5,7 @@ networks:
external: false external: false
services: services:
server: gitea-server:
image: gitea/gitea:latest image: gitea/gitea:latest
environment: environment:
- USER_UID=1000 - USER_UID=1000
@ -26,7 +26,7 @@ services:
depends_on: depends_on:
- db - db
db: gitea-db:
image: postgres:9.6 image: postgres:9.6
restart: always restart: always
environment: environment:

@ -5,7 +5,7 @@ volumes:
db: db:
services: services:
db: nextcloud-db:
image: postgres:9.6 image: postgres:9.6
ports: ports:
- 5432:5432 - 5432:5432
@ -23,7 +23,7 @@ services:
- NEXTCLOUD_ADMIN_USER={{ NEXTCLOUD_ADMIN_USER }} - NEXTCLOUD_ADMIN_USER={{ NEXTCLOUD_ADMIN_USER }}
- NEXTCLOUD_ADMIN_PASSWORD={{ NEXTCLOUD_ADMIN_PASSWORD }} - NEXTCLOUD_ADMIN_PASSWORD={{ NEXTCLOUD_ADMIN_PASSWORD }}
app: nextcloud-app:
image: nextcloud:18 image: nextcloud:18
ports: ports:
- 8080:80 - 8080:80

Loading…
Cancel
Save