initial deployment setup (staging env)
This commit is contained in:
11
.gitmodules
vendored
Normal file
11
.gitmodules
vendored
Normal 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
|
||||||
13
ansible/group_vars/all.yml
Normal file
13
ansible/group_vars/all.yml
Normal 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
|
||||||
10
ansible/host_vars/net1.yml
Normal file
10
ansible/host_vars/net1.yml
Normal 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
|
||||||
4
ansible/hosts-swt-deployment
Normal file
4
ansible/hosts-swt-deployment
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
net1 ansible_host=localhost
|
||||||
|
|
||||||
|
[swt]
|
||||||
|
net1
|
||||||
13
ansible/local-deployment.sh
Executable file
13
ansible/local-deployment.sh
Executable 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
|
||||||
23
ansible/playbook-swt-deployment.yml
Normal file
23
ansible/playbook-swt-deployment.yml
Normal 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
1
ansible/roles/common
Submodule
Submodule ansible/roles/common added at a2033253d2
1
ansible/roles/docker
Submodule
1
ansible/roles/docker
Submodule
Submodule ansible/roles/docker added at 0e083be07d
1
ansible/roles/docker-nginx-proxy
Submodule
1
ansible/roles/docker-nginx-proxy
Submodule
Submodule ansible/roles/docker-nginx-proxy added at 008fd00334
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
# defaults file for role
|
||||||
|
|
||||||
|
swt_path: /srv/docker/swt
|
||||||
28
ansible/roles/docker-swt-deployment-local/handlers/main.yml
Normal file
28
ansible/roles/docker-swt-deployment-local/handlers/main.yml
Normal 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
|
||||||
2
ansible/roles/docker-swt-deployment-local/meta/main.yml
Normal file
2
ansible/roles/docker-swt-deployment-local/meta/main.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
dependencies: []
|
||||||
42
ansible/roles/docker-swt-deployment-local/tasks/main.yml
Normal file
42
ansible/roles/docker-swt-deployment-local/tasks/main.yml
Normal 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
|
||||||
3
ansible/roles/docker-swt-deployment-local/templates/.env
Normal file
3
ansible/roles/docker-swt-deployment-local/templates/.env
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
NETWORK={{ docker.virtual_network_nginx }}
|
||||||
|
DOMAIN_CLIENT={{ swt.domain_client }}
|
||||||
|
DOMAIN_SERVER={{ swt.domain_server }}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
MYSQL_ROOT_PASSWORD=e6Z4r7XbyaQeboQNgiyuWTyLFEzi4Y
|
||||||
|
MYSQL_DATABASE=mvdb
|
||||||
|
MYSQL_USER=mvuser
|
||||||
|
MYSQL_PASSWORD=mariadb
|
||||||
@@ -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:
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
localhost
|
||||||
5
ansible/roles/docker-swt-deployment-local/tests/test.yml
Normal file
5
ansible/roles/docker-swt-deployment-local/tests/test.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
- hosts: localhost
|
||||||
|
remote_user: root
|
||||||
|
roles:
|
||||||
|
- common
|
||||||
2
ansible/roles/docker-swt-deployment-local/vars/main.yml
Normal file
2
ansible/roles/docker-swt-deployment-local/vars/main.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
# vars file for role
|
||||||
3
docker/.env
Normal file
3
docker/.env
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
NETWORK=nginx-proxy
|
||||||
|
DOMAIN_CLIENT=localhost
|
||||||
|
DOMAIN_SERVER=api.localhost
|
||||||
4
docker/db.env
Normal file
4
docker/db.env
Normal 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
55
docker/docker-compose.yml
Normal 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:
|
||||||
Reference in New Issue
Block a user