Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Установка Р7-Офис. Корпоративный сервер для Ansible

Обновлено: 10.03.24

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