Содержание
В этой статье рассмотрим установку программного продукта Р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