Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .ansible-lint

This file was deleted.

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
.DS_store
.DS_store
.pass
6 changes: 0 additions & 6 deletions .pre-commit-config.yaml

This file was deleted.

26 changes: 23 additions & 3 deletions all.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
---
- name: All configs
hosts: cluster
- name: Deploy / build server
hosts: deploy
roles:
- preconfig
- role: preconfig
tags: preconfig
- role: build
tags: build
- role: deploy
tags: deploy
# - swarm_init

- name: Manager
hosts: managers
roles:
- role: preconfig
tags: preconfig
# - swarm_join

- name: Worker
hosts: workers
roles:
- role: preconfig
tags: preconfig
# - swarm_join
35 changes: 35 additions & 0 deletions group_vars/all/vars.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
rmq_defaults:
- name: AMQP_EXCHANGE
value: xchg_integrations
- name: AMQP_USER
value: "{{rmq.user}}"
- name: AMQP_PASSWORD
value: "{{rmq.password}}"
- name: AMQP_HOSTNAME
value: rmq

registry_name: "localhost:5000/"

services:
- name: api
version: latest
- name: app
version: latest
- name: converter
version: latest
- name: rmq
version: 3-management
- name: nginx
version: latest

non_build_services:
- name: rmq
version: 3-management
- name: nginx
version: latest


configs:
converter:
queue: q_imageProcessor
4 changes: 4 additions & 0 deletions group_vars/all/vault.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
rmq:
user: admin
password: admin
14 changes: 8 additions & 6 deletions inventory/cluster
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
[cluster]
server1 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2223
server2 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2224
server3 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2225
server4 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2226
server5 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2227
[deploy]
server1 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=7001
[managers]
server2 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=7002
server3 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=7003
[workers]
server4 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=7004
server5 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=7005
2 changes: 2 additions & 0 deletions requirements.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
collections:
- name: community.docker
1 change: 1 addition & 0 deletions roles/build/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
git_folder: /home/vagrant/docker
24 changes: 24 additions & 0 deletions roles/build/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
- name: Клонируем репозиторий
ansible.builtin.git:
repo: "https://github.com/Maloquiin/docker-demo.git"
dest: "{{ git_folder }}"
version: block-14

- name: Собираем image
community.docker.docker_image:
name: "{{ registry_name }}{{ item.name }}"
tag: "{{ item.version }}"
push: true
force_source: true
force_tag: true
build:
path: "{{ git_folder }}"
dockerfile: "{{ git_folder }}/apps/{{ item.name }}/Dockerfile"
source: build
loop: "{{ services | difference(non_build_services) }}"

- name: Удаляем репозиторий
file:
state: absent
path: "{{ git_folder }}"
3 changes: 3 additions & 0 deletions roles/deploy/services/api/.env.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{% for item in rmq_defaults %}
{{ item.name }} = {{ item.value }}
{% endfor %}
25 changes: 25 additions & 0 deletions roles/deploy/services/api/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
- name: "[{{ name }}] Конфигурация секрета"
include: "../secret.yml"

- name: "[{{ name }}] Выкладка сервиса"
block:

- name: "[{{ name }}] Выкладываем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
image: "{{ registry_name }}{{ name }}:{{ version }}"
state: present
force_update: true
networks:
- name: "{{ network_name }}"
publish:
- mode: ingress
protocol: tcp
published_port: 3002
target_port: 3000
secrets:
- secret_name: "{{ name }}.env"
filename: "/opt/app/.env"

tags: "{{ name }}"
19 changes: 19 additions & 0 deletions roles/deploy/services/app/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
- name: "[{{ name }}] Выкладка сервиса"
block:

- name: "[{{ name }}] Выкладываем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
image: "{{ registry_name }}{{ name }}:{{ version }}"
state: present
force_update: true
networks:
- name: "{{ network_name }}"
publish:
- mode: ingress
protocol: tcp
published_port: 3001
target_port: 80

tags: "{{ name }}"
11 changes: 11 additions & 0 deletions roles/deploy/services/config-create.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
- name: "[{{ name }}] Создаём конфиг"
vars:
config_file: "{{ lookup('template', '{{ name }}/{{ config_item }}.j2') }}"
community.docker.docker_config:
name: "{{ config_item }}"
data: "{{ config_file | b64encode }}"
labels:
config: "{{ config_file | hash('sha1') }}"
data_is_b64: true
state: present
17 changes: 17 additions & 0 deletions roles/deploy/services/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
- name: "[{{ name }}] Конфигурация конфига"
block:

- name: "[{{ name }}] Создаем конфиг"
include: "config-create.yml"

tags: "{{ name }}"

rescue:
- name: "[{{ name }}] Удаляем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
state: absent

- name: "[{{ name }}] Создаем конфиг"
include: "config-create.yml"
4 changes: 4 additions & 0 deletions roles/deploy/services/converter/.env.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{% for item in rmq_defaults %}
{{ item.name }} = {{ item.value }}
{% endfor %}
AMQP_QUEUE = {{ configs.converter.queue }}
20 changes: 20 additions & 0 deletions roles/deploy/services/converter/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
- name: "[{{ name }}] Конфигурация секрета"
include: "../secret.yml"

- name: "[{{ name }}] Выкладка сервиса"
block:

- name: "[{{ name }}] Выкладываем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
image: "{{ registry_name }}{{ name }}:{{ version }}"
state: present
force_update: true
networks:
- name: "{{ network_name }}"
secrets:
- secret_name: "{{ name }}.env"
filename: "/opt/app/.env"

tags: "{{ name }}"
18 changes: 18 additions & 0 deletions roles/deploy/services/nginx/nginx.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
worker_processes 2;

events { worker_connections 1024; }

http {
server {
listen 80;
server_name image.local;

location ~ (/uploads/|/upload) {
proxy_pass http://api:3000;
}

location ~ (/) {
proxy_pass http://app:80;
}
}
}
26 changes: 26 additions & 0 deletions roles/deploy/services/nginx/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
- name: "[{{ name }}] Конфигурация конфига"
include: "../config.yml"
loop:
- nginx.conf
loop_control:
loop_var: config_item

- name: "[{{ name }}] Выкладка сервиса"
block:
- name: "[{{ name }}] Выкладываем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
image: "nginx:{{ version }}"
state: present
networks:
- name: "{{ network_name }}"
publish:
- mode: ingress
protocol: tcp
published_port: 80
target_port: 80
configs:
- config_name: nginx.conf
filename: "/etc/nginx/nginx.conf"
tags: "{{ name }}"
16 changes: 16 additions & 0 deletions roles/deploy/services/rmq/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
- name: "[{{ name }}] Выкладка сервиса"
block:

- name: "[{{ name }}] Выкладываем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
image: "rabbitmq:{{ version }}"
state: present
networks:
- name: "{{ network_name }}"
env:
- RABBITMO_DEFAULT_USER={{ rmq.user }}
- RABBITMO_DEFAULT_PASS={{ rmq.password }}

tags: "{{ name }}"
11 changes: 11 additions & 0 deletions roles/deploy/services/secret-create.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
- name: "[{{ name }}] Создаем секрет"
vars:
env_file: "{{ lookup('template', '{{ name }}/.env.j2')}}"
community.docker.docker_secret:
name: "{{ name }}.env"
data: env_file | b64encode }}"
labels:
secret: env_file | hash('sha1') }}"
data_is_b64: true
state: present
17 changes: 17 additions & 0 deletions roles/deploy/services/secret.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
- name: "[{{ name }}] Конфигурация секрета"
block:

- name: "[{{ name }}] Создаем секрет"
include: "secret-create.yml"

tags: "{{ name }}"

rescue:
- name: "[{{ name }}] Удаляем сервис"
community.docker.docker_swarm_service:
name: "{{ name }}"
state: absent

- name: "[{{ name }}] Создаем секрет"
include: "secret-create.yml"
12 changes: 12 additions & 0 deletions roles/deploy/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
- name: Создание сети
community.docker.docker_network:
name: "{{ network_name }}"
driver: overlay

- name: Выкладка сервисов
include: "../services/{{ item.name }}/service.yml"
vars:
name: "{{ item.name }}"
version: "{{ item.version }}"
loop: "{{ services }}"
2 changes: 2 additions & 0 deletions roles/deploy/vars/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
network_name: app_network
12 changes: 0 additions & 12 deletions roles/preconfig/meta/main.yml

This file was deleted.

Loading