3.2.2 Подготовка рабочего окружения

Необходимо, прежде всего, обеспечить возможность безопасного подключения из рабочего места к первому инфраструктурному узлу (первому УУ с именем ctrl1 или подобным). Подробнее – см. ниже (Раздел 3.2.2.2).

На целевых узлах – УУ и ВУ – должен быть создан системный пользователь tionix (Раздел 3.2.1.4). Cистемный пользователь должен быть наделен следующими полномочиями:

  • беспарольным способом выполнения команд (sudo);
  • безопасным доступом (по ключевой паре).

Кроме того, потребуется внести исходные данные в конфигурацию ОП.

Основные указания:

  1. Обеспечьте безопасное подключение к инфраструктурному узлу.
Следует сгенерировать на первом УУ новый ssh-ключ [1], после чего – скопировать его на все остальные узлы (Раздел 3.2.2.2).
  1. Выполните установку средств автоматизации на первый УУ (control1).

Установка и настройка средств автоматизации выполняется как изложено ниже (Раздел 3.2.2.4).

Чтобы работа с плейбуками (сценариями) Ansible происходила без ограничений, ключевая пара должна быть сгенерирована на одном из узлов и скопирована на остальные (Раздел 3.2.2.4.3). Таким образом, у системного пользователя будет доступ ко всем узлам, организованный с помощью одинаковых (пар) ключей.

  1. Создайте рабочую директорию проекта на первом управляющем узле.
Поместите в рабочую директорию плэйбуки, содержащие настройку типовой конфигурации развертываемой ОП TIONIX (версии 3.0). См. Раздел 3.2.2.3.
  1. Сконфигурируйте переменные и инвентарь (TCP3_deploy-edit).

3.2.2.1 Настройка безопасного подключения

Примечание.

Для того, чтобы настройка безопасного подключения прошла успешно, на каждый инфраструктурный узел должна быть установлена ОС и в ней должен функционировать сервер SSH с необходимыми разрешениями сетевого доступа (Раздел 3.2.1.3).

Выполните команду:

ssh-keygen

Примечание.

Генерация ключа – процедура, не требующая регулярного повторения. Рекомендуется предварительно проверить, что ранее ключ не генерировался:

dir ~/.ssh

Выполните команду копирования ключа:

ssh-copy-id tionix@<адрес_сервера>

где

tionix – системный пользователь (Раздел 3.2.1.4);

<адрес_сервера> – адрес узла в инфраструктурной сети.

После того, как ключ скопирован, проверьте установление безопасного подключения к узлу, на который скопирован ключ.

ВАЖНО.

Операция копирования (ssh-copy-id) выполняется для всех УУ и ВУ инфраструктуры. Это позволит выполнять плейбуки Ansible (без ограничений).

3.2.2.2 Выполнение безопасного подключения

Выполните команду:

ssh tionix@<IP-адрес>

После имени пользователя (tionix), через разделитель (@), указывается IP-адрес проверяемого узла (см. план развертывания).

Если подключение выполнено без сбоев или ошибок, выполните команду exit, чтобы прервать сеанс работы в среде удаленного узла. Для подтверждения выхода (из безопасной командной оболочки) используйте клавишу <Enter>.

Внимание.

Повторите вышеописанные действия по копированию ключа и проверке подключения для всех инфраструктурных узлов, подготовленных к развертыванию.

3.2.2.3 Подготовка рабочей директории

Внимание.

Актуальные плейбуки в виде архива предоставляются руководителем проекта внедрения (инженером по внедрению).

Выполните распаковку архива с шаблоном развертывания. Например, архивный файл может иметь название ansible_tionix_classic_<номер_версии>.zip (развертывание с предварительной подготовкой инфраструктуры ОП TIONIX согласно «классической» референсной архитектуры).

Примечание.

Демонстрационный шаблон развертывания в конфигурации 3+2 (три УУ, два ВУ) может быть выбран и скачан самостоятельно. Перейдите по ссылке:

Перейдите в рабочую директорию, удалите из неё любое содержимое и распакуйте архив:

cd /opt/deploy_TCP3
unzip <путь_к_архиву>/<имя_архива>.zip

Ознакомьтесь с содержимым шаблона развертывания:

cd /opt/deploy_TCP3
find . || tree .

ВАЖНО.

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

Релиз ОП TIONIX должен быть актуальным на дату проведения работ. Способ получения релиза в данном документе не рассматривается.

3.2.2.4 Средства автоматизации

Ansible – система управления конфигурациями [2], позволяющая выполнять:

  • рутинные операции по настройке ОС;
  • установку необходимого ПО (с помощью плейбуков).

3.2.2.4.1 Установка Ansible

Установка программной утилиты ansible осуществляется средствами операционной системы Linux. Данная операция выполняется однократно, непосредственно после установки и настройки ОС.

Проверьте доступность основных репозиториев (Раздел 3.2.1). Выполните на первом УУ (с правами администратора) команды:

dnf install https://repo.tionix.ru/epel/8/epel-release-tionix-8-17.el8.noarch.rpm

dnf install ansible-2.9.23

echo 'exclude=ansible' >> /etc/dnf/dnf.conf

3.2.2.4.2 Настройка ПО Ansible

Проконтролируйте содержание конфигурационного файла ansible.cfg – убедитесь, что он содержит следующие строки:

[defaults]
forks = 10
inventory = hosts
host_key_checking = false

[ssh_connection]
pipelining = True

Примечания.

Если выше приведенные строки отсутствуют, отредактируйте файл. Редактирование конфигурационного файла Ansible выполняется при помощи консольного текстового редактора (vi или nano).

Пример вызова текстового редактора vi:

vi ansible.cfg

Дополнительные сведения о параметрах настройки и группах параметров могут быть найдены в Приложении (Конфигурация Ansible).

В переменной „private_key_file“ указать пусть к файлу с публичным ключом, используемым для подключения к узлам по SSH. При необходимости – указать другие значения переменных.

Пример фрагмента файла ansible.cfg:

[defaults]
callback_whitelist = profile_tasks
inventory = ./inventory
private_key_file = ~/.ssh/tionixcluster
host_key_checking = false
remote_user = tionix
timeout = 60
become_user= root
gathering = smart
strategy_plugins = plugins/mitogen/ansible_mitogen/plugins/strategy

3.2.2.4.3 Ключевая пара

Ключевая пара может быть произвольно сгенерирована, после чего открытая часть (публичный ключ) должна быть выложена на каждый из узлов, в директорию ~/tionix/.ssh/authorized_keys.

Рекомендуется использовать утилиту ssh-copy-id для копирования публичного ключа, как указано выше (Раздел 3.2.2.2).

Затем содержимое публичного ключа вписать в файл inventory/group_vars/all.yaml, для этого потребуется настроить переменную „ssh_pubkey: „ (Описание инфраструктуры (инвентарь)). Например:

ssh_pubkey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnj6r7/o4fv0gIQ+8/zaRw4Drw2elIs+BE/nSEN1IOSIEeqD/IpPA4cpr7DQPTT/kONuQ+VEX9voey2gbj59vHElGS8AJ0rxFyqflDU53Sma2bcd52wzx3oXuVXc4FCVc1VE3QATlq4aN36qus2QnGz0ciyuzSZC6fKju5bn1lhC+PApFA/FvnLAF2MnLyN6g5SjiYEmsI8S7fLezJFbOovhMvXKDK+L/SBRxKoBIeBBsFeiJjOS/XuGM+B7obPY+d5T3EoiNjKKW9kjNo9/xOEm73V6weB+6L+sDz5H+snxF2GwMYiKw8eJo7ENxurRWUZCL+MZtC78nq7PYfzNc5"

3.2.2.5 Конфигурирование переменных и инвентаря

Подготовка сервиса Ansible производится на управляющем узле, содержащем рабочую директорию шаблона развертывания (/opt/deploy_TCP3), и включает следующие этапы:

  1. Редактирование основных переменных.

Файл changeme.yml содержит переменные Ansible, используемые в плейбуках развертывания (Раздел 3.2.2.4.1). Внесите в него актуальные значения переменных, определяющих важные объекты и свойства инфраструктуры:

  • адреса серверов NTP и DNS („_ntp_servers“ и „_dns_servers“);
  • название домена („_domain_name“);
  • виртуальный адрес („_vip_address“).

Пример фрагмента файла (файл changeme.yml):

_dns_servers: 8.8.8.8
_ntp_servers: ru.pool.ntp.org
_domain_name: tionix.loc
_vip_address: 10.16.141.9

Примечание.

Более бодробное описание переменных – см. Приложение (Файл настройки переменных (changeme.yaml)).

  1. Настройка инвентаря (файл inventory/hosts).

Укажите значения параметров „hostname“ и „ansible_ssh_host“ для всех узлов инфраструктуры. Значение переменной „ansible_ssh_host“ вводится в формате IPv4 – десятичные цифры с разделительными точками (без сетевой маски) [3]. При необходимости, укажите другие переменные.

Примечание.

См. подробное описание в Приложении (Описание узлов управления).

Скопируйте демонстрационный пример (hosts.example) в файл inventory/hosts:

cp hosts.example inventory/hosts

Пример настройки инвентаря

all:
 children:
  control:
   hosts:

         control_1:
                hostname: controll1
                ansible_ssh_host: 10.16.141.10
                ipmi_addr: XXX
                ipmi_port: XXX
                ipmi_pass: XXX
                ipmi_usr: XXX
                ipmi_lanplus: True

         control_2:
                hostname: controll2
                ansible_ssh_host: 10.16.141.11
                ipmi_addr: XXX
                ipmi_port: XXX
                ipmi_pass: XXX
                ipmi_usr: XXX
                ipmi_lanplus: True

         control_3:
                hostname: controll3
                ansible_ssh_host: 10.16.141.12
                ipmi_addr: XXX
                ipmi_port: XXX
                ipmi_pass: XXX
                ipmi_usr: XXX
                ipmi_lanplus: True

  nodes:
   hosts:

        compute_1:
                hostname: compute1
                ansible_ssh_host: 10.16.141.13
                ipmi_addr: XXX
                ipmi_pass: XXX
                ipmi_usr: XXX

        compute_2:
                hostname: compute2
                ansible_ssh_host: 10.16.141.14
                ipmi_addr: XXX
                ipmi_pass: XXX
                ipmi_usr: XXX

  other:
   hosts:
       localhost:
               ansible_connection: local

Сноски

[1]https://docs.microsoft.com/ru-ru/windows-server/administration/openssh/openssh_keymanagement
[2]https://docs.openstack.org/project-deploy-guide/openstack-ansible/latest/deploymenthost.html
[3]https://dic.academic.ru/dic.nsf/ruwiki/730921#.D0.9F.D1.80.D0.B5.D0.B4.D1.81.D1.82.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.B0