适用于:SQL Server - Linux
本快速入门将指导你使用 Ansible playbook,在 Azure 虚拟机上实现 Linux 上 SQL Server 部署的自动化步骤。
Ansible 是一个开源产品,用于自动执行云预配、配置管理和应用程序部署。
Ansible playbook 可让你指导 Ansible 配置你的环境。 Playbooks 是使用 YAML 编码的,使其便于人类阅读。
先决条件
一个 Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户。
使用 Azure CLI 创建新的资源组,其中包含三个 Azure 虚拟机 (VM):
创建 Azure VM,运行 Red Hat Enterprise Linux (RHEL) 8.5 或更高版本。 此 VM 将成为控制器节点。
创建 Azure VM,运行 RHEL 以用作第一个托管节点。
创建 Azure VM,运行 Ubuntu Server 以用作第二个托管节点。
概述
配置 Ansible Core 的第一个 VM 是控制器节点。 在此节点上,将安装 SQL Server 系统角色。
其余 VM 将是目标计算机(也称为“托管节点”),用于使用该系统角色部署和配置 SQL Server。
安装 Ansible Core
从 Azure VM 上的 RHEL 8.x 开始,可以从预配置的 AppStream 存储库安装 ansible-core
包。 可以使用以下命令在控制器节点上安装 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 访问
需要在控制器节点与要安装 SQL Server 的所有托管节点之间配置安全外壳 (SSH) 连接。
在控制器节点上配置 SSH
如果已配置 SSH,则可以跳过此步骤。
使用 ssh-keygen
命令生成 SSH 密钥。 运行命令时,系统会提示你接受默认值。 完成后,你将拥有私钥和公钥对。
将公钥复制到托管节点
在每个托管节点上,必须使用
ssh-copy-id
命令从刚刚创建的控制器节点复制公钥。 如果要在托管节点上指定目标目录,可以使用-i
参数。在以下命令中,
user
帐户可以是在创建 VM 时为每个托管节点配置的同一帐户。 也可以使用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
此命令将 SQL Server 角色安装到 /usr/share/ansible/collections
,其中文件如下所示:
-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 剧本
安装系统角色后,将创建 SQL Server playbook YAML 文件。 若要了解各种角色变量,请参阅 SQL Server 系统角色随附的文档或 README.md。
以下示例演示了一个 playbook 文件,其中定义了用于配置 SQL Server 并启用其他功能的角色变量。 将 <password>
替换为有效的密码。
- 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: "<password>"
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
若要使用 Ansible playbook 在托管节点上部署 SQL Server,请从控制器节点运行以下命令。
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 VM,请记得将其删除。 如果在新的资源组中创建了三个 VM,则可以使用 Azure CLI 删除该资源组中的所有资源。