Краткое руководство. Развертывание SQL Server на Linux с помощью сборника схем Ansible
Область применения: SQL Server — Linux
В этом кратком руководстве описано, как автоматизировать развертывание SQL Server на Linux на виртуальных машинах Azure с помощью сборника схем Ansible.
Ansible — этот продукт с открытым кодом, который автоматизирует подготовку облачных решений, управление конфигурацией и развертывание приложений.
Сборники схем Ansible позволяют направлять Ansible для настройки среды. Сборники схем программируются на языке YAML, что делает их удобными для восприятия.
Необходимые компоненты
Подписка Azure. Если у вас еще нет подписки Azure, вы можете создать бесплатную учетную запись.
Создайте новую группу ресурсов с помощью интерфейса Azure CLI, который содержит три виртуальные машины Azure:
Создайте виртуальную машину Azure под управлением Red Hat Enterprise Linux (RHEL) 8.5 или более поздней версии. Эта виртуальная машина становится узлом контроллера.
Создайте виртуальную машину Azure под управлением RHEL, которая будет выступать в качестве первого управляемого узла.
Создайте виртуальную машину Azure под управлением Ubuntu Server, которая будет выступать в качестве второго управляемого узла.
Обзор
Первая виртуальная машина, в которой настраивается Ansible Core, будет являться узлом контроллера. На этом узле вы установите системную роль SQL Server.
Остальные виртуальные машины — это целевые компьютеры, также называемые управляемыми узлами, для развертывания и настройки SQL Server с помощью системной роли.
Установка Ansible Core
Начиная с RHEL 8.x на виртуальных машинах Azure пакет ansible-core
можно установить из предварительно настроенного репозитория AppStream. Ansible Core можно установить на узле контроллера с помощью следующей команды:
sudo yum install ansible-core
Чтобы проверить успешность установки, введите следующую команду:
ansible --version
Результат будет выглядеть примерно так:
ansible [core 2.12.2]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/<user>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.8/site-packages/ansible
ansible collection location = /home/<user>/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.8.12 (default, Sep 16 2021, 10:46:05) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
jinja version = 2.10.3
libyaml = true
Изменение файла hosts
на узле контроллера
Ansible создаст файл hosts
в каталоге /etc/ansible
. Измените этот файл с помощью выбранного редактора, чтобы добавить сведения об управляемом узле как запись группы или как несгруппированные записи. Сведения о создании собственной инвентаризации см. в разделе Создание инвентаризации.
В этом примере используется файл hosts
, и IP-адрес первого управляемого узла — 10.0.0.12, а IP-адрес второго управляемого узла — 10.0.0.14.
# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
# - Comments begin with the '#' character
# - Blank lines are ignored
# - Groups of hosts are delimited by [header] elements
# - You can enter hostnames or ip addresses
# - A hostname/ip can be a member of multiple groups
10.0.0.12
10.0.0.14
Настройка доступа без пароля по протоколу SSH между узлами
Необходимо настроить подключение Secure Shell (SSH) между узлом контроллера и всеми управляемыми узлами, где необходимо установить SQL Server.
Настройка SSH на узле контроллера
Если SSH уже настроен, этот шаг можно пропустить.
Используйте команду ssh-keygen
для создания ключей SSH. При выполнении команды вам будет предложено принять значения по умолчанию. По завершении у вас будет пара закрытых и открытых ключей.
Копирование открытого ключа на управляемые узлы
На каждом управляемом узле необходимо скопировать открытый ключ из только что созданного узла контроллера с помощью команды
ssh-copy-id
. Если вы хотите указать целевой каталог на управляемом узле, можно использовать параметр-i
.В следующей команде учетная запись
user
может быть той же учетной записью, которую вы настраивали для каждого управляемого узла при создании виртуальной машины. Вы также можете использовать учетную записьroot
, но это не рекомендуется делать в рабочей среде.sudo ssh-copy-id user@10.0.0.12 sudo ssh-copy-id user@10.0.0.14
Чтобы убедиться, что открытый ключ SSH был скопирован на каждый узел, используйте команду
ssh
из узла контроллера. Если вы скопировали ключи правильно, вам не предлагается пароль, и подключение выполнено успешно.ssh user@10.0.0.12 ssh user@10.0.0.14
Установка системной роли SQL Server
Системная роль Ansible называется ansible-collection-microsoft-sql
. На узле контроллера выполните следующую команду, чтобы установить системную роль SQL Server:
sudo yum install ansible-collection-microsoft-sql
Эта команда устанавливает роль /usr/share/ansible/collections
SQL Server с помощью указанного ниже файла:
-rw-r--r--. 1 user user 7592 Jul 2 20:22 FILES.json
-rw-r--r--. 1 user user 1053 Jul 2 20:22 LICENSE-server
-rw-r--r--. 1 user user 854 Jul 2 20:22 MANIFEST.json
-rw-r--r--. 1 user user 1278 Jul 2 20:22 README.md
drwxr-xr-x. 1 user user 20 Jul 2 20:22 roles
drwxr-xr-x. 1 user user 20 Jul 2 20:22 tests
Создание и настройка сборника схем Ansible
После установки системной роли вы создадите YAML-файл сборника схем SQL Server. Сведения о различных переменных роли см. в документации или README.md, включенных в роль системы SQL Server.
В следующем примере показан файл сборника схем с переменными ролей, которые определены для настройки SQL Server и для включения дополнительных функций:
- hosts: all
vars:
mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
mssql_accept_microsoft_sql_server_standard_eula: true
mssql_password: "YourP@ssw0rd"
mssql_edition: Evaluation
mssql_enable_sql_agent: true
mssql_install_fts: true
mssql_install_powershell: true
mssql_tune_for_fua_storage: true
roles:
- microsoft.sql.server
Развертывание SQL Server на управляемых узлах
Чтобы развернуть SQL Server на управляемых узлах с помощью сборника схем Ansible, выполните следующую команду на узле контроллера.
sudo ansible-playbook -u user playbook.yaml
Этот процесс начинает развертывание, и в конце вы увидите сводку воспроизведения, которая выглядит примерно так:
PLAY RECAP *******
10.0.0.12 : ok=31 changed=42 unreachable=0 failed=0 skipped=0 rescued=1 ignored=0
10.0.0.14 : ok=31 changed=42 unreachable=0 failed=0 skipped=0 rescued=1 ignored=0
Очистка ресурсов
Если вы не собираетесь в дальнейшем использовать виртуальные машины Azure, не забудьте удалить их. Если вы создали три виртуальные машины в новой группе ресурсов, можно удалить все ресурсы в этой группе ресурсов с помощью Azure CLI.
Связанный контент
- Краткое руководство. Развертывание контейнера Linux SQL Server в Kubernetes с помощью диаграмм Helm
- Знакомство с adutil — служебной программой Active Directory
- Резервное копирование и восстановление баз данных SQL Server в Linux
- Настройка координатора распределенных транзакций Майкрософт (MSDTC) в Linux