快速入門:使用 Ansible 劇本部署 Linux 上的 SQL Server
適用於:SQL Server - Linux
本快速入門會逐步引導您使用 Ansible 劇本,在 Azure 虛擬機器上自動化 Linux 上的 SQL Server 部署。
Ansible 是一項開放原始碼產品,可自動佈建雲端、進行組態管理和應用程式部署。
Ansible 劇本可讓您指示 Ansible 設定您的環境。 劇本會使用 YAML 編碼,讓一般人能夠讀取。
必要條件
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
使用 Azure CLI 建立新的資源群組,其中包含三個 Azure 虛擬機器 (VM):
建立 Azure VM,執行 Red Hat Enterprise Linux (RHEL) 8.5 或更高版本。 此 VM 成為「控制器節點」。
建立執行 RHEL 的 Azure VM,以作為第一個受控節點使用。
建立執行 Ubuntu Server 的 Azure VM,以作為第二個受控節點使用。
概觀
您設定 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 金鑰。 當您執行命令時,系統會提示您接受預設值。 完成時,您將會有私密金鑰和公開金鑰組。
將公開金鑰複製到受控節點
在每個受控節點上,您必須使用
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,請記得將其移除。 如果您在新的資源群組中建立了三個 VM,您可以使用 Azure CLI 來移除該資源群組內的所有資源。