分享方式:


快速入門:使用 Ansible 劇本部署 Linux 上的 SQL Server

適用於:SQL Server - Linux

本快速入門會逐步引導您使用 Ansible 劇本,在 Azure 虛擬機器上自動化 Linux 上的 SQL Server 部署。

Ansible 是一項開放原始碼產品,可自動佈建雲端、進行組態管理和應用程式部署。

Ansible 劇本可讓您指示 Ansible 設定您的環境。 劇本會使用 YAML 編碼,讓一般人能夠讀取。

必要條件

概觀

您設定 Ansible Core 的第一個 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。 使用您慣用的編輯器來編輯此檔案,以新增受控節點詳細資料 (以群組項目或未分組項目的形式)。 如需如何建立自有詳細目錄的詳細資訊,請參閱如何建置自己的詳細目錄

在此範例中使用 hosts 檔案時,第一個受控節點的 IP 位址是 10.0.0.12,而第二個受管理節點的 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 的所有受控節點之間設定安全殼層 (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,請記得將其移除。 如果您在新的資源群組中建立了三個 VM,您可以使用 Azure CLI 來移除該資源群組內的所有資源。