update repo
This commit is contained in:
parent
e6e6b3eb65
commit
3334b5174e
94
README.md
94
README.md
@ -1,93 +1 @@
|
||||
# cw-deploy
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
||||
- [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://git.co-work.ru/devops/cw-deploy.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
## Integrate with your tools
|
||||
|
||||
- [ ] [Set up project integrations](https://git.co-work.ru/devops/cw-deploy/-/settings/integrations)
|
||||
|
||||
## Collaborate with your team
|
||||
|
||||
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
|
||||
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
|
||||
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
|
||||
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
|
||||
- [ ] [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
|
||||
|
||||
## Test and Deploy
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
|
||||
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/)
|
||||
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
|
||||
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
|
||||
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
|
||||
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
|
||||
|
||||
***
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## License
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
# Cowork deloy
|
||||
24
cw_docker_deploy/README.md
Normal file
24
cw_docker_deploy/README.md
Normal file
@ -0,0 +1,24 @@
|
||||
======================================================================
|
||||
Playbook information
|
||||
======================================================================
|
||||
Плейбук по развертыванию COWORK в Docker
|
||||
|
||||
Поддерживаемые версии ОС: Ubuntu (20.04 - 26.04)
|
||||
|
||||
### DEPLOY COWORK ###
|
||||
- Определяем инстанс в файле - vars/common.yml
|
||||
- Определяем тип приложения и компоненты установки в файле - vars/\<instance\>/common.yml
|
||||
- Добавляем хосты в соответствующие роли компонентов в inventory для конкретного инстанса- inventory/\<instance\>/hosts
|
||||
- Заполняем все переменные для сервиса CA в каталоге инстанса - vars/\<instance\>/ca (Если выбрана установка данного компонента)
|
||||
- Запускаем роль подготовки СА сервиса (Если выбрана установка данного компонента)
|
||||
ansible-playbook -i inventory/\<instance\>/hosts main.yml --tags "ca"
|
||||
- Копируем информацию о внутренних сертификатах в файл переменных - vars/\<instance\>/ssl_secret.yml
|
||||
cat /opt/CA/RootCA.crt > в переменную rootca_int_crt
|
||||
cat /opt/CA/service/wc.crt > в переменную wc_int_crt
|
||||
cat /opt/CA/service/wc.key > в переменную wc_int_key
|
||||
- Побавляем информацию о внешних сертификатах в файл переменных - vars/\<instance\>/ssl_secret.yml
|
||||
Переменные: wc_ext_crt, wc_ext_key, rootca_int_crt
|
||||
- Заполняем все переменные по устанавливаемым сервисам в каталоге - vars/\<instance\>/
|
||||
- Запускаем основной плейбук развертывания
|
||||
ansible-playbook -i inventory/\<instance\>/hosts main.yml
|
||||
- Ждем успешного завершения и выполняем проверку работы сервисов
|
||||
5
cw_docker_deploy/ansible.cfg
Normal file
5
cw_docker_deploy/ansible.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
[defaults]
|
||||
ansible_managed="Ansible managed"
|
||||
host_key_checking=False
|
||||
# inventory=inventory/cw-p01.local/hosts
|
||||
# inventory=inventory/
|
||||
9
cw_docker_deploy/defaults/main.yml
Normal file
9
cw_docker_deploy/defaults/main.yml
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
# defaults vars
|
||||
# ansible_python_interpreter: "/usr/libexec/platform-python"
|
||||
ansible_ssh_pipelining: "true"
|
||||
ansible_user: "gem-admin"
|
||||
ansible_ssh_transfer_method: "piped"
|
||||
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
|
||||
ansible_port: 22
|
||||
|
||||
5
cw_docker_deploy/handlers/main.yml
Normal file
5
cw_docker_deploy/handlers/main.yml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
# handlers file
|
||||
|
||||
|
||||
|
||||
21
cw_docker_deploy/inventory/nubes.ru/hosts
Normal file
21
cw_docker_deploy/inventory/nubes.ru/hosts
Normal file
@ -0,0 +1,21 @@
|
||||
[docker-host]
|
||||
|
||||
[ca-host]
|
||||
nubes-ldap ansible_host=192.168.2.7
|
||||
|
||||
[dns-host]
|
||||
nubes-ldap ansible_host=192.168.2.7
|
||||
|
||||
[ldap-host]
|
||||
nubes-ldap ansible_host=192.168.2.7
|
||||
|
||||
[iam-host]
|
||||
nubes-iam ansible_host=192.168.2.8
|
||||
|
||||
[s3-host]
|
||||
nubes-s3 ansible_host=192.168.2.6
|
||||
|
||||
[livekit-host]
|
||||
|
||||
[mon-host]
|
||||
nubes-mon ansible_host=192.168.2.5
|
||||
141
cw_docker_deploy/main.yml
Normal file
141
cw_docker_deploy/main.yml
Normal file
@ -0,0 +1,141 @@
|
||||
---
|
||||
- name: CA install
|
||||
hosts: ca-host
|
||||
serial: 1
|
||||
any_errors_fatal: true
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ca/ca_conf.yml
|
||||
- vars/{{ instance_name }}/ca/ca_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["ca"] }
|
||||
roles:
|
||||
- { role: ca_service, tags: ["ca"], when: ansible_distribution == "Ubuntu" and ca_install == "yes" }
|
||||
|
||||
- name: DNS install
|
||||
hosts: dns-host
|
||||
serial: 1
|
||||
any_errors_fatal: true
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/dns/dns_conf.yml
|
||||
- vars/{{ instance_name }}/dns/dns_zone.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["dns"] }
|
||||
roles:
|
||||
- { role: dns_service, tags: ["dns"], when: ansible_distribution == "Ubuntu" and dns_install == "yes" }
|
||||
|
||||
- name: Base prepate Linux server
|
||||
hosts: all
|
||||
any_errors_fatal: true
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ssl_secret.yml
|
||||
- vars/{{ instance_name }}/prep/prep_conf.yml
|
||||
- vars/{{ instance_name }}/prep/prep_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["linux_prep"] }
|
||||
roles:
|
||||
- { role: ubuntu_prep, tags: ["linux_prep"], when: ansible_distribution == "Ubuntu" and prep_os == "yes" }
|
||||
|
||||
- name: LDAP install (Docker)
|
||||
hosts: ldap-host
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ssl_secret.yml
|
||||
- vars/{{ instance_name }}/ldap/ldap_conf.yml
|
||||
- vars/{{ instance_name }}/ldap/ldap_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["docker", "ldap"] }
|
||||
roles:
|
||||
- { role: docker_install, tags: ["docker"], when: ansible_distribution == "Ubuntu" and docker_install == "yes" and ldap_install == "yes"}
|
||||
- { role: ldap_service, tags: ["ldap"], when: ansible_distribution == "Ubuntu" and ldap_install == "yes" }
|
||||
|
||||
- name: IAM install (Docker)
|
||||
hosts: iam-host
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ssl_secret.yml
|
||||
- vars/{{ instance_name }}/iam/iam_conf.yml
|
||||
- vars/{{ instance_name }}/iam/iam_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["docker", "iam", "iam_prep"] }
|
||||
roles:
|
||||
- { role: docker_install, tags: ["docker"], when: ansible_distribution == "Ubuntu" and docker_install == "yes" and iam_install == "yes"}
|
||||
- { role: iam_service, tags: ["iam"], when: ansible_distribution == "Ubuntu" and iam_install == "yes" }
|
||||
- { role: iam_prep, tags: ["iam_prep"], when: ansible_distribution == "Ubuntu" and iam_install == "yes" }
|
||||
|
||||
- name: S3 install
|
||||
hosts: s3-host
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ssl_secret.yml
|
||||
- vars/{{ instance_name }}/s3/s3_conf.yml
|
||||
- vars/{{ instance_name }}/s3/s3_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["s3", "s3_prep"] }
|
||||
roles:
|
||||
- { role: s3_service, tags: ["s3"], when: ansible_distribution == "Ubuntu" and s3_install == "yes" }
|
||||
- { role: s3_prep, tags: ["s3_prep"], when: ansible_distribution == "Ubuntu" and s3_install == "yes" }
|
||||
|
||||
- name: Livekit install (Docker)
|
||||
hosts: livekit-host
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ssl_secret.yml
|
||||
- vars/{{ instance_name }}/livekit/livekit_conf.yml
|
||||
- vars/{{ instance_name }}/livekit/livekit_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["docker", "livekit"] }
|
||||
roles:
|
||||
- { role: docker_install, tags: ["docker"], when: ansible_distribution == "Ubuntu" and docker_install == "yes" and livekit_install == "yes"}
|
||||
- { role: livekit_service, tags: ["livekit"], when: ansible_distribution == "Ubuntu" and livekit_install == "yes" }
|
||||
|
||||
- name: Backend install (Docker)
|
||||
hosts: docker-host
|
||||
gather_facts: false
|
||||
become: true
|
||||
vars_files:
|
||||
- defaults/main.yml
|
||||
- vars/common.yml
|
||||
- vars/{{ instance_name }}/common.yml
|
||||
- vars/{{ instance_name }}/ssl_secret.yml
|
||||
- vars/{{ instance_name }}/back/back_conf.yml
|
||||
- vars/{{ instance_name }}/back/back_secret.yml
|
||||
- vars/{{ instance_name }}/iam/iam_secret.yml
|
||||
- vars/{{ instance_name }}/livekit/livekit_secret.yml
|
||||
- vars/{{ instance_name }}/s3/s3_secret.yml
|
||||
pre_tasks:
|
||||
- { import_tasks: tasks/check_os_version.yml , tags: ["docker", "back"] }
|
||||
roles:
|
||||
- { role: docker_install, tags: ["docker"], when: ansible_distribution == "Ubuntu" and docker_install == "yes" and back_install == "yes" }
|
||||
- { role: back_service, tags: ["back"], when: ansible_distribution == "Ubuntu" and back_install == "yes" }
|
||||
|
||||
4
cw_docker_deploy/roles/back_service/README.md
Normal file
4
cw_docker_deploy/roles/back_service/README.md
Normal file
@ -0,0 +1,4 @@
|
||||
======================================================================
|
||||
Role information
|
||||
======================================================================
|
||||
Установка back apps в docker
|
||||
@ -0,0 +1,20 @@
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id BIGINT NOT NULL,
|
||||
user_name VARCHAR(255),
|
||||
nick_name VARCHAR(255),
|
||||
phone VARCHAR(255),
|
||||
email VARCHAR(255),
|
||||
title VARCHAR(255),
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS users_chats (
|
||||
id VARCHAR(50),
|
||||
user_id BIGINT NOT NULL,
|
||||
chat_id BIGINT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_users_chats_chat_id ON users_chats(chat_id);
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
||||
@ -0,0 +1,77 @@
|
||||
{
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": 3,
|
||||
"number_of_replicas": 1,
|
||||
"max_ngram_diff": 2
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"ngram_analyzer": {
|
||||
"type": "custom",
|
||||
"tokenizer": "ngram_tokenizer",
|
||||
"filter": [
|
||||
"lowercase"
|
||||
]
|
||||
},
|
||||
"standard_search_analyzer_lowercase": {
|
||||
"type": "custom",
|
||||
"tokenizer": "standard",
|
||||
"filter": [
|
||||
"lowercase"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"ngram_tokenizer": {
|
||||
"type": "ngram",
|
||||
"min_gram": 3,
|
||||
"max_gram": 5,
|
||||
"token_chars": []
|
||||
}
|
||||
},
|
||||
"normalizer": {
|
||||
"lowercase_normalizer": {
|
||||
"type": "custom",
|
||||
"filter": [
|
||||
"lowercase"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "long"
|
||||
},
|
||||
"name": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
},
|
||||
"name_ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "ngram_analyzer",
|
||||
"search_analyzer": "ngram_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"description": {
|
||||
"type": "text",
|
||||
"analyzer": "standard",
|
||||
"search_analyzer": "standard_search_analyzer_lowercase",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"_class": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256.0,
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
{
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": "3",
|
||||
"number_of_replicas": "1"
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"edge_ngram_index_analyzer": {
|
||||
"tokenizer": "edge_ngram_index_tokenizer",
|
||||
"filter": [
|
||||
"lowercase",
|
||||
"apostrophe",
|
||||
"classic"
|
||||
]
|
||||
},
|
||||
"message_search_analyzer": {
|
||||
"tokenizer": "standard"
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"edge_ngram_index_tokenizer": {
|
||||
"type": "edge_ngram",
|
||||
"min_gram": 1,
|
||||
"max_gram": 20,
|
||||
"token_chars": [
|
||||
"letter",
|
||||
"digit"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"chatId": {
|
||||
"type": "long"
|
||||
},
|
||||
"messageId": {
|
||||
"type": "long"
|
||||
},
|
||||
"serverTime": {
|
||||
"type": "long"
|
||||
},
|
||||
"_class": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256.0,
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"text": {
|
||||
"type": "text",
|
||||
"analyzer": "edge_ngram_index_analyzer",
|
||||
"search_analyzer": "message_search_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,114 @@
|
||||
{
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": 3,
|
||||
"number_of_replicas": 1,
|
||||
"max_ngram_diff": 2
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"ngram_analyzer": {
|
||||
"type": "custom",
|
||||
"tokenizer": "ngram_tokenizer",
|
||||
"filter": [
|
||||
"lowercase"
|
||||
]
|
||||
},
|
||||
"standard_search_analyzer_lowercase": {
|
||||
"type": "custom",
|
||||
"tokenizer": "standard",
|
||||
"filter": [
|
||||
"lowercase"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"ngram_tokenizer": {
|
||||
"type": "ngram",
|
||||
"min_gram": 3,
|
||||
"max_gram": 5,
|
||||
"token_chars": []
|
||||
}
|
||||
},
|
||||
"normalizer": {
|
||||
"lowercase_normalizer": {
|
||||
"type": "custom",
|
||||
"filter": [
|
||||
"lowercase"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "long"
|
||||
},
|
||||
"username": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
},
|
||||
"username_ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "ngram_analyzer",
|
||||
"search_analyzer": "ngram_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"nickname": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
},
|
||||
"nickname_ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "ngram_analyzer",
|
||||
"search_analyzer": "ngram_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"phone": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
},
|
||||
"phone_ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "ngram_analyzer",
|
||||
"search_analyzer": "ngram_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"email": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
},
|
||||
"email_ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "ngram_analyzer",
|
||||
"search_analyzer": "ngram_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"job_title": {
|
||||
"type": "keyword",
|
||||
"normalizer": "lowercase_normalizer"
|
||||
},
|
||||
"job_title_ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "ngram_analyzer",
|
||||
"search_analyzer": "ngram_analyzer",
|
||||
"index_options": "offsets",
|
||||
"term_vector": "with_positions_offsets"
|
||||
},
|
||||
"_class": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256.0,
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
cw_docker_deploy/roles/back_service/handlers/main.yml
Normal file
4
cw_docker_deploy/roles/back_service/handlers/main.yml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
# handlers file
|
||||
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install apps
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- app
|
||||
- app/ca
|
||||
|
||||
- name: Copy RootCA cert
|
||||
copy:
|
||||
content: |
|
||||
{{ rootca_int_crt }}
|
||||
dest: "/opt/docker/app/ca/RootCA.crt"
|
||||
mode: 0644
|
||||
|
||||
- name: Create compose config (apps)
|
||||
template:
|
||||
src: app/{{ item }}-app.yml.j2
|
||||
dest: /opt/docker/app/{{ item }}-app.yml
|
||||
loop: "{{ backend_apps }}"
|
||||
|
||||
- name: Allow ports (app)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop: "{{ backend_ports }}"
|
||||
|
||||
- name: Log into private registry
|
||||
community.docker.docker_login:
|
||||
registry_url: "{{ docker_registry }}"
|
||||
username: "{{ reg_username }}"
|
||||
password: "{{ reg_pass}}"
|
||||
reauthorize: true
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Pull docker images
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull {{ item }}
|
||||
loop: "{{ backend_apps }}"
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop {{ item }}
|
||||
docker compose up -d {{ item }}
|
||||
loop: "{{ backend_apps }}"
|
||||
when: first_init == "no"
|
||||
18
cw_docker_deploy/roles/back_service/tasks/docker_base.yml
Normal file
18
cw_docker_deploy/roles/back_service/tasks/docker_base.yml
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install Keycloak
|
||||
block:
|
||||
- name: Creates base docker directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker
|
||||
state: directory
|
||||
|
||||
- name: Creates base service directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra
|
||||
- app
|
||||
|
||||
|
||||
46
cw_docker_deploy/roles/back_service/tasks/docker_compose.yml
Normal file
46
cw_docker_deploy/roles/back_service/tasks/docker_compose.yml
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install Keycloak
|
||||
block:
|
||||
- name: Creates base docker directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker
|
||||
state: directory
|
||||
|
||||
- name: Create base compose config
|
||||
template:
|
||||
src: compose.yml.j2
|
||||
dest: /opt/docker/compose.yml
|
||||
register: compose_updated
|
||||
|
||||
- name: Log into private registry
|
||||
community.docker.docker_login:
|
||||
registry_url: "{{ docker_registry }}"
|
||||
username: "{{ reg_username }}"
|
||||
password: "{{ reg_pass}}"
|
||||
reauthorize: true
|
||||
when: private_registry == "yes"
|
||||
|
||||
# - name: Pull docker images
|
||||
# shell: |
|
||||
# cd /opt/docker/
|
||||
# docker compose pull {{ item }}
|
||||
# loop: "{{ backend_apps }}"
|
||||
# when: first_init == "yes"
|
||||
|
||||
- name: Pull docker images
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull
|
||||
when: first_init == "yes"
|
||||
|
||||
- name: Run docker compose config
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop
|
||||
docker compose up -d
|
||||
when: first_init == "yes"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install cassandra
|
||||
block:
|
||||
- name: Creates base directory (cassandra)
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/infra/cassandra-init
|
||||
state: directory
|
||||
|
||||
- name: Create compose config (cassandra)
|
||||
template:
|
||||
src: infra/cassandra.yml.j2
|
||||
dest: /opt/docker/infra/cassandra-database.yml
|
||||
|
||||
- name: Create init script (cassandra)
|
||||
template:
|
||||
src: "infra/cassandra/{{ item }}.j2"
|
||||
dest: "/opt/docker/infra/cassandra-init/{{ item }}"
|
||||
mode: 0755
|
||||
loop:
|
||||
- "{{ instance_app }}.sql"
|
||||
- init.sh
|
||||
|
||||
- name: Run docker compose config (cassandra)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop cassandra-database
|
||||
docker compose up -d cassandra-database
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Allow ports (cassandra)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 9042
|
||||
@ -0,0 +1,60 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install haproxy
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/haproxy
|
||||
- infra/haproxy/ssl
|
||||
- infra/haproxy/conf
|
||||
|
||||
- name: Create yml config (haproxy)
|
||||
template:
|
||||
src: infra/haproxy.yml.j2
|
||||
dest: /opt/docker/infra/haproxy.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Create haproxy config
|
||||
template:
|
||||
src: infra/haproxy/haproxy.cfg.j2
|
||||
dest: /opt/docker/infra/haproxy/conf/haproxy.cfg
|
||||
register: cfg_updated
|
||||
|
||||
- name: Copy SSL PEM key
|
||||
copy:
|
||||
content: |
|
||||
{{ wc_ext_key}}
|
||||
{{ wc_ext_crt }}
|
||||
{{ rootca_ext_crt }}
|
||||
dest: "/opt/docker/infra/haproxy/ssl/cert.pem"
|
||||
mode: 0644
|
||||
register: cert_updated
|
||||
|
||||
- name: Pull docker images (haproxy)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull haproxy
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (haproxy)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop haproxy
|
||||
docker compose up -d haproxy
|
||||
when: (yml_updated['changed'] or cfg_updated['changed'] or cert_updated['changed']) and first_init == "no"
|
||||
|
||||
- name: Allow ports (haproxy)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 8888
|
||||
- 8443
|
||||
- 9443
|
||||
- 9444
|
||||
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install kafka
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/kafka-init
|
||||
|
||||
- name: Create yml config (kafka)
|
||||
template:
|
||||
src: infra/kafka.yml.j2
|
||||
dest: /opt/docker/infra/kafka.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Create kafka-init config
|
||||
template:
|
||||
src: infra/kafka-init/client.properties.j2
|
||||
dest: /opt/docker/infra/kafka-init/client.properties
|
||||
register: cfg_updated
|
||||
|
||||
- name: Pull docker images (kafka)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull kafka
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (kafka)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop kafka
|
||||
docker compose up -d kafka
|
||||
when: (yml_updated['changed'] or cfg_updated['changed']) and first_init == "no"
|
||||
|
||||
- name: Allow ports (kafka)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 19092
|
||||
- 19093
|
||||
- 19094
|
||||
- 8900
|
||||
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install notifications
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/notifications
|
||||
|
||||
- name: Copy init sql files
|
||||
ansible.builtin.copy:
|
||||
src: notifications/init.sql
|
||||
dest: /opt/docker/infra/notifications/init.sql
|
||||
mode: '0755'
|
||||
|
||||
- name: Create yml config (notifications)
|
||||
template:
|
||||
src: infra/notifications.yml.j2
|
||||
dest: /opt/docker/infra/notifications.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Pull docker images (notifications)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull notifications
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (notifications)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop notifications
|
||||
docker compose up -d notifications
|
||||
when: yml_updated['changed'] and first_init == "no"
|
||||
|
||||
- name: Allow ports (notifications)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 5433
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install redis-sticker-service
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/redis-sticker-service
|
||||
|
||||
- name: Create yml config (redis-sticker-service)
|
||||
template:
|
||||
src: infra/redis-sticker-service.yml.j2
|
||||
dest: /opt/docker/infra/redis-sticker-service.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Create redis-sticker-service config (redis-sticker-service)
|
||||
template:
|
||||
src: infra/redis-sticker-service/redis.conf.j2
|
||||
dest: /opt/docker/infra/redis-sticker-service/redis.conf
|
||||
register: cfg_updated
|
||||
|
||||
- name: Set Permissions (redis-sticker-service)
|
||||
shell: |
|
||||
chown -R 1001:root /opt/docker/infra/redis-sticker-service/
|
||||
|
||||
- name: Pull docker images (redis-sticker-service)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull redis-sticker-service
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (redis-sticker-service)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop redis-sticker-service
|
||||
docker compose up -d redis-sticker-service
|
||||
when: cfg_updated['changed'] and yml_updated['changed'] and first_init == "no"
|
||||
|
||||
- name: Allow ports (redis-sticker-service)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 6381
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install redis-users
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/redis-users
|
||||
|
||||
- name: Create yml config (redis-users)
|
||||
template:
|
||||
src: infra/redis-users.yml.j2
|
||||
dest: /opt/docker/infra/redis-users.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Create redis-users config (redis-users)
|
||||
template:
|
||||
src: infra/redis-users/redis.conf.j2
|
||||
dest: /opt/docker/infra/redis-users/redis.conf
|
||||
register: cfg_updated
|
||||
|
||||
- name: Set Permissions (redis-users)
|
||||
shell: |
|
||||
chown -R 1001:root /opt/docker/infra/redis-users/
|
||||
|
||||
- name: Pull docker images (redis-users)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull redis-users
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (redis-users)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop redis-users
|
||||
docker compose up -d redis-users
|
||||
when: cfg_updated['changed'] and yml_updated['changed'] and first_init == "no"
|
||||
|
||||
- name: Allow ports (redis-users)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 6380
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install redis
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/redis
|
||||
|
||||
- name: Create yml config (redis)
|
||||
template:
|
||||
src: infra/redis.yml.j2
|
||||
dest: /opt/docker/infra/redis.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Pull docker images (redis)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull redis
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (redis)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop redis
|
||||
docker compose up -d redis
|
||||
when: yml_updated['changed'] and first_init == "no"
|
||||
|
||||
- name: Allow ports (redis)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 6379
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
---
|
||||
# Установка docker apps
|
||||
- name: Install search
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/docker/{{ item }}
|
||||
state: directory
|
||||
loop:
|
||||
- infra/search
|
||||
|
||||
- name: Create yml config (search)
|
||||
template:
|
||||
src: infra/search.yml.j2
|
||||
dest: /opt/docker/infra/search.yml
|
||||
register: yml_updated
|
||||
|
||||
- name: Copy init files (search)
|
||||
ansible.builtin.copy:
|
||||
src: search/{{ item }}
|
||||
dest: /opt/docker/infra/search/{{ item }}
|
||||
mode: '0755'
|
||||
loop:
|
||||
- chat_v1_idx.json
|
||||
- message_v1_idx.json
|
||||
- user_v1_idx.json
|
||||
|
||||
- name: Create init script (search)
|
||||
template:
|
||||
src: "infra/search/{{ item }}.j2"
|
||||
dest: "/opt/docker/infra/search/{{ item }}"
|
||||
mode: 0755
|
||||
loop:
|
||||
- init.sh
|
||||
|
||||
- name: Pull docker images (search)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose pull search
|
||||
when: first_init == "no"
|
||||
|
||||
- name: Run docker compose config (search)
|
||||
shell: |
|
||||
cd /opt/docker/
|
||||
docker compose stop search
|
||||
docker compose up -d search
|
||||
when: yml_updated['changed'] and first_init == "no"
|
||||
|
||||
- name: Allow ports (search)
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: "{{ item }}"
|
||||
proto: tcp
|
||||
loop:
|
||||
- 5430
|
||||
- 5601
|
||||
- 9200
|
||||
|
||||
|
||||
|
||||
36
cw_docker_deploy/roles/back_service/tasks/main.yml
Normal file
36
cw_docker_deploy/roles/back_service/tasks/main.yml
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
|
||||
# Базовая настройка
|
||||
- name: Base conf
|
||||
include_tasks: docker_base.yml
|
||||
|
||||
- name: haproxy
|
||||
include_tasks: infra/infra_haproxy.yml
|
||||
|
||||
- name: kafka
|
||||
include_tasks: infra/infra_kafka.yml
|
||||
|
||||
- name: search
|
||||
include_tasks: infra/infra_search.yml
|
||||
|
||||
- name: redis
|
||||
include_tasks: infra/infra_redis.yml
|
||||
|
||||
- name: redis-users
|
||||
include_tasks: infra/infra_redis-users.yml
|
||||
|
||||
- name: redis-sticker-service
|
||||
include_tasks: infra/infra_redis-sticker-service.yml
|
||||
|
||||
- name: notifications
|
||||
include_tasks: infra/infra_notifications.yml
|
||||
|
||||
- name: cassandra
|
||||
include_tasks: infra/infra_cassandra.yml
|
||||
|
||||
- name: backend apps
|
||||
include_tasks: app/backend_apps.yml
|
||||
|
||||
# Last run
|
||||
- name: Compose
|
||||
include_tasks: docker_compose.yml
|
||||
@ -0,0 +1,14 @@
|
||||
services:
|
||||
admin-app:
|
||||
image: {{ docker_registry }}/admin-app:{{ backend_version }}
|
||||
container_name: admin-app
|
||||
restart: "always"
|
||||
environment:
|
||||
WORKSPACE_HOST: workspace-app
|
||||
WORKSPACE_PORT: 9090
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
ports:
|
||||
- "8102:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
@ -0,0 +1,18 @@
|
||||
services:
|
||||
android-sender-app:
|
||||
image: {{ docker_registry }}/android-sender-app:{{ backend_version }}
|
||||
container_name: android-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
ANDROID_FIREBASE_CONFIG: gemteam-prod-firebase-adminsdk-qsjhx-a513f03975.json
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,23 @@
|
||||
services:
|
||||
auth-app:
|
||||
image: {{ docker_registry }}/auth-app:{{ backend_version }}
|
||||
container_name: auth-app
|
||||
restart: "always"
|
||||
environment:
|
||||
SECURITY_OAUTH2_CLIENT_ISSUER_URI: https://{{ iam_fqdn }}/realms
|
||||
REALM: {{ iam_realm }}
|
||||
SECURITY_ADMIN_REALM: master
|
||||
CLIENT_ISSUER_IRI: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
CLIENT_REALM: {{ iam_realm }}
|
||||
CLIENT_ID: gem-auth-client
|
||||
CLIENT_SECRET: {{ gem_auth_client_secret }}
|
||||
ADMIN_REALM: master
|
||||
ADMIN_CLIENT_ID: admin-cli
|
||||
ADMIN_USERNAME: {{ iam_admin_username }}
|
||||
ADMIN_PASSWORDE: {{ iam_admin_pass }}
|
||||
ADMIN_URL: https://{{ iam_fqdn }}/admin/realms/{{ iam_realm }}
|
||||
ports:
|
||||
- "8082:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
services:
|
||||
auth-event-handler-app:
|
||||
image: {{ docker_registry }}/auth-event-handler-app:{{ backend_version }}
|
||||
container_name: auth-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
SECURITY_OAUTH2_CLIENT_ISSUER_URI: https://{{ iam_fqdn }}/realms
|
||||
REALM: {{ iam_realm }}
|
||||
SECURITY_ADMIN_REALM: master
|
||||
CLIENT_ISSUER_IRI: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
CLIENT_REALM: {{ iam_realm }}
|
||||
CLIENT_ID: gem-auth-client
|
||||
CLIENT_SECRET: {{ gem_auth_client_secret }}
|
||||
ADMIN_REALM: master
|
||||
ADMIN_CLIENT_ID: admin-cli
|
||||
ADMIN_USERNAME: admin
|
||||
ADMIN_PASSWORDE: {{ iam_admin_pass }}
|
||||
ADMIN_URL: https://{{ iam_fqdn }}/admin/realms/{{ iam_realm }}
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
ports:
|
||||
- "8094:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
@ -0,0 +1,20 @@
|
||||
services:
|
||||
bff-admin-app:
|
||||
image: {{ docker_registry }}/bff-admin-app:{{ backend_version }}
|
||||
container_name: bff-admin-app
|
||||
restart: always
|
||||
environment:
|
||||
SWAGGER_HOST: "localhost"
|
||||
SWAGGER_PORT: 8080
|
||||
WORKSPACE: "static://workspace-app"
|
||||
WORKSPACE_PORT: 9090
|
||||
USER_HOST: "static://user-app"
|
||||
USER_PORT: 9090
|
||||
ADMIN_HOST: "static://admin-app"
|
||||
ADMIN_PORT: 9090
|
||||
APP_NAME: bff-admin-app
|
||||
ports:
|
||||
- "8100:8080" # SpringBoot HTTP (Swagger and UI)
|
||||
- "8101:9090" # gRPC server port
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
@ -0,0 +1,35 @@
|
||||
services:
|
||||
bff-app:
|
||||
image: {{ docker_registry }}/bff-app:{{ backend_version }}
|
||||
container_name: bff-app
|
||||
restart: "always"
|
||||
environment:
|
||||
GRPC_CLIENT_AUTH_URL: http://auth-app:9090
|
||||
GRPC_CLIENT_UPLOAD_URL: http://upload-app:9090
|
||||
GRPC_CLIENT_USER_URL: http://user-app:9090
|
||||
GRPC_CLIENT_CONFIG_URL: http://user-app:9090
|
||||
GRPC_CLIENT_CHAT_URL: http://chat-app:9090
|
||||
GRPC_CLIENT_MESSAGE_URL: http://message-app:9090
|
||||
GRPC_CLIENT_REACTION_URL: http://message-app:9090
|
||||
GRPC_CLIENT_WORKSPACE_URL: http://workspace-app:9090
|
||||
GRPC_CLIENT_SEARCH_URL: http://search-app:9090
|
||||
GRPC_CLIENT_GEM_CALL_URL: http://gem-call-app:9090
|
||||
GRPC_CLIENT_NOTIFICATIONS_URL: http://notification-app:9090
|
||||
GRPC_CLIENT_REALTIME_URL: http://realtime-app:9090
|
||||
GRPC_CLIENT_STICKER_URL: http://sticker-app:9090
|
||||
GRPC_CLIENT_DEEPLINK_URL: http://deeplink-app:9090
|
||||
ports:
|
||||
- "8081:8080"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- auth-app
|
||||
- user-app
|
||||
- upload-app
|
||||
- chat-app
|
||||
- workspace-app
|
||||
- search-app
|
||||
- gem-call-app
|
||||
- notification-app
|
||||
- realtime-app
|
||||
- sticker-app
|
||||
@ -0,0 +1,15 @@
|
||||
services:
|
||||
bff-vcs-app:
|
||||
image: {{ docker_registry }}/bff-vcs-app:{{ backend_version }}
|
||||
container_name: bff-vcs-app
|
||||
restart: "always"
|
||||
environment:
|
||||
GRPC_CLIENT_CALL_URL: http://call-realtime-app:9090
|
||||
GRPC_CLIENT_CALL_REALTIME_URL: http://call-realtime-app:9090
|
||||
ports:
|
||||
- "8079:8080"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- call-app
|
||||
- call-realtime-app
|
||||
@ -0,0 +1,28 @@
|
||||
services:
|
||||
big-chat-splitter-app:
|
||||
image: {{ docker_registry }}/big-chat-splitter-app:{{ backend_version }}
|
||||
container_name: big-chat-splitter-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
CHAT_SERVICE_HOST: chat-app
|
||||
CHAT_SERVICE_PORT: 9090
|
||||
USER_SERVICE_HOST: user-app
|
||||
USER_SERVICE_PORT: 9090
|
||||
CASSANDRA_DC: datacenter1
|
||||
CASSANDRA_HOST: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
APP_NOTIFICATION_LOCALE: en
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
include:
|
||||
- call-event-handler-app.yml
|
||||
- call-realtime-app.yml
|
||||
- livekit-webhook-handler-app.yml
|
||||
services:
|
||||
call-app:
|
||||
image: {{ docker_registry }}/call-app:{{ backend_version }}
|
||||
container_name: call-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
LIVEKIT_API_KEY: APIXj3LbDJJPLHv
|
||||
LIVEKIT_SECRET: eWWetAn7vlfgFQnXXHyyox8QceBYTnZcIMhDe4I16UeE
|
||||
RECORDING_API_HOST: {{ livekit_url }}
|
||||
RECORDING_BUCKET: livekit
|
||||
RECORDING_ACCESS_KEY: {{ minio_root_user }}
|
||||
RECORDING_SECRET: {{ minio_root_pass }}
|
||||
RECORDING_ENDPOINT: https://{{ s3_endpoint }}
|
||||
RECORDING_REGION: us-east-2
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
ports:
|
||||
- "5099:5005"
|
||||
- "8099:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,31 @@
|
||||
services:
|
||||
call-event-handler-app:
|
||||
image: {{ docker_registry }}/call-event-handler-app:{{ backend_version }}
|
||||
container_name: call-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
LIVEKIT_API_KEY: APIXj3LbDJJPLHv
|
||||
LIVEKIT_SECRET: eWWetAn7vlfgFQnXXHyyox8QceBYTnZcIMhDe4I16UeE
|
||||
RECORDING_API_HOST: https://{{ s3_endpoint }}
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
ports:
|
||||
- "5097:5005"
|
||||
expose:
|
||||
- "9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
services:
|
||||
call-realtime-app:
|
||||
image: {{ docker_registry }}/call-realtime-app:{{ backend_version }}
|
||||
container_name: call-realtime-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
LIVEKIT_API_KEY: APIXj3LbDJJPLHv
|
||||
LIVEKIT_SECRET: eWWetAn7vlfgFQnXXHyyox8QceBYTnZcIMhDe4I16UeE
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
RECORDING_API_HOST: https://{{ s3_endpoint }}
|
||||
RECORDING_BUCKET: livekit
|
||||
RECORDING_ACCESS_KEY: {{ minio_root_user }}
|
||||
RECORDING_SECRET: {{ minio_root_pass }}
|
||||
ports:
|
||||
- "5096:5005"
|
||||
expose:
|
||||
- "9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,37 @@
|
||||
services:
|
||||
chat-app:
|
||||
image: {{ docker_registry }}/chat-app:{{ backend_version }}
|
||||
container_name: chat-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
MESSAGE_HOST: message-app
|
||||
MESSAGE_PORT: 9090
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
SEARCH_HOST: search-app
|
||||
SEARCH_PORT: 9090
|
||||
GEM_CALL_HOST: gem-call-app
|
||||
GEM_CALL_PORT: 9090
|
||||
DEEPLINK_HOST: deeplink-app
|
||||
DEEPLINK_PORT: 9090
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
ports:
|
||||
- "8085:9090"
|
||||
- "5085:5005"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
services:
|
||||
chat-event-handler-app:
|
||||
image: {{ docker_registry }}/chat-event-handler-app:{{ backend_version }}
|
||||
container_name: chat-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
MESSAGE_HOST: message-app
|
||||
MESSAGE_PORT: 9090
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
SEARCH_HOST: search-app
|
||||
SEARCH_PORT: 9090
|
||||
GEM_CALL_HOST: gem-call-app
|
||||
GEM_CALL_PORT: 9090
|
||||
DEEPLINK_HOST: deeplink-app
|
||||
DEEPLINK_PORT: 9090
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
ports:
|
||||
- "5086:5005"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,20 @@
|
||||
services:
|
||||
deeplink-app:
|
||||
image: {{ docker_registry }}/deeplink-app:{{ backend_version }}
|
||||
container_name: deeplink-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
DEEPLINK_DOMAIN: {{ deeplink_domain }}
|
||||
DEEPLINK_WEBDOMAIN: {{ deeplink_webdomain }}
|
||||
DEEPLINK_TENANT: {{ deeplink_tenant }}
|
||||
BRANCHIO_DEFAULT_URL: https://{{ s3_endpoint }}/{{ instance_app }}/assets/{{ instance_app }}_logo.png
|
||||
BRANCHIO_KEY: key_live_kDe9SARR4njgiXy7aEvUdjehDznl1Rbr
|
||||
BRANCHIO_SECRET: secret_live_x1jrNQVtum7N1pxAsHEDfrQ8htXpORKD
|
||||
BRANCHIO_APPID: 1412652775958925537
|
||||
BRANCHIO_ACCESS: api_app_84c03af3781f4ebdb5a54a388869b3b8
|
||||
BRANCHIO_URL: https://api2.branch.io/
|
||||
ports:
|
||||
- "8093:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
@ -0,0 +1,18 @@
|
||||
services:
|
||||
desktop-sender-app:
|
||||
image: {{ docker_registry }}/desktop-sender-app:{{ backend_version }}
|
||||
container_name: desktop-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
services:
|
||||
gem-call-app:
|
||||
image: {{ docker_registry }}/gem-call-app:{{ backend_version }}
|
||||
container_name: gem-call-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CALL_HOST: call-app
|
||||
CALL_PORT: 9090
|
||||
CALL_REALTIME_HOST: call-realtime-app
|
||||
CALL_REALTIME_PORT: 9090
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
DEEPLINK_HOST: deeplink-app
|
||||
DEEPLINK_PORT: 9090
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
ports:
|
||||
- "8089:9090"
|
||||
- "5089:5005"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,26 @@
|
||||
services:
|
||||
gem-call-events-handler-app:
|
||||
image: {{ docker_registry }}/gem-call-events-handler-app:{{ backend_version }}
|
||||
container_name: gem-call-events-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- redis
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,18 @@
|
||||
services:
|
||||
huawei-sender-app:
|
||||
image: {{ docker_registry }}/huawei-sender-app:{{ backend_version }}
|
||||
container_name: huawei-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-1:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
services:
|
||||
ios-sender-app:
|
||||
image: {{ docker_registry }}/ios-sender-app:{{ backend_version }}
|
||||
container_name: ios-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
IOS_VOIP_FILE: voip_gemteam.p12
|
||||
IOS_VOIP_PASSWORD: 53dhdfWPCwhxG
|
||||
IOS_VOIP_TOPIC: com.gem.team.voip
|
||||
IOS_MESSAGE_FILE: apns_gemteam.p12
|
||||
IOS_MESSAGE_PASSWORD: kwsLnJ80D7wHa8p
|
||||
IOS_MESSAGE_TOPIC: com.gem.team
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
services:
|
||||
livekit-webhook-handler-app:
|
||||
image: {{ docker_registry }}/livekit-webhook-handler-app:{{ backend_version }}
|
||||
container_name: livekit-webhook-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
LIVEKIT_API_KEY: APIXj3LbDJJPLHv
|
||||
LIVEKIT_SECRET: eWWetAn7vlfgFQnXXHyyox8QceBYTnZcIMhDe4I16UeE
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
ports:
|
||||
- "5098:8080"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,41 @@
|
||||
services:
|
||||
message-app:
|
||||
image: {{ docker_registry }}/message-app:{{ backend_version }}
|
||||
container_name: message-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
UPLOAD_HOST: upload-app
|
||||
UPLOAD_PORT: 9090
|
||||
SEARCH_HOST: search-app
|
||||
SEARCH_PORT: 9090
|
||||
STICKER_HOST: sticker-app
|
||||
STICKER_PORT: 9090
|
||||
DEEPLINK_HOST: deeplink-app
|
||||
DEEPLINK_PORT: 9090
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: messages
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
REALTIME_REDIS_HOST: redis
|
||||
REALTIME_REDIS_PASSWORD: ""
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
ports:
|
||||
- "8086:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,30 @@
|
||||
services:
|
||||
message-call-event-handler-app:
|
||||
image: {{ docker_registry }}/message-call-event-handler-app:{{ backend_version }}
|
||||
container_name: message-call-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: messages
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
UPLOAD_HOST: upload-app
|
||||
UPLOAD_PORT: 9090
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,30 @@
|
||||
services:
|
||||
message-chat-event-handler-app:
|
||||
image: {{ docker_registry }}/message-chat-event-handler-app:{{ backend_version }}
|
||||
container_name: message-chat-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: messages
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
UPLOAD_HOST: upload-app
|
||||
UPLOAD_PORT: 9090
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,27 @@
|
||||
services:
|
||||
message-event-handler-app:
|
||||
image: {{ docker_registry }}/message-event-handler-app:{{ backend_version }}
|
||||
container_name: message-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: messages
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REALTIME_REDIS_HOST: redis
|
||||
REALTIME_REDIS_PASSWORD: ""
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
- redis
|
||||
@ -0,0 +1,28 @@
|
||||
services:
|
||||
message-link-preview-handler-app:
|
||||
image: {{ docker_registry }}/message-link-preview-handler-app:{{ backend_version }}
|
||||
container_name: message-link-preview-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
UPLOAD_HOST: upload-app
|
||||
UPLOAD_PORT: 9090
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: messages
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REALTIME_REDIS_HOST: redis
|
||||
REALTIME_REDIS_PASSWORD: ""
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,23 @@
|
||||
services:
|
||||
message-user-event-handler-app:
|
||||
image: {{ docker_registry }}/message-user-event-handler-app:{{ backend_version }}
|
||||
container_name: message-user-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: messages
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,28 @@
|
||||
services:
|
||||
notification-app:
|
||||
image: {{ docker_registry }}/notification-app:{{ backend_version }}
|
||||
container_name: notification-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_HOST: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: notifications
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_PORT: 9042
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REALTIME_REDIS_HOST: redis
|
||||
REALTIME_REDIS_PASSWORD:
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
ports:
|
||||
- "8090:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
@ -0,0 +1,26 @@
|
||||
services:
|
||||
notification-event-handler-app:
|
||||
image: {{ docker_registry }}/notification-event-handler-app:{{ backend_version }}
|
||||
container_name: notification-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_HOST: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: notifications
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_PORT: 9042
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
CHAT_SERVICE_HOST: chat-app
|
||||
CHAT_SERVICE_PORT: 9090
|
||||
USER_SERVICE_HOST: user-app
|
||||
USER_SERVICE_PORT: 9090
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,16 @@
|
||||
services:
|
||||
transformer-messages-app:
|
||||
image: {{ docker_registry }}/transformer-messages-app:{{ backend_version }}
|
||||
container_name: notification-messages-transformer-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
services:
|
||||
realtime-app:
|
||||
image: {{ docker_registry }}/realtime-app:{{ backend_version }}
|
||||
container_name: realtime-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REALTIME_REDIS_HOST: redis
|
||||
REALTIME_REDIS_PASSWORD:
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
GEM_CALL_HOST: gem-call-app
|
||||
GEM_CALL_PORT: 9090
|
||||
MESSAGE_HOST: message-app
|
||||
MESSAGE_PORT: 9090
|
||||
USER_HOST: user-app
|
||||
USER_PORT: 9090
|
||||
ports:
|
||||
- "8091:9090"
|
||||
- "5091:5005"
|
||||
- "9999:9999"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '4'
|
||||
memory: 4064M
|
||||
reservations:
|
||||
cpus: '2'
|
||||
memory: 2048M
|
||||
@ -0,0 +1,28 @@
|
||||
services:
|
||||
regular-chat-splitter-app:
|
||||
image: {{ docker_registry }}/regular-chat-splitter-app:{{ backend_version }}
|
||||
container_name: regular-chat-splitter-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
CHAT_SERVICE_HOST: chat-app
|
||||
CHAT_SERVICE_PORT: 9090
|
||||
USER_SERVICE_HOST: user-app
|
||||
USER_SERVICE_PORT: 9090
|
||||
CASSANDRA_DC: datacenter1
|
||||
CASSANDRA_HOST: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
APP_NOTIFICATION_LOCALE: en
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
services:
|
||||
notification-repartitioner-app:
|
||||
image: {{ docker_registry }}/notification-repartitioner-app:{{ backend_version }}
|
||||
container_name: repartitioner-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
CHAT_SERVICE_HOST: chat-app
|
||||
CHAT_SERVICE_PORT: 9090
|
||||
USER_SERVICE_HOST: user-app
|
||||
USER_SERVICE_PORT: 9090
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
services:
|
||||
safari-sender-app:
|
||||
image: {{ docker_registry }}/safari-sender-app:{{ backend_version }}
|
||||
container_name: safari-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
services:
|
||||
search-app:
|
||||
image: {{ docker_registry }}/search-app:{{ backend_version }}
|
||||
container_name: search-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
CHAT_HOST: chat-app
|
||||
CHAT_PORT: 9090
|
||||
ELASTIC_HOST: elastic_search
|
||||
ELASTIC_PORT: 9200
|
||||
POSTGRES_URL: jdbc:postgresql://postgres_search:5432/search_db
|
||||
POSTGRES_USERNAME: search_user
|
||||
POSTGRES_PASSWORD: u63nwpSyRnJsVWNcg
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
ports:
|
||||
- "8088:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
services:
|
||||
search-event-handler-app:
|
||||
image: {{ docker_registry }}/search-event-handler-app:{{ backend_version }}
|
||||
container_name: search-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
ELASTIC_HOST: elastic_search
|
||||
ELASTIC_PORT: 9200
|
||||
POSTGRES_URL: jdbc:postgresql://postgres_search:5432/search_db
|
||||
POSTGRES_USERNAME: search_user
|
||||
POSTGRES_PASSWORD: u63nwpSyRnJsVWNcg
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
@ -0,0 +1,28 @@
|
||||
services:
|
||||
sticker-app:
|
||||
image: {{ docker_registry }}/sticker-app:{{ backend_version }}
|
||||
container_name: sticker-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
CASSANDRA_PORT: 9042
|
||||
KEYSPACE: stickers
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis-sticker-service
|
||||
REDIS_PORT: 6379
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
ports:
|
||||
- "8092:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
- redis-sticker-service
|
||||
@ -0,0 +1,22 @@
|
||||
services:
|
||||
unregister-tokens-app:
|
||||
image: {{ docker_registry }}/unregister-tokens-app:{{ backend_version }}
|
||||
container_name: notification-unregister-tokens-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
CASSANDRA_DC: datacenter1
|
||||
CASSANDRA_HOST: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: notifications
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
services:
|
||||
upload-app:
|
||||
image: {{ docker_registry }}/upload-app:{{ backend_version }}
|
||||
container_name: upload-app
|
||||
restart: "always"
|
||||
environment:
|
||||
S3_ENDPOINT: https://{{ s3_endpoint }}
|
||||
S3_ACCESS_KEY: {{ minio_root_user }}
|
||||
S3_SECRET_KEY: {{ minio_root_pass }}
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
ports:
|
||||
- "8083:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
services:
|
||||
user-app:
|
||||
image: {{ docker_registry }}/user-app:{{ backend_version }}
|
||||
container_name: user-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYSPACE: users
|
||||
KAFKA_SERVER: kafka-0:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis-users
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ""
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
ports:
|
||||
- "8084:9090"
|
||||
volumes:
|
||||
- ./ca/RootCA.crt:/app/resources/RootCA.crt:ro
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
services:
|
||||
voip-splitter-app:
|
||||
image: {{ docker_registry }}/voip-splitter-app:{{ backend_version }}
|
||||
container_name: voip-splitter-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
CHAT_SERVICE_HOST: chat-app
|
||||
CHAT_SERVICE_PORT: 9090
|
||||
USER_SERVICE_HOST: user-app
|
||||
USER_SERVICE_PORT: 9090
|
||||
CASSANDRA_DC: datacenter1
|
||||
CASSANDRA_HOST: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
APP_NOTIFICATION_LOCALE: en
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
services:
|
||||
web-sender-app:
|
||||
image: {{ docker_registry }}/web-sender-app:{{ backend_version }}
|
||||
container_name: web-app
|
||||
restart: "always"
|
||||
environment:
|
||||
KAFKA_SERVER: kafka-0:9091,kafka-2:9091,kafka-2:9091
|
||||
KAFKA_USER: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
services:
|
||||
workspace-app:
|
||||
image: {{ docker_registry }}/workspace-app:{{ backend_version }}
|
||||
container_name: workspace-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KEYCLOAK_URL: https://{{ iam_fqdn }}/realms/{{ iam_realm }}
|
||||
ports:
|
||||
- "8087:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
@ -0,0 +1,19 @@
|
||||
services:
|
||||
workspace-event-handler-app:
|
||||
image: {{ docker_registry }}/workspace-event-handler-app:{{ backend_version }}
|
||||
container_name: workspace-event-handler-app
|
||||
restart: "always"
|
||||
environment:
|
||||
CASSANDRA_DATACENTER: datacenter1
|
||||
CASSANDRA_CONTACTPOINT: cassandra-database
|
||||
CASSANDRA_USERNAME: cassandra
|
||||
CASSANDRA_PASSWORD: cassandra
|
||||
KAFKA: kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
KAFKA_USERNAME: admin
|
||||
KAFKA_PASSWORD: Dfv28Hkm
|
||||
ports:
|
||||
- "8095:9090"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
27
cw_docker_deploy/roles/back_service/templates/compose.j2
Normal file
27
cw_docker_deploy/roles/back_service/templates/compose.j2
Normal file
@ -0,0 +1,27 @@
|
||||
#version: '3.8'
|
||||
services:
|
||||
{{ service_name }}:
|
||||
image: {{ docker_registry }}/{{ service_name }}:{{ service_version }}
|
||||
container_name: {{ service_name }}
|
||||
restart: "always"
|
||||
environment:
|
||||
{% for key, value in environment_variables.items() %}
|
||||
{{ key }}: {{ value }}
|
||||
{% endfor %}
|
||||
ports:
|
||||
{% for port in exposed_ports %}
|
||||
- "{{ port.host }}:{{ port.container }}"
|
||||
{% endfor %}
|
||||
networks:
|
||||
- {{ network_name }}
|
||||
depends_on:
|
||||
{% for dependency in dependencies %}
|
||||
- {{ dependency }}
|
||||
{% endfor %}
|
||||
networks:
|
||||
{{ network_name }}:
|
||||
driver: bridge
|
||||
#include:
|
||||
#{% for file in include_files %}
|
||||
# - {{ file }}
|
||||
#{% endfor %}
|
||||
53
cw_docker_deploy/roles/back_service/templates/compose.yml.j2
Normal file
53
cw_docker_deploy/roles/back_service/templates/compose.yml.j2
Normal file
@ -0,0 +1,53 @@
|
||||
include:
|
||||
- infra/haproxy.yml
|
||||
- infra/kafka.yml
|
||||
- infra/search.yml
|
||||
- infra/redis.yml
|
||||
- infra/redis-users.yml
|
||||
- infra/redis-sticker-service.yml
|
||||
- infra/notifications.yml
|
||||
- infra/cassandra-{{ cassandra_db }}.yml
|
||||
- app/voip-splitter-app.yml
|
||||
- app/regular-chat-splitter-app.yml
|
||||
- app/big-chat-splitter-app.yml
|
||||
- app/repartitioner-app.yml
|
||||
- app/notification-app.yml
|
||||
- app/android-app.yml
|
||||
- app/ios-app.yml
|
||||
- app/huawei-app.yml
|
||||
- app/web-sender-app.yml
|
||||
- app/safari-app.yml
|
||||
- app/desktop-app.yml
|
||||
- app/bff-app.yml
|
||||
- app/auth-app.yml
|
||||
- app/chat-app.yml
|
||||
- app/chat-event-handler-app.yml
|
||||
- app/user-app.yml
|
||||
- app/upload-app.yml
|
||||
- app/workspace-app.yml
|
||||
- app/workspace-event-handler-app.yml
|
||||
- app/search-app.yml
|
||||
- app/search-event-handler-app.yml
|
||||
- app/message-app.yml
|
||||
- app/message-event-handler-app.yml
|
||||
- app/message-link-preview-handler-app.yml
|
||||
- app/call-app.yml
|
||||
- app/gem-call-app.yml
|
||||
- app/notification-messages-transformer-app.yml
|
||||
- app/realtime-app.yml
|
||||
- app/gem-call-events-handler-app.yml
|
||||
- app/unregister-tokens-app.yml
|
||||
- app/sticker-app.yml
|
||||
- app/deeplink-app.yml
|
||||
- app/auth-event-handler-app.yml
|
||||
- app/message-call-event-handler-app.yml
|
||||
- app/message-chat-event-handler-app.yml
|
||||
- app/notification-event-handler-app.yml
|
||||
- app/message-user-event-handler-app.yml
|
||||
- app/admin-app.yml
|
||||
- app/bff-admin-app.yml
|
||||
- app/bff-vcs-app.yml
|
||||
|
||||
networks:
|
||||
{{ instance_app }}:
|
||||
driver: bridge
|
||||
@ -0,0 +1,38 @@
|
||||
services:
|
||||
cassandra-database:
|
||||
# image: bitnami/cassandra:latest
|
||||
image: cassandra:latest
|
||||
container_name: cassandra-database
|
||||
restart: always
|
||||
ports:
|
||||
- "9042:9042" # native protocol clients
|
||||
volumes:
|
||||
- cassandra-database-data:/var/lib/cassandra:rw
|
||||
environment:
|
||||
- CASSANDRA_CLUSTER_NAME=datacenter1
|
||||
- CASSANDRA_AUTHENTICATOR=PasswordAuthenticator
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "nodetool status"]
|
||||
interval: 2m
|
||||
start_period: 2m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
|
||||
cassandra-init:
|
||||
image: cassandra:latest
|
||||
container_name: cassandra-init
|
||||
depends_on:
|
||||
- cassandra-database
|
||||
restart: "no"
|
||||
entrypoint: ["/init.sh"]
|
||||
volumes:
|
||||
- ./cassandra-init/init.sh:/init.sh
|
||||
- ./cassandra-init/gemteam.sql:/docker-entrypoint-initdb.d/gemteam.sql
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
|
||||
volumes:
|
||||
cassandra-database-data:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
until printf "" 2>>/dev/null >>/dev/tcp/cassandra-database/9042; do
|
||||
sleep 10;
|
||||
echo "Waiting for cassandra...";
|
||||
done
|
||||
|
||||
echo "Prepare cassandra-database"
|
||||
cqlsh cassandra-database -u cassandra -p cassandra -f /docker-entrypoint-initdb.d/{{ instance_app }}.sql
|
||||
@ -0,0 +1,19 @@
|
||||
services:
|
||||
haproxy:
|
||||
image: haproxy:2.3
|
||||
container_name: haproxy
|
||||
restart: "always"
|
||||
ports:
|
||||
- "8443:8443"
|
||||
- "8888:8888"
|
||||
- "9443:9443"
|
||||
- "9444:9444"
|
||||
volumes:
|
||||
- ./haproxy/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
|
||||
- ./haproxy/ssl:/usr/local/etc/ssl:ro
|
||||
depends_on:
|
||||
- bff-app
|
||||
- bff-admin-app
|
||||
- bff-vcs-app
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
@ -0,0 +1,64 @@
|
||||
defaults
|
||||
mode http
|
||||
timeout connect 0s
|
||||
timeout client 0s
|
||||
timeout server 0s
|
||||
default-server init-addr last,libc,none
|
||||
|
||||
frontend stats
|
||||
bind :8888
|
||||
stats enable
|
||||
stats hide-version
|
||||
stats realm Haproxy\ Statistics
|
||||
stats uri /stats
|
||||
stats refresh 10s
|
||||
stats auth admin:Pa$$w0rd!1
|
||||
|
||||
frontend bff_api
|
||||
mode http
|
||||
bind :8443 ssl crt /usr/local/etc/ssl/cert.pem
|
||||
http-response set-header Cache-Control no-cache
|
||||
option http-keep-alive
|
||||
option forwardfor
|
||||
default_backend bff_api
|
||||
|
||||
backend bff_api
|
||||
mode http
|
||||
http-reuse safe
|
||||
option http-keep-alive
|
||||
option forwardfor
|
||||
default-server inter 5s fall 3 rise 3
|
||||
server bff-app bff-app:8080 check
|
||||
|
||||
frontend bff_admin
|
||||
mode http
|
||||
bind :9443 ssl crt /usr/local/etc/ssl/cert.pem
|
||||
http-response set-header Cache-Control no-cache
|
||||
option http-keep-alive
|
||||
option forwardfor
|
||||
default_backend bff_admin
|
||||
|
||||
backend bff_admin
|
||||
mode http
|
||||
http-reuse safe
|
||||
option http-keep-alive
|
||||
option forwardfor
|
||||
http-response set-header Content-Security-Policy upgrade-insecure-requests
|
||||
default-server inter 5s fall 3 rise 3
|
||||
server bff-admin bff-admin-app:8080 check
|
||||
|
||||
frontend bff_vcs
|
||||
mode http
|
||||
bind :9444 ssl crt /usr/local/etc/ssl/cert.pem
|
||||
http-response set-header Cache-Control no-cache
|
||||
option http-keep-alive
|
||||
option forwardfor
|
||||
default_backend bff_vcs
|
||||
|
||||
backend bff_vcs
|
||||
mode http
|
||||
http-reuse safe
|
||||
option http-keep-alive
|
||||
option forwardfor
|
||||
default-server inter 5s fall 3 rise 3
|
||||
server bff-vcs bff-vcs-app:8080 check
|
||||
@ -0,0 +1,5 @@
|
||||
security.protocol=SASL_PLAINTEXT
|
||||
sasl.mechanism=PLAIN
|
||||
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
|
||||
username="admin" \
|
||||
password="Dfv28Hkm";
|
||||
274
cw_docker_deploy/roles/back_service/templates/infra/kafka.yml.j2
Normal file
274
cw_docker_deploy/roles/back_service/templates/infra/kafka.yml.j2
Normal file
@ -0,0 +1,274 @@
|
||||
services:
|
||||
kafka-0:
|
||||
image: docker.io/bitnami/kafka:3.7
|
||||
container_name: kafka-0
|
||||
restart: "always"
|
||||
ports:
|
||||
- "19092:19092"
|
||||
environment:
|
||||
# KRaft settings
|
||||
- KAFKA_CFG_NODE_ID=0
|
||||
- KAFKA_CFG_PROCESS_ROLES=controller,broker
|
||||
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093 # {id}@{host}:{port} - node_id@host:port
|
||||
- KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv
|
||||
- KAFKA_CFG_SUPER_USERS=User:admin
|
||||
# Listeners
|
||||
- KAFKA_CFG_LISTENERS=INTERNAL://:9091,CONTROLLER://:9093,EXTERNAL://0.0.0.0:19092
|
||||
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://:9091,EXTERNAL://{{ ansible_default_ipv4.address }}:19092
|
||||
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CONTROLLER:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
|
||||
# BROKER SETTINGS
|
||||
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
|
||||
- KAFKA_INTER_BROKER_USER=admin
|
||||
- KAFKA_INTER_BROKER_PASSWORD=Dfv28Hkm
|
||||
- KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
|
||||
# CONTROLLER SETTINGS
|
||||
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
||||
- KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN
|
||||
- KAFKA_CONTROLLER_USER=admin
|
||||
- KAFKA_CONTROLLER_PASSWORD=Dfv28Hkm
|
||||
# CLIENT SETTINGS
|
||||
- KAFKA_CLIENT_LISTENER_NAME=EXTERNAL
|
||||
- KAFKA_CLIENT_USERS=admin
|
||||
- KAFKA_CLIENT_PASSWORDS=Dfv28Hkm
|
||||
# ACL
|
||||
- KAFKA_CFG_AUTHORIZER_CLASS_NAME=org.apache.kafka.metadata.authorizer.StandardAuthorizer
|
||||
- KAFKA_CFG_ALLOW_EVERYONE_IF_NO_ACL_FOUND=false
|
||||
# SASL
|
||||
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
|
||||
# Clustering
|
||||
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
|
||||
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3
|
||||
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=2
|
||||
# - KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=3
|
||||
# - KAFKA_CFG_NUM_PARTITIONS=3
|
||||
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
|
||||
- BITNAMI_DEBUG=yes
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
healthcheck:
|
||||
test: "bash -c 'printf \"\" > /dev/tcp/127.0.0.1/9091; exit $$?;'"
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
kafka-1:
|
||||
image: docker.io/bitnami/kafka:3.7
|
||||
container_name: kafka-1
|
||||
restart: "always"
|
||||
ports:
|
||||
- "19093:19093"
|
||||
environment:
|
||||
# KRaft settings
|
||||
- KAFKA_CFG_NODE_ID=1
|
||||
- KAFKA_CFG_PROCESS_ROLES=controller,broker
|
||||
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093
|
||||
- KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv
|
||||
- KAFKA_CFG_SUPER_USERS=User:admin
|
||||
# Listeners
|
||||
- KAFKA_CFG_LISTENERS=INTERNAL://:9091,CONTROLLER://:9093,EXTERNAL://0.0.0.0:19093
|
||||
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://:9091,EXTERNAL://{{ ansible_default_ipv4.address }}:19093
|
||||
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CONTROLLER:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
|
||||
# BROKER SETTINGS
|
||||
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
|
||||
- KAFKA_INTER_BROKER_USER=admin
|
||||
- KAFKA_INTER_BROKER_PASSWORD=Dfv28Hkm
|
||||
- KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
|
||||
# CONTROLLER SETTINGS
|
||||
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
||||
- KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN
|
||||
- KAFKA_CONTROLLER_USER=admin
|
||||
- KAFKA_CONTROLLER_PASSWORD=Dfv28Hkm
|
||||
# CLIENT SETTINGS
|
||||
- KAFKA_CLIENT_LISTENER_NAME=EXTERNAL
|
||||
- KAFKA_CLIENT_USERS=admin
|
||||
- KAFKA_CLIENT_PASSWORDS=Dfv28Hkm
|
||||
# ACL
|
||||
- KAFKA_CFG_AUTHORIZER_CLASS_NAME=org.apache.kafka.metadata.authorizer.StandardAuthorizer
|
||||
- KAFKA_CFG_ALLOW_EVERYONE_IF_NO_ACL_FOUND=true
|
||||
# SASL
|
||||
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
|
||||
# Clustering
|
||||
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
|
||||
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3
|
||||
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=2
|
||||
# - KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=3
|
||||
# - KAFKA_CFG_NUM_PARTITIONS=3
|
||||
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
|
||||
- BITNAMI_DEBUG=yes
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
healthcheck:
|
||||
test: "bash -c 'printf \"\" > /dev/tcp/127.0.0.1/9091; exit $$?;'"
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
kafka-2:
|
||||
image: docker.io/bitnami/kafka:3.7
|
||||
container_name: kafka-2
|
||||
restart: "always"
|
||||
ports:
|
||||
- "19094:19094"
|
||||
environment:
|
||||
# KRaft settings
|
||||
- KAFKA_CFG_NODE_ID=2
|
||||
- KAFKA_CFG_PROCESS_ROLES=controller,broker
|
||||
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093
|
||||
- KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv
|
||||
- KAFKA_CFG_SUPER_USERS=User:admin
|
||||
# Listeners
|
||||
- KAFKA_CFG_LISTENERS=INTERNAL://:9091,CONTROLLER://:9093,EXTERNAL://0.0.0.0:19094
|
||||
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://:9091,EXTERNAL://{{ ansible_default_ipv4.address }}:19094
|
||||
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CONTROLLER:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
|
||||
# BROKER SETTINGS
|
||||
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
|
||||
- KAFKA_INTER_BROKER_USER=admin
|
||||
- KAFKA_INTER_BROKER_PASSWORD=Dfv28Hkm
|
||||
- KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
|
||||
# CONTROLLER SETTINGS
|
||||
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
||||
- KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN
|
||||
- KAFKA_CONTROLLER_USER=admin
|
||||
- KAFKA_CONTROLLER_PASSWORD=Dfv28Hkm
|
||||
# CLIENT SETTINGS
|
||||
- KAFKA_CLIENT_LISTENER_NAME=EXTERNAL
|
||||
- KAFKA_CLIENT_USERS=admin
|
||||
- KAFKA_CLIENT_PASSWORDS=Dfv28Hkm
|
||||
# ACL
|
||||
- KAFKA_CFG_AUTHORIZER_CLASS_NAME=org.apache.kafka.metadata.authorizer.StandardAuthorizer
|
||||
- KAFKA_CFG_ALLOW_EVERYONE_IF_NO_ACL_FOUND=true
|
||||
# SASL
|
||||
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
|
||||
# Clustering
|
||||
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
|
||||
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3
|
||||
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=2
|
||||
# - KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=3
|
||||
# - KAFKA_CFG_NUM_PARTITIONS=3
|
||||
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
|
||||
- BITNAMI_DEBUG=yes
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
healthcheck:
|
||||
test: "bash -c 'printf \"\" > /dev/tcp/127.0.0.1/9091; exit $$?;'"
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
kafka-ui:
|
||||
container_name: kafka-ui
|
||||
image: provectuslabs/kafka-ui:latest
|
||||
restart: "always"
|
||||
ports:
|
||||
- "8900:8080"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
environment:
|
||||
# CLUSTER SETTINGS
|
||||
- KAFKA_CLUSTERS_0_NAME=dev-cluster
|
||||
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka-0:9091,kafka-1:9091,kafka-2:9091
|
||||
- KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL=SASL_PLAINTEXT
|
||||
- KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM=PLAIN
|
||||
- KAFKA_CLUSTERS_0_PROPERTIES_PROTOCOL=SASL
|
||||
- KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="Dfv28Hkm";
|
||||
- DYNAMIC_CONFIG_ENABLED=true
|
||||
- AUTH_TYPE="LOGIN_FORM"
|
||||
- SPRING_SECURITY_USER_NAME=admin
|
||||
- SPRING_SECURITY_USER_PASSWORD=LO8MADJIWhtnrU536Zmx
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
healthcheck:
|
||||
test: wget --no-verbose --tries=1 --spider localhost:8080 || exit 1
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
|
||||
kafka-init:
|
||||
image: 'confluentinc/cp-kafka'
|
||||
container_name: kafka-init
|
||||
restart: "on-failure"
|
||||
depends_on:
|
||||
- kafka-0
|
||||
- kafka-1
|
||||
- kafka-2
|
||||
volumes:
|
||||
- ./kafka-init/client.properties:/bitnami/kafka/client.properties
|
||||
entrypoint: [ '/bin/sh', '-c' ]
|
||||
command: |
|
||||
"
|
||||
sleep 20
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic test --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic notifications --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic user-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic chat-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic message-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic android-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9092,kafka-1:9094,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic ios-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic huawei-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic ios-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic desktop-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic safari-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic web-pushes --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic big-groups-topic --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic voip --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic regular-groups-topic --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic search-chat-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic search-user-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic search-message-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic message-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic notification-unregister-tokens --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic user-sticker-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic user-sticker-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic external-call-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic gem-call-lifecycle-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic external-call-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic gem-call-lifecycle-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic realtime-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic realtime-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic livekit-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic livekit-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic call-events.v1 --replication-factor 3 --partitions 6
|
||||
|
||||
kafka-topics --bootstrap-server kafka-0:9091,kafka-1:9091,kafka-2:9091 --command-config /bitnami/kafka/client.properties --create --if-not-exists --topic call-events.v1.dlt --replication-factor 3 --partitions 6
|
||||
"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
services:
|
||||
postgres_notifications:
|
||||
image: postgres:latest
|
||||
container_name: postgres_notifications
|
||||
environment:
|
||||
POSTGRES_USER: notifications_user
|
||||
POSTGRES_PASSWORD: fcQMXldedw7xsZ08Ydip
|
||||
POSTGRES_DB: notifications_db
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
ports:
|
||||
- "5433:5432"
|
||||
volumes:
|
||||
- ./notifications/pgdata:/var/lib/postgresql/data/pgdata
|
||||
- ./notifications/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -U search_user -d search_db" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
restart: unless-stopped
|
||||
tty: true
|
||||
stdin_open: true
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
@ -0,0 +1,16 @@
|
||||
services:
|
||||
redis-sticker-service:
|
||||
image: 'bitnami/redis:latest'
|
||||
container_name: redis-sticker-service
|
||||
hostname: redis-sticker-service
|
||||
restart: "always"
|
||||
environment:
|
||||
# ALLOW_EMPTY_PASSWORD is recommended only for development.
|
||||
ALLOW_EMPTY_PASSWORD: "yes"
|
||||
REDIS_DISABLE_COMMANDS: "FLUSHDB,FLUSHALL"
|
||||
volumes:
|
||||
- ./redis-sticker-service/redis.conf:/opt/bitnami/redis/etc/redis.conf
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
ports:
|
||||
- '6381:6379'
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
||||
services:
|
||||
redis-users:
|
||||
image: 'bitnami/redis:latest'
|
||||
container_name: redis-users
|
||||
hostname: redis-users
|
||||
restart: "always"
|
||||
environment:
|
||||
# ALLOW_EMPTY_PASSWORD is recommended only for development.
|
||||
ALLOW_EMPTY_PASSWORD: "yes"
|
||||
REDIS_DISABLE_COMMANDS: "FLUSHDB,FLUSHALL"
|
||||
volumes:
|
||||
- ./redis-users/redis.conf:/opt/bitnami/redis/etc/redis.conf
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
ports:
|
||||
- '6380:6379'
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,14 @@
|
||||
services:
|
||||
redis:
|
||||
image: 'bitnami/redis:latest'
|
||||
container_name: redis
|
||||
hostname: redis
|
||||
restart: "always"
|
||||
environment:
|
||||
# ALLOW_EMPTY_PASSWORD is recommended only for development.
|
||||
ALLOW_EMPTY_PASSWORD: "yes"
|
||||
REDIS_DISABLE_COMMANDS: "FLUSHDB,FLUSHALL"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
ports:
|
||||
- '6379:6379'
|
||||
@ -0,0 +1,78 @@
|
||||
services:
|
||||
postgres_search:
|
||||
image: postgres:15
|
||||
container_name: postgres_search
|
||||
environment:
|
||||
POSTGRES_USER: search_user
|
||||
POSTGRES_PASSWORD: u63nwpSyRnJsVWNcg
|
||||
POSTGRES_DB: search_db
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
ports:
|
||||
- "5430:5432"
|
||||
volumes:
|
||||
- ./search/pgdata:/var/lib/postgresql/data/pgdata
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -U search_user -d search_db" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
restart: unless-stopped
|
||||
tty: true
|
||||
stdin_open: true
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
|
||||
elastic_search:
|
||||
container_name: elastic_search
|
||||
image: elasticsearch:8.16.0
|
||||
restart: "always"
|
||||
environment:
|
||||
- network.host=0.0.0.0
|
||||
- discovery.type=single-node
|
||||
- cluster.name=docker-cluster
|
||||
- node.name=node1
|
||||
- xpack.license.self_generated.type=basic
|
||||
- xpack.security.enabled=false
|
||||
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
#- "ELASTIC_USERNAME=elastic"
|
||||
#- "ELASTIC_PASSWORD=Pa$$w0rd2!"
|
||||
ports:
|
||||
- 9200:9200
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
|
||||
elastic-init:
|
||||
image: elasticsearch:8.16.0
|
||||
container_name: elastic-init
|
||||
restart: "no"
|
||||
entrypoint: ["/init.sh"]
|
||||
volumes:
|
||||
- ./search/chat_v1_idx.json:/chat_v1_idx.json
|
||||
- ./search/user_v1_idx.json:/user_v1_idx.json
|
||||
- ./search/message_v1_idx.json:/message_v1_idx.json
|
||||
- ./search/init.sh:/init.sh
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- elastic_search
|
||||
|
||||
kibana_search:
|
||||
container_name: kibana_search
|
||||
image: kibana:8.16.0
|
||||
restart: "always"
|
||||
environment:
|
||||
ELASTICSEARCH_HOSTS: http://elastic_search:9200
|
||||
SERVER_HOSTS: 0.0.0.0
|
||||
ports:
|
||||
- "5601:5601"
|
||||
networks:
|
||||
- {{ instance_app }}
|
||||
depends_on:
|
||||
- elastic_search
|
||||
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
sleep 30
|
||||
cd /
|
||||
curl -XPOST 'http://elastic_search:9200/chat/_doc/1' -H 'Content-Type: application/json' -d @'chat_v1_idx.json'
|
||||
curl -XPOST 'http://elastic_search:9200/user/_doc/1' -H 'Content-Type: application/json' -d @'user_v1_idx.json'
|
||||
curl -XPOST 'http://elastic_search:9200/message/_doc/1' -H 'Content-Type: application/json' -d @'message_v1_idx.json'
|
||||
85
cw_docker_deploy/roles/back_service/vars/main.yml
Normal file
85
cw_docker_deploy/roles/back_service/vars/main.yml
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
# vars file
|
||||
# Cassandra DataBases
|
||||
cassandra_db: "database"
|
||||
|
||||
# Backend apps
|
||||
backend_apps:
|
||||
- auth
|
||||
- user
|
||||
- upload
|
||||
- chat
|
||||
- chat-event-handler
|
||||
- workspace
|
||||
- search
|
||||
- search-event-handler
|
||||
- gem-call
|
||||
- notification
|
||||
- realtime
|
||||
- sticker
|
||||
- bff
|
||||
- message
|
||||
- message-event-handler
|
||||
- message-link-preview-handler
|
||||
- call
|
||||
- call-event-handler
|
||||
- call-realtime
|
||||
- livekit-webhook-handler
|
||||
- deeplink
|
||||
- voip-splitter
|
||||
- web-sender
|
||||
- safari
|
||||
- repartitioner
|
||||
- regular-chat-splitter
|
||||
- unregister-tokens
|
||||
- notification-messages-transformer
|
||||
- ios
|
||||
- huawei
|
||||
- gem-call-events-handler
|
||||
- desktop
|
||||
- big-chat-splitter
|
||||
- android
|
||||
- auth-event-handler
|
||||
- workspace-event-handler
|
||||
- message-call-event-handler
|
||||
- message-chat-event-handler
|
||||
- notification-event-handler
|
||||
- message-user-event-handler
|
||||
- admin
|
||||
- bff-admin
|
||||
- bff-vcs
|
||||
|
||||
# Backent ports
|
||||
backend_ports:
|
||||
- 8082 # auth
|
||||
- 8084 # user
|
||||
- 8083 # upload
|
||||
- 8085 # chat
|
||||
- 5085 # chat
|
||||
- 8087 # workspace
|
||||
- 8088 # search
|
||||
- 8089 # gem-call
|
||||
- 5089 # gem-call
|
||||
- 8090 # notification
|
||||
- 8091 # realtime
|
||||
- 5091 # realtime
|
||||
- 9999 # realtime
|
||||
- 8092 # sticker
|
||||
- 8081 # bff
|
||||
- 8086 # message
|
||||
- 5099 # call-app
|
||||
- 8099 # call-app
|
||||
- 5097 # call-event-handler
|
||||
- 5096 # call-realtime
|
||||
- 5098 # livekit-webhook-handler
|
||||
- 8093 # deeplink
|
||||
- 8094 # auth-event-handler
|
||||
- 8095 # workspace-event-handler
|
||||
- 8096 #message-call-event-handler-app
|
||||
- 8097 #message-chat-event-handler-app
|
||||
- 8098 #notification-event-handler
|
||||
- 5086 #chat-event-handler
|
||||
- 8102 # admin
|
||||
- 8100 # bff-admin
|
||||
- 8101 # bff-admin
|
||||
- 8079 # bff-vcs
|
||||
4
cw_docker_deploy/roles/ca_service/README.md
Normal file
4
cw_docker_deploy/roles/ca_service/README.md
Normal file
@ -0,0 +1,4 @@
|
||||
======================================================================
|
||||
Role information
|
||||
======================================================================
|
||||
Установка CA (Центра сертификации)
|
||||
4
cw_docker_deploy/roles/ca_service/handlers/main.yml
Normal file
4
cw_docker_deploy/roles/ca_service/handlers/main.yml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
# handlers file
|
||||
|
||||
|
||||
73
cw_docker_deploy/roles/ca_service/tasks/configure_ca.yml
Normal file
73
cw_docker_deploy/roles/ca_service/tasks/configure_ca.yml
Normal file
@ -0,0 +1,73 @@
|
||||
---
|
||||
# Настройка CA
|
||||
- name: Configure CA
|
||||
block:
|
||||
- name: Creates base directory
|
||||
ansible.builtin.file:
|
||||
path: "/opt/{{ item }}"
|
||||
state: directory
|
||||
loop:
|
||||
- CA
|
||||
- CA/service
|
||||
|
||||
- name: Install additional packages
|
||||
apt:
|
||||
name: '{{ item }}'
|
||||
state: present
|
||||
update_cache: yes
|
||||
loop:
|
||||
- python3
|
||||
- python3-pip
|
||||
- perl
|
||||
- python3-lxml
|
||||
- packagekit
|
||||
- unzip
|
||||
- python3-pexpect
|
||||
|
||||
# - name: Install pip packages
|
||||
# pip:
|
||||
# name: '{{ item }}'
|
||||
# executable: pip3
|
||||
# state: latest
|
||||
# loop:
|
||||
# - pexpect
|
||||
|
||||
- name: Check CA private key
|
||||
stat:
|
||||
path: /opt/CA/RootCA.key
|
||||
register: ca_key_result
|
||||
|
||||
- name: Create CA private key
|
||||
expect:
|
||||
command: /bin/bash -c 'openssl genpkey -algorithm RSA -out /opt/CA/RootCA.key -aes-128-cbc'
|
||||
responses:
|
||||
Enter PEM pass *: "{{ ca_password }}"
|
||||
Verifying *: "{{ ca_password }}"
|
||||
timeout: 300
|
||||
when: ca_key_result.stat.exists == false
|
||||
|
||||
- name: Check CA certificate
|
||||
stat:
|
||||
path: /opt/CA/RootCA.crt
|
||||
register: ca_crt_result
|
||||
|
||||
- name: Create CA certificate
|
||||
expect:
|
||||
command: "/bin/bash -c 'openssl req -x509 -new -key /opt/CA/RootCA.key -sha256 -days {{ ca_lifeday }} -out /opt/CA/RootCA.crt'"
|
||||
responses:
|
||||
Enter pass *: "{{ ca_password }}"
|
||||
Country *: "{{ ca_country }}"
|
||||
State *: "{{ ca_state }}"
|
||||
Locality *: "{{ ca_locality }}"
|
||||
Organization *: "{{ ca_organization }}"
|
||||
Organizational *: "{{ ca_organization }}"
|
||||
Common *: "{{ ca_domain }}"
|
||||
Email *: "admin@{{ ca_domain }}"
|
||||
timeout: 300
|
||||
when: ca_crt_result.stat.exists == false
|
||||
|
||||
- name: Create certificate template
|
||||
template:
|
||||
src: template.cnf.j2
|
||||
dest: /opt/CA/template.cnf
|
||||
register: template_updated
|
||||
45
cw_docker_deploy/roles/ca_service/tasks/create_cert.yml
Normal file
45
cw_docker_deploy/roles/ca_service/tasks/create_cert.yml
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
- name: Create wildcard service certificate
|
||||
block:
|
||||
- name: Check private KEY
|
||||
stat:
|
||||
path: /opt/CA/service/{{ crt_services }}.key
|
||||
register: key_result
|
||||
|
||||
- name: Create wildcard service KEY
|
||||
shell: |
|
||||
openssl genpkey -algorithm RSA -out /opt/CA/service/{{ crt_services }}.key
|
||||
when: key_result.stat.exists == false
|
||||
|
||||
- name: Check CSR
|
||||
stat:
|
||||
path: /opt/CA/service/{{ crt_services }}.csr
|
||||
register: csr_result
|
||||
|
||||
- name: Create wildcard service CSR
|
||||
expect:
|
||||
command: "/bin/bash -c 'openssl req -new -key /opt/CA/service/{{ crt_services }}.key -config /opt/CA/template.cnf -reqexts req_ext -out /opt/CA/service/{{ crt_services }}.csr'"
|
||||
responses:
|
||||
Country *: "{{ ca_country }}"
|
||||
State *: "{{ ca_state }}"
|
||||
Locality *: "{{ ca_locality }}"
|
||||
Organization *: "{{ ca_organization }}"
|
||||
Organizational *: "{{ ca_organization }}"
|
||||
Common *: "{{ ca_domain }}"
|
||||
Email *: "admin@{{ ca_domain }}"
|
||||
timeout: 300
|
||||
when: csr_result.stat.exists == false
|
||||
|
||||
- name: Check public CRT
|
||||
stat:
|
||||
path: /opt/CA/service/{{ crt_services }}.crt
|
||||
register: crt_result
|
||||
|
||||
- name: Create wildcard service CRT
|
||||
expect:
|
||||
command: "/bin/bash -c 'openssl x509 -req -days 730 -CA /opt/CA/RootCA.crt -CAkey /opt/CA/RootCA.key -extfile /opt/CA/template.cnf -extensions req_ext -in /opt/CA/service/{{ crt_services }}.csr -out /opt/CA/service/{{ crt_services }}.crt'"
|
||||
responses:
|
||||
Enter pass *: "{{ ca_password }}"
|
||||
when: crt_result.stat.exists == false
|
||||
|
||||
|
||||
8
cw_docker_deploy/roles/ca_service/tasks/main.yml
Normal file
8
cw_docker_deploy/roles/ca_service/tasks/main.yml
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
|
||||
# Настройка CA
|
||||
- name: Configure CA
|
||||
include_tasks: configure_ca.yml
|
||||
|
||||
- name: Create service certificate
|
||||
include_tasks: create_cert.yml
|
||||
22
cw_docker_deploy/roles/ca_service/templates/template.cnf.j2
Normal file
22
cw_docker_deploy/roles/ca_service/templates/template.cnf.j2
Normal file
@ -0,0 +1,22 @@
|
||||
[ req ]
|
||||
default_bits = 2048
|
||||
distinguished_name = req_distinguished_name
|
||||
req_extensions = req_ext
|
||||
[ req_distinguished_name ]
|
||||
countryName = Country Name (2 letter code)
|
||||
countryName_default = {{ ca_country }}
|
||||
stateOrProvinceName = State or Province Name (full name)
|
||||
stateOrProvinceName_default = {{ ca_state }}
|
||||
localityName = Locality Name (eg, city)
|
||||
localityName_default = {{ ca_locality }}
|
||||
organizationName = Organization Name (eg, company)
|
||||
organizationName_default = {{ ca_organization }}
|
||||
commonName = Common Name (eg, YOUR name or FQDN)
|
||||
commonName_max = 64
|
||||
commonName_default = *.{{ ca_domain }}
|
||||
[ req_ext ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||
subjectAltName = @alt_names
|
||||
[alt_names]
|
||||
DNS.1 = *.{{ ca_domain }}
|
||||
3
cw_docker_deploy/roles/ca_service/vars/main.yml
Normal file
3
cw_docker_deploy/roles/ca_service/vars/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
# vars file
|
||||
crt_services: "wc" # Имя файла wildcard сертификата
|
||||
4
cw_docker_deploy/roles/dns_service/README.md
Normal file
4
cw_docker_deploy/roles/dns_service/README.md
Normal file
@ -0,0 +1,4 @@
|
||||
======================================================================
|
||||
Role information
|
||||
======================================================================
|
||||
Установка Bind
|
||||
4
cw_docker_deploy/roles/dns_service/handlers/main.yml
Normal file
4
cw_docker_deploy/roles/dns_service/handlers/main.yml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
# handlers file
|
||||
|
||||
|
||||
124
cw_docker_deploy/roles/dns_service/tasks/configure_bind.yml
Normal file
124
cw_docker_deploy/roles/dns_service/tasks/configure_bind.yml
Normal file
@ -0,0 +1,124 @@
|
||||
---
|
||||
# Настройка Bind
|
||||
- name: Configure Bind
|
||||
block:
|
||||
- name: Change bind options config
|
||||
template:
|
||||
src: named.conf.options.j2
|
||||
dest: /etc/bind/named.conf.options
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: bind
|
||||
register: named_options_updated
|
||||
|
||||
- name: Change bind local config
|
||||
template:
|
||||
src: named.conf.local.j2
|
||||
dest: /etc/bind/named.conf.local
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: bind
|
||||
register: named_local_updated
|
||||
|
||||
- name: Creates master zone directory
|
||||
ansible.builtin.file:
|
||||
path: /var/cache/bind/master
|
||||
state: directory
|
||||
|
||||
- name: Create dns local zone config
|
||||
template:
|
||||
src: dns_zone_local.j2
|
||||
dest: "/var/cache/bind/master/{{ dns_zone }}"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: bind
|
||||
register: named_zone_updated
|
||||
|
||||
- name: Check and update zone config
|
||||
shell: |
|
||||
named-checkzone {{ dns_zone }} /var/cache/bind/master/{{ dns_zone }}
|
||||
when: named_zone_updated['changed']
|
||||
|
||||
- name: Update DNS zone
|
||||
shell: |
|
||||
rndc reload
|
||||
when: named_zone_updated['changed']
|
||||
|
||||
- name: Check Bind config
|
||||
shell: "named-checkconf /etc/bind/named.conf"
|
||||
when: named_options_updated['changed'] or named_local_updated['changed']
|
||||
|
||||
- name: Reload Bind service
|
||||
service:
|
||||
name: bind9
|
||||
state: reloaded
|
||||
when: named_options_updated['changed'] or named_local_updated['changed'] or named_zone_updated['changed']
|
||||
|
||||
- name: Configure ufw
|
||||
block:
|
||||
- name: Install ufw packages
|
||||
apt:
|
||||
name: '{{ item }}'
|
||||
state: present
|
||||
update_cache: yes
|
||||
loop:
|
||||
- ufw
|
||||
when: "'ufw' not in ansible_facts.packages"
|
||||
|
||||
- name: Enable ufw service
|
||||
systemd:
|
||||
name: ufw.service
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Default allow outgoing traffic
|
||||
community.general.ufw:
|
||||
default: allow
|
||||
direction: outgoing
|
||||
|
||||
- name: Default deny incoming traffic
|
||||
community.general.ufw:
|
||||
default: deny
|
||||
direction: incoming
|
||||
|
||||
- name: Allow ssh traffic
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: 22
|
||||
proto: tcp
|
||||
|
||||
- name: Allow DNS traffic TCP
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: 53
|
||||
proto: tcp
|
||||
|
||||
- name: Allow DNS traffic UDP
|
||||
community.general.ufw:
|
||||
rule: allow
|
||||
port: 53
|
||||
proto: udp
|
||||
|
||||
- name: Enable UFW
|
||||
community.general.ufw:
|
||||
state: enabled
|
||||
policy: deny
|
||||
|
||||
# - name: Enable and start Docker service
|
||||
# service:
|
||||
# name: docker
|
||||
# state: started
|
||||
# enabled: yes
|
||||
|
||||
# - name: Restart Docker service
|
||||
# service:
|
||||
# name: docker
|
||||
# state: restarted
|
||||
# when: docker_updated['changed']
|
||||
|
||||
# - name: Add users to a docker group
|
||||
# ansible.builtin.user:
|
||||
# name: "{{ item }}"
|
||||
# groups: docker
|
||||
# loop: "{{ docker_users_list }}"
|
||||
# when: docker_users_list is defined
|
||||
24
cw_docker_deploy/roles/dns_service/tasks/install_bind.yml
Normal file
24
cw_docker_deploy/roles/dns_service/tasks/install_bind.yml
Normal file
@ -0,0 +1,24 @@
|
||||
---
|
||||
# Установка Bind
|
||||
- name: "Check packages is installed"
|
||||
package_facts:
|
||||
manager: "auto"
|
||||
|
||||
- name: "Install packages"
|
||||
block:
|
||||
- name: Install packages
|
||||
apt:
|
||||
name: '{{ item }}'
|
||||
state: present
|
||||
update_cache: yes
|
||||
loop:
|
||||
- bind9
|
||||
- dnsutils
|
||||
- python3
|
||||
- python3-pip
|
||||
- perl
|
||||
- python3-lxml
|
||||
- packagekit
|
||||
- unzip
|
||||
- python3-pexpect
|
||||
when: "'bind9' not in ansible_facts.packages or 'dnsutils' not in ansible_facts.packages"
|
||||
9
cw_docker_deploy/roles/dns_service/tasks/main.yml
Normal file
9
cw_docker_deploy/roles/dns_service/tasks/main.yml
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
|
||||
# Установка Bind
|
||||
- name: Install Bind
|
||||
include_tasks: install_bind.yml
|
||||
|
||||
# Настройка Bind
|
||||
- name: Configure Bind
|
||||
include_tasks: configure_bind.yml
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user