適用対象:SQL Server - Linux
このクイックスタートでは、Ansible プレイブックを使って、Azure Virtual Machines 上の SQL Server on Linux のデプロイを自動化する手順について説明します。
Ansible は、クラウド プロビジョニング、構成管理、およびアプリケーションのデプロイを自動化するオープンソース製品です。
Ansible プレイブックを使用すると、環境を構成するように Ansible に指示することができます。 プレイブックは、人間が判読できるように YAML を使用してコード化されています。
前提条件
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。
次の 3 つの Azure Virtual Machines を含む Azure CLI を使用して、新しい リソース グループ を作成します。
Red Hat Enterprise Linux (RHEL) 8.5 以降を実行する Azure VM を作成します。 この仮想マシン (VM) が コントローラー ノードになります。
RHEL を実行し、1 つ目の "マネージド ノード" として機能する Azure VM を作成します。
Ubuntu Server を実行し、2 つ目の "マネージド ノード" として機能する Azure VM を作成します。
概要
Ansible Core を構成する 1 つ目の VM がコントローラー ノードです。 このノードでは、SQL Server システムの役割をインストールします。
残りの VM は、システム ロールを使用して SQL Server をデプロイおよび構成するためのターゲット マシン (別名マネージド ノード) です。
Ansible Core をインストールする
Azure VM 上の RHEL 8.x 以降では、構成済みの AppStream リポジトリから ansible-core
パッケージをインストールできます。 次のコマンドを使って、コントローラー ノードに Ansible Core をインストールすることができます。
sudo yum install ansible-core
インストールが成功したことは、次のコマンドで確認できます。
ansible --version
次の例のような出力が表示されます。
ansible [core 2.12.2]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/<user>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.8/site-packages/ansible
ansible collection location = /home/<user>/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.8.12 (default, Sep 16 2021, 10:46:05) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
jinja version = 2.10.3
libyaml = true
コントローラー ノード上の hosts
ファイルを編集する
Ansible は、/etc/ansible
ディレクトリにhosts
ファイルを作成します。 お気に入りのエディターを使ってこのファイルを編集し、グループ エントリとして、またはグループ化されていないエントリとしてマネージド ノードの詳細を追加します。 独自のインベントリを作成する方法については、「How to build your inventory (インベントリの構築方法)」を参照してください。
hosts
ファイルを使ったこの例では、1 つ目のマネージド ノードの IP アドレスは 10.0.0.12、2 つ目のマネージド ノードの IP アドレスは 10.0.0.14 です。
# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
# - Comments begin with the '#' character
# - Blank lines are ignored
# - Groups of hosts are delimited by [header] elements
# - You can enter hostnames or ip addresses
# - A hostname/ip can be a member of multiple groups
10.0.0.12
10.0.0.14
ノード間にパスワードなしの SSH アクセスを構成する
コントローラー ノードと SQL Server をインストールするすべてのマネージド ノードの間に Secure Shell (SSH) 接続を構成する必要があります。
コントローラー ノード上で SSH を構成する
SSH が既に構成されている場合は、この手順をスキップできます。
ssh-keygen
コマンドを使って SSH キーを生成します。 コマンドを実行すると、既定値をそのまま使用するように求められます。 完了すると、秘密キーと公開キーのペアが作成されます。
公開キーをマネージド ノードにコピーする
各マネージド ノード上で、
ssh-copy-id
コマンドを使って、先ほど作成したコントローラー ノードから公開キーをコピーする必要があります。 マネージド ノード上でターゲット ディレクトリを指定する場合は、-i
パラメーターを使います。次のコマンド内の
user
アカウントは、VM の作成時に各マネージド ノード用に構成したものと同じアカウントにすることができます。root
アカウントを使うこともできますが、運用環境ではお勧めしません。sudo ssh-copy-id user@10.0.0.12 sudo ssh-copy-id user@10.0.0.14
SSH 公開キーが各ノードにコピーされたことを確認するには、コントローラー ノードから
ssh
コマンドを使います。 キーを正しくコピーした場合は、パスワードの入力は求められず、接続は成功です。ssh user@10.0.0.12 ssh user@10.0.0.14
SQL Server システム ロールをインストールする
Ansible のシステム ロールは ansible-collection-microsoft-sql
と呼ばれます。 コントローラー ノード上で次のコマンドを実行し、SQL Server システム ロールをインストールします。
sudo yum install ansible-collection-microsoft-sql
次のファイルを使用して、SQL Server ロールを/usr/share/ansible/collections
にインストールするコマンドです。
-rw-r--r--. 1 user user 7592 Jul 2 20:22 FILES.json
-rw-r--r--. 1 user user 1053 Jul 2 20:22 LICENSE-server
-rw-r--r--. 1 user user 854 Jul 2 20:22 MANIFEST.json
-rw-r--r--. 1 user user 1278 Jul 2 20:22 README.md
drwxr-xr-x. 1 user user 20 Jul 2 20:22 roles
drwxr-xr-x. 1 user user 20 Jul 2 20:22 tests
Ansible プレイブックの作成と構成
システム ロールをインストールしたら、SQL Server プレイブックの YAML ファイルを作成します。 さまざまなロール変数の詳細については、このドキュメントまたは SQL Server システム ロールに含まれている README.md を参照してください。
次の例は、SQL Server を構成し、追加機能を有効にするためにロール変数が定義されたプレイブック ファイルを示しています。
<password>
を有効なパスワードに置き換えます。
- hosts: all
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_password: "<password>"
mssql_edition: Evaluation
mssql_enable_sql_agent: true
mssql_install_fts: true
mssql_install_powershell: true
mssql_tune_for_fua_storage: true
roles:
- microsoft.sql.server
マネージド ノードに SQL Server をデプロイする
Ansible プレイブックを使ってマネージド ノードに SQL Server をデプロイするには、コントローラー ノードから次のコマンドを実行します。
sudo ansible-playbook -u user playbook.yaml
このプロセスによってデプロイが開始され、最後に、次の出力のようなプレイの概要が表示されます。
PLAY RECAP *******
10.0.0.12 : ok=31 changed=42 unreachable=0 failed=0 skipped=0 rescued=1 ignored=0
10.0.0.14 : ok=31 changed=42 unreachable=0 failed=0 skipped=0 rescued=1 ignored=0
リソースをクリーンアップする
これらの Azure VM を引き続き使わない場合は、忘れずに削除してください。 3 つの VM を新しいリソース グループに作成した場合、Azure CLI を使って、そのリソース グループ内のすべてのリソースを削除できます。