Содержание
В этой статье рассмотрим установку программного продукта Р7 Сервер Базовый в архитектуре Middle используя ansible на операционных системах Linux (ubuntu 18-22, debian 10-11, astra linux 1.7.3 orel, RedOS_7.3.2, Centos 7-8).
Требования
Операционная система Ubuntu 18-22, Debian 10-11, Astra linux 1.7.3 Orel, RedOS_7.3.2, Centos 7-8
- Для корпоративного сервера
- Процессор: рекомендуется от 6 ядер
- Оперативная память: рекомендуется от 12 Гб
- Свободное место на жестком диске: рекомендуется от 50 Гб
- Python version 3.*
- Для документ сервера
- Процессор: рекомендуется от 4 ядер
- Оперативная память: рекомендуется от 8 Гб
- Свободное место на жестком диске: рекомендуется от 50 Гб
- Python version 3.*
- Для базы данных mysql
- Процессор: рекомендуется от 2 ядер
- Оперативная память: рекомендуется от 2 Гб
- Свободное место на жестком диске: рекомендуется от 15 Гб
- Python version 3.*
- Для elasticsearch
- Процессор: рекомендуется от 4 ядер
- Оперативная память: рекомендуется от 6 Гб
- Свободное место на жестком диске: рекомендуется от 50 Гб
- Python version 3.*
1. Разверните 4 ( 5 в случае если будет использоваться вынесенный elastic) виртуальные машины для следующих сервисов:
- CS
- DS
- mysql master
- mysql slave
- elastic
2. Установите Python и Ansible на машину, с которой будет осуществляться запуск плейбука:
DEB:
sudo apt install python3 sudo apt install ansible
RPM:
sudo yum install python3 sudo yum install ansible
3. Скачайте данный репозиторий к себе на рабочую машину
Устанавливаем утилиты
DEB:
apt install wget unzip
RPM:
yum install wget unzip
Скачиваем архив:
wget https://download.r7-office.ru/ansible/cs-middle-main.zip unzip cs-middle-main.zip cd cs-middle-main
4. Запуск плейбука
Для запуска скрипта необходимо заполнить переменные которые находятся:
- inventory/hosts
- inventory/group_vars/all/main.yml
- поместите сертификаты ssl в папку cs-middle/roles/cs_ds_ssl/files/ и укажите имя сертификатов в переменной path_cert_cs/path_cert_ds в inventory/group_vars/all/main.yml а так же имя dns имя сервера DS и CS (не обязательно если будет использоваться http)
Примеры hosts и main.yml ниже.
4.1. Файл находится по пути cs-middle/inventory/hosts
Заполните следующие переменные:
- ansible_host: ip адрес хоста
- ansible_port: порт для подключения по ssh
- ansible_user: пользователь для подключения по ssh
4.2. Заполните глобалные переменные в файле main.yml (не обязательно)
Файл находится по пути cs-middle/inventory/group_vars/all/main.yml (описание глобальных переменных ниже)
4.3. Запустите плейбук
Для запуска плейбука используйте следующую команду
- Установка cs_middle + elasticsearch + https:
ansible-playbook -i inventory/hosts cs.yml
- Установка cs_middle:
ansible-playbook -i inventory/hosts cs.yml --tags "cs_middle"
- Установка cs_middle + elasticsearch:
ansible-playbook -i inventory/hosts cs.yml --tags "cs_middle, elc"
- Установка cs на одном хосте:
ansible-playbook -i inventory/hosts cs.yml --tags "cs"
- Установка cs_middle + https:
ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory/hosts cs.yml --tags "cs_middle_https"
где:
ANSIBLE_HOST_KEY_CHECKING— переменная среды, используемая в Ansible для указания того, должен ли Ansible проверять ключи хостов при подключении к узлам. Когда ANSIBLE_HOST_KEY_CHECKING установлен в True, Ansible проверит ключи хостов и отклонит подключение, если обнаружит несоответствие ключей. Если установлено значение False, Ansible не будет проверять ключи хостов.-i inventory/hosts— указывает путь к инвентарному файлу, который содержит информацию о хостах, на которых будет выполняться плейбук. В данном случае, Ansible будет использовать файл hosts в папке inventorycs.yml— указывает на плейбук, который нужно выполнить. В данном случае, Ansible будет выполнять плейбук, который находится в файле cs.yml--tags "cs_middle, elc"— фильтрует задачи, которые будут выполнены в плейбуке на основе указанных тегов. В данном случае, будут выполнены только задачи, помеченные тегами cs_middle и elc.
Пример inventory/hosts
[cs] cs_1 ansible_host=192.168.1.1 ansible_port=22 ansible_user=ssh_user [ds] ds_node ansible_host=192.168.1.2 ansible_port=22 ansible_user=ssh_user [master_db] master_node ansible_host=192.168.1.3 ansible_port=22 ansible_user=ssh_user [slave_db] slave_node ansible_host=192.168.1.4 ansible_port=22 ansible_user=ssh_user [elc] elastic_node ansible_host=192.168.1.5 ansible_port=22 ansible_user=ssh_user
Переменные hosts
| vars | Описание |
| cs_1 | хост, на котором будет установлен корпоративный сервер (оставляем по умолчанию) |
| ds_node | хост, на котором будет установлен документ сервер (оставляем по умолчанию) |
| master_node | хост, на котором будет установлена база данных mysql master (оставляем по умолчанию) |
| slave_node | хост, на котором будет установлена база данных mysql svale (оставляем по умолчанию) |
| elastic_node | хост, на котором будет установлен elasticsearch (оставляем по умолчанию) |
| ansible_host | ip адрес хоста |
| ansible_port | порт для подключения через ssh ( по умолчанию 22) |
| ansible_user | пользователь для подключения по ssh |
Пример inventory/group_vars/all/main.yml
cs: "{{ hostvars[groups['cs'][0]].ansible_host }}"
ds: "{{ hostvars[groups['ds'][0]].ansible_host }}"
ms: "{{ hostvars[groups['slave_db'][0]].ansible_host }}"
mm: "{{ hostvars[groups['master_db'][0]].ansible_host }}"
elc: "{{ hostvars[groups['elc'][0]].ansible_host }}"
mysql_root_db_pass: "P@SSw0rd"
mysql_root_db_user: root
mysql_repl_user:
- name: repl
pass: "Passw0rd"
host: "%"
priv: "*.*:REPLICATION SLAVE"
mysql_cs_repl:
- name: cs_user
pass: "Passw0rd"
priv: "*.*:ALL"
host: "%"
db_name: r7-office
db_host: "{{ hostvars[groups['master_db'][0]].ansible_host }}"
DS_password: "Passw0rd"
DS_db_psql: r7office
DS_psql_user: r7office
DS_psql_pass: r7office
#HTTPS
#CS
cs_https: cs.test.ru
path_cert_cs: cs_r7-office.crt
path_keys_cs: cs_r7-office.key
#DS
ds_https: ds.test.ru
path_cert_ds: ds_r7-office.crt
path_key_ds: ds_r7-office.key
Переменные group_vars
| vars | Описание |
| cs | ip адрес хоста для корпоративного сервера. Берет значение ansible_host из файла inventory/hosts |
| ds | ip адрес хоста для документ сервера. Берет значение ansible_host из файла inventory/hosts |
| ms | ip адрес хоста для базы данных (Master). Берет значение ansible_host из файла inventory/hosts |
| mm | ip адрес хоста для базы данных (Slave). Берет значение ansible_host из файла inventory/hosts |
| elc | ip адрес хоста для elasticsearch. Берет значение ansible_host из файла inventory/hosts |
| mysql_root_db_pass | пароль от пользователя root для входа в mysql |
| mysql_root_db_user | пользователь для входа в mysql |
| mysql_repl_user | переменные для настройки mysql Master с mysql Slave. name — имя пользователя pass — пароль от пользователя host — ip адрес , с которого разрешен вход под данным пользователем ( если указать % то доступ будет разрешен с любого ip) priv- привилегии пользователя |
| mysql_cs_repl | переменные для интеграции корпоративного сервера с Mysql базой. name — имя пользователя pass — пароль от пользователя priv- привилегии пользователя host — ip адрес , с которого разрешен вход под данным пользователем (если указать % то доступ будет разрешен с любого ip) |
| DS_password | пароль для интеграции документ сервера с корпоративным сервером |
| DS_db_psql | имя базы данных для документ сервера |
| DS_psql_user | имя пользователя для базы данных документ сервера |
| DS_psql_pass | пароль для базы данных документ сервера |
| cs_https | DNS имя сервера CS. Необходимо указывать при использовании https |
| path_cert_cs | имя или путь до сертификата CS. В случаи если сертификат находится по локальному пути /cs-middle/roles/cs_ds_ssl/files/ необходимо указать имя. Если сертификат находится в другом месте, указываем путь до сертификата /var/certs/cs_uatr.ru.cert |
| path_keys_cs | имя или путь до ключа сертификата CS. В случаи если ключ находится по локальному пути /cs-middle/roles/cs_ds_ssl/files/ необходимо указать имя. Если ключ находится в другом месте, указываем путь до него /var/certs/cs_key_uatr.ru.cert |
| ds_https | DNS имя сервера DS. Необходимо указывать при использовании https |
| path_cert_ds | имя или путь до сертификата DS. В случаи если сертификат находится по локальному пути /cs-middle/roles/cs_ds_ssl/files/ необходимо указат имя. Если сертификат находится в другом месте, указываем путь до сертификата /var/certs/ds_uatr.ru.cert |
| path_key_ds | имя или путь до ключа сертификата DS. В случаи если ключ находится по локальному пути /cs-middle/roles/cs_ds_ssl/files/ необходимо указать имя. Если ключ находится в другом месте, указываем путь до него /var/certs/ds_key_uatr.ru.cert |
Лицензирование Документ сервера
Если у вас есть лицензия для документ сервера, ее необходимо переместить в папку roles/ds/templates/license.lic

