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