開始使用:在 Azure VM 上設定 Ansible
本文說明如何在 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
搭配 azure.azcollection 的 Ansible
執行下列命令以在 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
。搭配 azure.azcollection 的 Ansible
- 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 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
區段,因此命令完成時會顯示結果。