次の方法で共有


クイックスタート: 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) を含む新しいリソース グループを作成します。

概要

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 キーを生成します。 コマンドを実行すると、既定値を受け入れるように求められます。 完了すると、秘密キーと公開キーのペアが作成されます。

公開キーをマネージド ノードにコピーする

  1. 各マネージド ノード上で、ssh-copy-id コマンドを使って、先ほど作成したコントローラー ノードから公開キーをコピーする必要があります。 マネージド ノード上でターゲット ディレクトリを指定する場合は、-i パラメーターを使います。

  2. 次のコマンド内の user アカウントは、VM の作成時に各マネージド ノード用に構成したものと同じアカウントにすることができます。 root アカウントを使うこともできますが、運用環境ではお勧めしません。

    sudo ssh-copy-id user@10.0.0.12
    sudo ssh-copy-id user@10.0.0.14
    
  3. 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 を使って、そのリソース グループ内のすべてのリソースを削除できます。