本文說明如何在 Azure 的 Ubuntu VM 上安裝 Ansible 。
在本文中,您將學會如何:
- 建立資源群組
- 建立 Ubuntu 虛擬機器
- 在虛擬機器上安裝 Ansible
- 透過 SSH 連線到虛擬機器
- 在虛擬機器上設定 Ansible
先決條件
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Azure 服務主體: 建立服務主體,並記下下列值:appId、displayName、密碼 和 租戶。
建立虛擬機
建立 Azure 資源群組。
az group create --name QuickstartAnsible-rg --location eastus您可能需要將
--location參數替換為適合您環境的值。建立 Ansible 的 Azure 虛擬機器。
az vm create \ --resource-group QuickstartAnsible-rg \ --name QuickstartAnsible-vm \ --image Ubuntu2204 \ --admin-username azureuser \ --admin-password <password>更換
<password>您的密碼。取得 Azure 虛擬機器的公用 IP 位址。
az vm show -d -g QuickstartAnsible-rg -n QuickstartAnsible-vm --query publicIps -o tsv
透過 SSH 連線到您的虛擬機器
使用 SSH 命令,連接到虛擬機的公共 IP 地址。
ssh azureuser@<vm_ip_address>
使用先前命令中傳回的適當值替換<vm_ip_address>。
在虛擬機器上安裝 Ansible
Ansible 與 azure.azcollection 搭配使用
執行下列命令,在 Ubuntu 上設定 Ansible:
#!/bin/bash
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
# Install Ansible az collection for interacting with Azure. (optional)
ansible-galaxy collection install azure.azcollection --force
# Install Ansible modules for Azure (optional)
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.txt
重點:
- Ansible 控制節點需要安裝 Python 2 (2.7 版) 或 Python 3 (3.5 版及更新版本)。 Ansible 4.0.0 和 ansible-core 2.11 對 Python 3.8 具有軟依賴性,但功能版本較低。 但是,Ansible 5.0.0 和 ansible-core 2.12 將需要 3.8 及更新版本。
建立 Azure 認證
若要設定 Ansible 認證資料,您需要下列資訊:
- 您的 Azure 訂用帳戶識別碼和租用戶識別碼
- 服務主體應用程式識別碼和密鑰
使用下列其中一種技術來設定 Ansible 認證:
選項 1:建立 Ansible 認證檔案
在本節中,您會建立本機認證檔、以提供認證給 Ansible。 基於安全理由,認證檔案只能在開發環境中使用。
如需定義 Ansible 認證的詳細資訊,請參閱 提供 認證給 Azure 模組。
在成功連線到虛擬主機之後,請創建並打開名為
credentials的檔案:mkdir ~/.azure vi ~/.azure/credentials將下列行插入檔案中。 將佔位符替換為服務主體值。
[default] subscription_id=<subscription_id> client_id=<service_principal_app_id> secret=<service_principal_password> tenant=<service_principal_tenant_id>儲存並關閉檔案。
選項 2:定義 Ansible 環境變數
在主機虛擬機器上,匯出服務主體值以設定您的 Ansible 認證資料。
export AZURE_SUBSCRIPTION_ID=<subscription_id>
export AZURE_CLIENT_ID=<service_principal_app_id>
export AZURE_SECRET=<service_principal_password>
export AZURE_TENANT=<service_principal_tenant_id>
測試 Ansible 安裝
您現在已經安裝並設定了 Ansible 的虛擬機器!
本節說明如何在新的 Ansible 組態中建立測試資源群組。 如果您不需要這樣做,可以跳過本節。
選項 1:使用即時 Ansible 命令
執行下列臨機操作 Ansible 命令以建立資源群組:
#Ansible with azure.azcollection
ansible localhost -m azure.azcollection.azure_rm_resourcegroup -a "name=<resource_group_name> location=<location>"
請將 <resource_group_name> 和 <location> 取代為您的值。
選項 2:撰寫並執行 Ansible 劇本
將下列程式碼儲存為
create_rg.yml。Ansible 與 azure.azcollection 搭配使用
- hosts: localhost connection: local collections: - azure.azcollection tasks: - name: Creating resource group azure_rm_resourcegroup: name: "<resource_group_name" location: "<location>"請將
<resource_group_name>和<location>取代為您的值。使用 ansible-playbook 執行劇本。
ansible-playbook create_rg.yml
了解更多關於 azure.azcollection。
清理資源
將下列程式碼儲存為
delete_rg.yml。--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg使用 ansible-playbook 命令執行教戰手冊。 將佔位符取代為要刪除的資源組名稱。 資源群組內的所有資源都會被刪除。
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"重點:
- 由於教戰手冊中的
register變數和debug區段,當命令完成時,結果會顯示。
- 由於教戰手冊中的