搜索

第 17 章 使用 Ansible 系统角色配置 Microsoft SQL Server

download PDF

您可以使用 microsoft.sql.server Ansible 系统角色来自动执行 Microsoft SQL Server 的安装和管理。此角色还通过应用 mssql TuneD 配置集优化 Red Hat Enterprise Linux (RHEL)来提高 SQL Server 的性能和吞吐量。

注意

在安装过程中,该角色将 SQL Server 及相关软件包的存储库添加到受管主机。这些存储库中的软件包由 Microsoft 提供、维护和托管。

17.1. 使用 microsoft.sql.server Ansible 系统角色使用现有 TLS 证书安装和配置 SQL Server

如果应用程序需要 Microsoft SQL Server 数据库,您可以使用 TLS 加密配置 SQL Server,以启用应用程序和数据库之间的安全通信。通过使用 microsoft.sql.server Ansible 系统角色,您可以自动化这个过程,并使用 TLS 加密远程安装和配置 SQL Server。在 playbook 中,您可以使用由证书颁发机构(CA)发布的现有私钥和 TLS 证书。

根据受管主机上的 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 或更高版本。
  • 将证书存储在与 playbook 相同的目录中的 sql_crt.pem 文件中。
  • 将私钥存储在与 playbook 相同的目录中的 sql_cert.key 文件中。
  • SQL 客户端信任签发证书的 CA。

步骤

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

    1. 创建密码库:

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

      sa_pwd: <sa_password>
    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 an existing private key and certificate
          ansible.builtin.include_role:
            name: microsoft.sql.server
          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_version: 2022
            mssql_password: "{{ sa_pwd  }}"
            mssql_edition: Developer
            mssql_tcp_port: 1433
            mssql_manage_firewall: true
    
            mssql_tls_enable: true
            mssql_tls_cert: sql_crt.pem
            mssql_tls_private_key: sql_cert.key
            mssql_tls_version: 1.2
            mssql_tls_force: true

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

    mssql_tls_enable: true
    启用 TLS 加密。如果启用此设置,还必须定义 mssql_tls_certmssql_tls_private_key
    mssql_tls_cert: <path>
    设置存储在控制节点上的 TLS 证书的路径。该角色将此文件复制到受管节点上的 /etc/pki/tls/certs/ 目录中。
    mssql_tls_private_key: < path>
    设置控制节点上 TLS 私钥的路径。该角色将此文件复制到受管节点上的 /etc/pki/tls/private/ 目录中。
    mssql_tls_force: true
    如果存在,替换其目标目录中的 TLS 证书和私钥。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/microsoft.sql-server/README.md 文件。

  3. 验证 playbook 语法:

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

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

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

验证

  • 在 SQL Server 主机上,使用带有 -N 参数的 sqlcmd 工具来建立到 SQL 服务器的加密连接并运行查询,例如:

    $ /opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'

    如果命令成功,则与服务器的连接是 TLS 加密。

其他资源

  • /usr/share/ansible/roles/microsoft.sql-server/README.md file
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.