18.4. microsoft.sql.server Ansible システムロールと AD 統合を使用して SQL Server をインストールおよび設定する
Microsoft SQL Server を Active Directory (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) の Pointer (PTR) リソースレコードが含まれている。
- 管理対象ホストのネットワーク設定で、AD DNS サーバーが使用される。
管理対象ホストが次の DNS エントリーを解決できる。
- AD DC のホスト名と完全修飾ドメイン名 (FQDN) が両方とも IP アドレスに解決される。
- AD DC の IP アドレスが FQDN に解決される。
手順
機密性の高い変数を暗号化されたファイルに保存します。
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> sql_pwd: <SQL_AD_password> ad_admin_pwd: <AD_admin_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 AD authentication 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_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 }}"
サンプル Playbook で指定されている設定は次のとおりです。
mssql_ad_configure: true
- AD に対する認証を有効にします。
mssql_ad_join: true
-
ad_integration
RHEL システムロールを使用して、管理対象ノードを AD に参加させます。ロールは、ad_integration_realm
、ad_integration_user
、およびad_integration_password
変数の設定を使用してドメインに参加します。 mssql_ad_sql_user: <username>
- 管理目的でロールが AD および SQL Server に作成する AD アカウントの名前を設定します。
ad_integration_user: <AD_user>
-
マシンをドメインに参加させる権限と、
mssql_ad_sql_user
で指定された AD ユーザーを作成する権限を持つ AD ユーザーの名前を設定します。
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
AD ドメインで、Playbook で指定した AD SQL ユーザーに対して 128 ビットおよび 256 ビットの Kerberos 認証を有効にします。以下のオプションのいずれかを使用します。
Active Directory Users and Computers アプリケーションで、以下を実行します。
- ad.example.com > Users > sqluser > Accounts に移動します。
- Account options リストで、This account supports Kerberos AES 128 bit encryption と This account supports Kerberos AES 256 bit encryption を選択します。
- Apply をクリックします。
管理者モードの PowerShell で、次のように入力します。
C:\> Set-ADUser -Identity
sqluser
-KerberosEncryptionType AES128,AES256
SQL Server に対して認証できる AD ユーザーを許可します。SQL Server で、次の手順を実行します。
Administrator
ユーザーの Kerberos チケットを取得します。$ kinit Administrator@ad.example.com
AD ユーザーを許可します。
$ /opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'
SQL Server へのアクセスを許可するすべての AD ユーザーに対してこの手順を繰り返します。
検証
SQL Server を実行する管理対象ノードで、以下を実行します。
AD ユーザーの Kerberos チケットを取得します。
$ kinit <AD_user>@ad.example.com
sqlcmd
ユーティリティーを使用して SQL Server にログインし、クエリーを実行します。次に例を示します。$ /opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'
関連情報
-
/usr/share/ansible/roles/microsoft.sql-server/README.md
ファイル - Ansible vault