快速入门:使用 Ansible playbook 部署 Linux 上的 SQL Server
适用于: SQL Server - Linux
本快速入门将引导你完成使用 Ansible playbook 在 Azure 虚拟机上自动执行 Linux 上的 SQL Server 部署的步骤。
Ansible 是一个开源产品,用于自动执行云预配、配置管理和应用程序部署。
Ansible playbook 可让你指导 Ansible 配置你的环境。 Playbook 是使用 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 将在 /etc/ansible
目录中创建 hosts
文件。 使用你喜欢的编辑器编辑此文件,以添加托管节点详细信息(作为组条目或未分组的条目)。 有关如何创建自己的清单的信息,请参阅如何生成清单。
在使用 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 playbook
安装系统角色后,将创建 SQL Server playbook YAML 文件。 若要了解各种角色变量,请参阅 SQL Server 系统角色随附的文档或 README.md。
以下示例演示了一个 playbook 文件,其中定义了用于配置 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
若要使用 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 删除该资源组中的所有资源。