第18章 RHEL システムロールを使用した Microsoft SQL Server の設定
microsoft.sql.server
Ansible システムロールを使用して、Microsoft SQL Server のインストールと管理を自動化できます。このロールは、mssql
TuneD プロファイルを適用して Red Hat Enterprise Linux (RHEL) を最適化し、SQL Server のパフォーマンスとスループットを向上させます。
このロールは、インストール中に SQL Server および関連パッケージのリポジトリーを管理対象ホストに追加します。これらのリポジトリー内のパッケージは、Microsoft によって提供、保守、ホストされています。
18.1. microsoft.sql.server
Ansible システムロールと既存の証明書ファイルを使用して 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 が信頼されている。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
ansible-vault create
コマンドでエディターが開いたら、機密データを<key>: <value>
形式で入力します。sa_pwd: <sa_password>
- 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む 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_cert
とmssql_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
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook --ask-vault-pass ~/playbook.yml
検証
SQL Server ホストで、
-N
パラメーターを指定したsqlcmd
ユーティリティーを使用して、SQL Server への暗号化された接続を確立し、クエリーを実行します。次に例を示します。$ /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
ファイル - Ansible vault