クイックスタート: Ansible プレイブックを使って SQL Server on Linux をデプロイする
適用対象: SQL Server - Linux
このクイックスタートでは、Ansible プレイブックを使って、Azure Virtual Machines 上の SQL Server on Linux のデプロイを自動化する手順について説明します。
Ansible は、クラウド プロビジョニング、構成管理、およびアプリケーションのデプロイを自動化するオープンソース製品です。
Ansible プレイブックを使用すると、環境を構成するように Ansible に指示することができます。 プレイブックは、人間が判読できるように YAML を使用してコード化されています。
前提条件
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。
Azure CLI を使って、3 つの Azure 仮想マシン (VM) を含む新しいリソース グループを作成します。
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 を構成し、追加機能を有効にするロール変数を定義したプレイブック ファイルを示しています。
- 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: "YourP@ssw0rd"
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 を使って、そのリソース グループ内のすべてのリソースを削除できます。