31.4. 使用 microsoft.sql.server Ansible 系统角色安装和配置带有 AD 集成的 SQL Server
您可以将 Microsoft SQL Server 集成到活动目录(AD)中,以使 AD 用户能够认证到 SQL Server。通过使用 microsoft.sql.server Ansible 系统角色,您可以自动化此过程,并相应地远程安装和配置 SQL Server。请注意,在运行 playbook 后,您仍必须在 AD 和 SQL Server 中执行手动步骤。
根据受管主机上的 RHEL 版本,您可以安装的 SQL Server 版本会有所不同:
- RHEL 7.9: SQL Server 2017 和 2019
- RHEL 8: SQL Server 2017, 2019 和 2022
- RHEL 9.4 及更新版本:SQL Server 2022
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo权限。 -
您已在控制节点上安装了
ansible-collection-microsoft-sql软件包或microsoft.sql集合。 - 受管节点安装了 2 GB 或更多 RAM。
- 受管节点使用以下版本之一: RHEL 7.9、RHEL 8、RHEL 9.4 或更高版本。
- 网络中有一个 AD 域。
- AD 中存在一个反向 DNS (RDNS)区域,它包含每个 AD 域控制器(DC)的指针(PTR)资源记录。
- 受管主机的网络设置使用 AD DNS 服务器。
受管主机可以解析以下 DNS 条目:
- AD DC 的主机名和完全限定域名(FQDN)都解析为其 IP 地址。
- AD DC 的 IP 地址解析为它们的 FQDN。
流程
将敏感变量存储在加密的文件中:
创建 vault :
ansible-vault create ~/vault.yml
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ansible-vault create命令打开编辑器后,以<key>: <value>格式输入敏感数据:sa_pwd: <sa_password> sql_pwd: <SQL_AD_password> ad_admin_pwd: <AD_admin_password>
sa_pwd: <sa_password> sql_pwd: <SQL_AD_password> ad_admin_pwd: <AD_admin_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
mssql_ad_configure: true- 启用针对 AD 的身份验证。
mssql_ad_join: true-
使用
ad_integrationRHEL 系统角色将受管节点加入到 AD。角色使用ad_integration_realm、ad_integration_user和ad_integration_password变量中的设置来加入域。 mssql_ad_sql_user: <username>- 设置角色出于管理目的应在 AD 和 SQL Server 中创建的 AD 帐户的名称。
ad_integration_user: <AD_user>-
设置具有特权的 AD 用户的名称,来将机器加入到域,并创建
mssql_ad_sql_user中指定的 AD 用户。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/microsoft.sql-server/README.md文件。验证 playbook 语法:
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 授权应能够向 SQL Server 进行身份验证的 AD 用户。在 SQL Server 上,执行以下步骤:
获取
Administrator用户的 Kerberos 票据:kinit Administrator@ad.example.com
$ kinit Administrator@ad.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 授权一个 AD 用户:
/opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'
$ /opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对应该能够访问 SQL Server 的每个 AD 用户重复此步骤。
验证
在运行 SQL Server 的受管节点上:
获取 AD 用户的 Kerberos 票据:
kinit <AD_user>@ad.example.com
$ kinit <AD_user>@ad.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
sqlcmd工具登录到 SQL Server ,并运行一个查询,例如:/opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'
$ /opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'Copy to Clipboard Copied! Toggle word wrap Toggle overflow