initial deployment setup (staging env)

This commit is contained in:
Leonard Krause
2018-04-27 01:41:53 +02:00
parent 989732101e
commit 1a00c3774b
22 changed files with 285 additions and 0 deletions

11
.gitmodules vendored Normal file
View File

@@ -0,0 +1,11 @@
[submodule "ansible-role-common"]
path = ansible/roles/common
url = git@github.com:leoek/ansible-role-common.git
[submodule "ansible-role-docker"]
path = ansible/roles/docker
url = git@github.com:leoek/ansible-role-docker.git
[submodule "ansible-role-docker-nginx-proxy"]
path = ansible/roles/docker-nginx-proxy
url = git@github.com:leoek/ansible-role-docker-nginx-proxy.git

View File

@@ -0,0 +1,13 @@
---
#global vars file
ansible_user: ansible
server_country_key: DE
server_province: Sachsen
server_city: Leipzig
server_org: LeoEK
server_mail: webmaster@herr-ek.de
server_ou: Leo
server_name: ansibleDefaultServerName
server_domain: leoek.eu

View File

@@ -0,0 +1,10 @@
---
#vars file for net1
server_name: net1
server_domain: net1.leoek.eu
docker:
virtual_network_nginx: nginx-proxy
swt:
domain_client: swt.leoek.eu
domain_server: api.swt.leoek.eu

View File

@@ -0,0 +1,4 @@
net1 ansible_host=localhost
[swt]
net1

13
ansible/local-deployment.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
ip=$(docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' nginx-proxy | awk -F '/' 'NR==1{print $1}')
echo "net1 ansible_host=$ip" > hosts-swt-deployment
echo "[swt]" >> hosts-swt-deployment
echo "net1" >> hosts-swt-deployment
cat hosts-swt-deployment
docker pull leoek/ansible:2.4-did
docker run --rm -v $(pwd):/ansible/playbooks \
-v /srv/docker/swt:/srv/docker/swt \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
leoek/ansible:next playbook-swt-deployment.yml -i hosts-swt-deployment --connection=local

View File

@@ -0,0 +1,23 @@
---
#general playbook
#global handlers file: handlers/main.yml
#check connection to all hosts
- hosts: all
gather_facts: no
become: true
tasks:
- name: ping all hosts
action: ping
# talk to all hosts just so we can learn about them
- hosts: all
tasks:
- group_by: key={{ ansible_distribution | lower }}
- hosts: swt
roles:
- docker-swt-deployment-local
handlers:
- include: handlers/main.yml

1
ansible/roles/common Submodule

Submodule ansible/roles/common added at a2033253d2

1
ansible/roles/docker Submodule

Submodule ansible/roles/docker added at 0e083be07d

View File

@@ -0,0 +1,4 @@
---
# defaults file for role
swt_path: /srv/docker/swt

View File

@@ -0,0 +1,28 @@
---
# handlers file for role
- name: pull_new_images
become: true
docker_service:
project_src: "{{ swt_path }}/"
project_name: "swt-server"
pull: yes
listen: rebuild_containers
- name: delete_containers
become: true
docker_service:
project_src: "{{ swt_path }}/"
project_name: "swt-server"
state: absent
pull: yes
listen: rebuild_containers
- name: start_containers
become: true
docker_service:
project_src: "{{ swt_path }}/"
project_name: "swt-server"
state: present
pull: yes
listen: rebuild_containers

View File

@@ -0,0 +1,2 @@
---
dependencies: []

View File

@@ -0,0 +1,42 @@
---
#tasks file for role
- name: create folder swt inside docker home
become: true
file:
path: "{{ swt_path }}"
state: directory
mode: 0755
notify: rebuild_containers
- name: Copy .env template
become: true
template:
src: .env
dest: "{{ swt_path }}/"
mode: 0644
notify: rebuild_containers
- name: Copy db.env template
become: true
template:
src: db.env
dest: "{{ swt_path }}/"
mode: 0644
notify: rebuild_containers
- name: Copy docker-compose.yml template
become: true
template:
src: docker-compose.yml
dest: "{{ swt_path }}/"
mode: 0644
notify: rebuild_containers
- name: pull new images
become: true
docker_service:
project_src: "{{ swt_path }}/"
project_name: "swt-server"
state: present
pull: yes
notify: rebuild_containers

View File

@@ -0,0 +1,3 @@
NETWORK={{ docker.virtual_network_nginx }}
DOMAIN_CLIENT={{ swt.domain_client }}
DOMAIN_SERVER={{ swt.domain_server }}

View File

@@ -0,0 +1,4 @@
MYSQL_ROOT_PASSWORD=e6Z4r7XbyaQeboQNgiyuWTyLFEzi4Y
MYSQL_DATABASE=mvdb
MYSQL_USER=mvuser
MYSQL_PASSWORD=mariadb

View File

@@ -0,0 +1,55 @@
version: '3'
services:
webclient:
container_name: swt_webclient
image: leoek/swt-webclient:next
restart: always
environment:
- VIRTUAL_HOST=${DOMAIN_CLIENT}
- VIRTUAL_NETWORK=${NETWORK}
- VIRTUAL_PORT=80
- LETSENCRYPT_HOST=${DOMAIN_CLIENT}
- LETSENCRYPT_EMAIL={{ server_mail }}
networks:
- proxy-tier
server:
container_name: swt_server
image: leoek/swt-server:next
restart: always
environment:
- VIRTUAL_HOST=${DOMAIN_SERVER}
- VIRTUAL_NETWORK=${NETWORK}
- VIRTUAL_PORT=8080
- LETSENCRYPT_HOST=${DOMAIN_SERVER}
- LETSENCRYPT_EMAIL={{ server_mail }}
- SPRING_PROFILES_ACTIVE=prod
depends_on:
- db
links:
- db
networks:
- proxy-tier
- backend
db:
container_name: swt_server_db
image: mariadb:10.2.14
expose:
- 3306
restart: always
env_file:
- db.env
volumes:
- swt_server_db:/var/lib/mysql
networks:
- backend
volumes:
swt_server_db:
networks:
proxy-tier:
external:
name: ${NETWORK}
backend:

View File

@@ -0,0 +1 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- common

View File

@@ -0,0 +1,2 @@
---
# vars file for role

3
docker/.env Normal file
View File

@@ -0,0 +1,3 @@
NETWORK=nginx-proxy
DOMAIN_CLIENT=localhost
DOMAIN_SERVER=api.localhost

4
docker/db.env Normal file
View File

@@ -0,0 +1,4 @@
MYSQL_ROOT_PASSWORD=e6Z4r7XbyaQeboQNgiyuWTyLFEzi4Y
MYSQL_DATABASE=mvdb
MYSQL_USER=mvuser
MYSQL_PASSWORD=mariadb

55
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,55 @@
version: '3'
services:
webclient:
container_name: swt_webclient
image: leoek/swt-webclient:next
restart: always
environment:
- VIRTUAL_HOST=${DOMAIN_CLIENT}
- VIRTUAL_NETWORK=${NETWORK}
- VIRTUAL_PORT=80
- LETSENCRYPT_HOST=${DOMAIN_CLIENT}
- LETSENCRYPT_EMAIL={{ server_mail }}
networks:
- proxy-tier
server:
container_name: swt_server
image: leoek/swt-server:next
restart: always
environment:
- VIRTUAL_HOST=${DOMAIN_SERVER}
- VIRTUAL_NETWORK=${NETWORK}
- VIRTUAL_PORT=8080
- LETSENCRYPT_HOST=${DOMAIN_SERVER}
- LETSENCRYPT_EMAIL={{ server_mail }}
- SPRING_PROFILES_ACTIVE=prod
depends_on:
- db
links:
- db
networks:
- proxy-tier
- backend
db:
container_name: swt_server_db
image: mariadb:10.2.14
expose:
- 3306
restart: always
env_file:
- db.env
volumes:
- swt_server_db:/var/lib/mysql
networks:
- backend
volumes:
swt_server_db:
networks:
proxy-tier:
external:
name: ${NETWORK}
backend: