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。

流程

  1. 将敏感变量存储在加密的文件中:

    1. 创建 vault :

      $ ansible-vault create ~/vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
      Copy to Clipboard Toggle word wrap
    2. ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据:

      sa_pwd: <sa_password>
      sql_pwd: <SQL_AD_password>
      ad_admin_pwd: <AD_admin_password>
      Copy to Clipboard Toggle word wrap
    3. 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
  2. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Installing and configuring Microsoft SQL Server
      hosts: managed-node-01.example.com
      vars_files:
        - ~/vault.yml
      tasks:
        - name: SQL Server with AD authentication
          ansible.builtin.include_role:
            name: microsoft.sql.server
          vars:
            mssql_accept_microsoft_odbc_driver_for_sql_server_eula: true
            mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
            mssql_accept_microsoft_sql_server_standard_eula: true
    
            mssql_version: 2022
            mssql_password: "{{ sa_pwd }}"
            mssql_edition: Developer
            mssql_tcp_port: 1433
            mssql_manage_firewall: true
    
            mssql_ad_configure: true
            mssql_ad_join: true
            mssql_ad_sql_user: sqluser
            mssql_ad_sql_password: "{{ sql_pwd }}"
            ad_integration_realm: ad.example.com
            ad_integration_user: Administrator
            ad_integration_password: "{{ ad_admin_pwd }}"
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    mssql_ad_configure: true
    启用针对 AD 的身份验证。
    mssql_ad_join: true
    使用 ad_integration RHEL 系统角色将受管节点加入到 AD。角色使用 ad_integration_realmad_integration_userad_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 文件。

  3. 验证 playbook 语法:

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml
    Copy to Clipboard Toggle word wrap
  5. 授权应能够向 SQL Server 进行身份验证的 AD 用户。在 SQL Server 上,执行以下步骤:

    1. 获取 Administrator 用户的 Kerberos 票据:

      $ kinit Administrator@ad.example.com
      Copy to Clipboard Toggle word wrap
    2. 授权一个 AD 用户:

      $ /opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'
      Copy to Clipboard Toggle word wrap

      对应该能够访问 SQL Server 的每个 AD 用户重复此步骤。

验证

  • 在运行 SQL Server 的受管节点上:

    1. 获取 AD 用户的 Kerberos 票据:

      $ kinit <AD_user>@ad.example.com
      Copy to Clipboard Toggle word wrap
    2. 使用 sqlcmd 工具登录到 SQL Server ,并运行一个查询,例如:

      $ /opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'
      Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat