Настройка среды | Ansible_Cartridge

Version:

latest
Настройка среды

Настройка среды

Требования к серверу под инсталлятор

Сервером под инсталлятор может служить:

  • отдельностоящий сервер, или

  • один из серверов под Tarantool, или

  • агент CI/CD системы.

Требования к серверу под инсталлятор:

  • Операционная система RHEL, AstraLinux, Red OS или аналогичная с поддержкой Docker.

  • Доступ по 22 порту (SSH) для devops-инженера.

  • Сетевой доступ по 22 порту (SSH) до всех серверов, на которые производится установка. В том числе до серверов под ETCD, nginx и других сервисов.

Если предполагается использовать Docker-образ инсталлятора, установите:

  • Docker Engine версии не ниже 20.10.11.

Если предполагается использовать Ansible-коллекцию инсталлятора, установите:

  • Python 3.10.2 или новее.

  • Ansible 2.15.5 или новее.

  • pip модули urllib3==1.26, requests==2.31.0, etcd3==0.12.0.

Подготовка к использованию

Перед запуском сценариев развертывания подготовьте:

  • Инвентарь — описание топологии вашего решения и настроек приложения или продукта.

  • Пользователя для подключения к серверам по SSH. Может быть root. Должен иметь sudo-права на логин под локального пользователя tarantool.

  • Приватный SSH-ключ пользователя для подключения к серверам.

  • Архив с продуктом или приложением.

где:

  • {{ super_user }} – имя пользователя для подключения по SSH. Выставляется в ansible-переменной ansible_user.

Предварительная настройка сервера под Tarantool

Для развертывания продуктовой линейки Tarantool необходима предварительная настройка серверов. В Ansible Tarantool Enterprise, начиная с версии 1.3.0, появились сценарии для проверки и первоначального конфигурирования.

Список дальнейших действий, которые производятся на серверах по необходимости:

  • Создание групп etcd и nginx.

  • Создание пользователей etcd, nginx.

  • Изменение Unix-лимитов для пользователя tarantool.

    • Max processes: soft - 64000, hard - 64000

    • Max open files: soft - 64000, hard - 64000

    • Max core file size: soft - unlimited, hard - unlimited

  • Создание директорий: /app/etcd, /app/nginx.

  • Настройка прав для директорий.

  • Настройка параметров ядра:

    • vm.overcommit_memory = 2

    • vm.overcommit_ratio = 100

    • kernel.core_uses_pid = 1

    • kernel.core_pattern = /app/tarantool/coredump/core-%e-%u-%g-%p-%t

    • net.ipv4.ip_local_port_range = 32768    60999

  • Создание каталога /var/log/journal.

  • Включение постоянного хранения для журнала journald путем добавления строки Storage=persistent в файл /etc/systemd/journald.conf.

  • Установка дополнительных пакетов: nginx, crontab, logrotate, gdb, telnet.

  • Включение службы systemd-logind.

  • Настройка loginctl для пользователя tarantool.

  • Добавление пользователя tarantool в группу crontab.

  • Установка Python-модуля PyYAML.

Проверка сервера перед развертыванием

Используйте сценарий env_check.yml. Он выполнит проверку и в результате предоставит список найденных несоответствий.

Примечание

По умолчанию сценарий завершится с ошибкой, если будут найдены несоответствия требованиям. Чтобы проигнорировать ошибку, укажите значение true для переменной tarantool_ignore_check_failure.

Проверка лимитов пользователя tarantool будет выполняться только под пользователем root. Для этого переменная tarantool_shared_become_user должна быть root.

Запустить сценарий можно без топологии приложения, с простейшим инвентарём.

Пример 1: Обычный запуск проверки с использованием Ansible-коллекции

ansible-playbook -i inventory.ini \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",
    }' \
     playbooks/env_check.yml

Пример 2: Обычный запуск проверки с использованием Docker-образа

docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",
    }' \
    playbooks/env_check.yml

Пример 3: Запуск проверки под пользователем root c использованием Docker-образа

docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"root",
    }' \
    playbooks/env_check.yml

Сценарий первичной настройки

Чтобы запустить сценарий подготовки сервера, выполните следующие команды:

Пример 1: Запуск подготовки с использованием Ansible-коллекции

ansible-playbook -i inventory.ini \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"root",
    }' \
     playbooks/env_prepare.yml

Пример 2: Запуск подготовки с использованием Docker-образа

docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"root",
    }' \
    playbooks/env_prepare.yml

где:

  • ansible_ssh_private_key_file – путь к закрытому ключу SSH для аутентификации.

  • super_user – имя пользователя, для подключения по SSH и переключения на пользователя root.

  • tarantool_shared_become_userroot.

Важно

Для успешного выполнения сценария требуется доступ к пользователю root.

Использование тегов

Сценарии проверки и настройки разбиты на ряд блоков. С помощью Ansible-тегов можно выбирать, какие из блоков необходимо запустить:

  • tarantool – задачи по настройке пользователя и директорий Tarantool.

  • etcd – задачи по настройке пользователя и директорий ETCD.

  • nginx – задачи по настройке пользователя и директорий nginx.

  • kernel – управление параметрами ядра.

  • journald – настройка журналирования системы.

  • os – особенности операционной системы.

Пример 1: Выполнить только задачи с тегом tarantool

docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",
    }' \
    --tags tarantool \
    playbooks/env_check.yml

Пример 2: Пропустить выполнение задач с тегом nginx

docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",
    }' \
    --skip-tags nginx \
    playbooks/env_check.yml

Пример 3: Выполнить только задачи с тегами tarantool и kernel

docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",
    }' \
    --tags tarantool,kernel \
    playbooks/env_check.yml
Found what you were looking for?
Feedback