共用方式為


開始使用:在 Azure VM 上設定 Ansible

本文說明如何在 Azure 的 Ubuntu VM 上安裝 Ansible

在本文中,您將學會如何:

  • 建立資源群組
  • 建立 Ubuntu 虛擬機器
  • 在虛擬機器上安裝 Ansible
  • 透過 SSH 連線到虛擬機器
  • 在虛擬機器上設定 Ansible

先決條件

  • Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶
  • Azure 服務主體建立服務主體,並記下下列值:appIddisplayName密碼租戶

建立虛擬機

  1. 建立 Azure 資源群組。

    az group create --name QuickstartAnsible-rg --location eastus
    

    您可能需要將 --location 參數替換為適合您環境的值。

  2. 建立 Ansible 的 Azure 虛擬機器。

    az vm create \
    --resource-group QuickstartAnsible-rg \
    --name QuickstartAnsible-vm \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --admin-password <password>
    

    更換 <password> 您的密碼。

  3. 取得 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 模組

  1. 在成功連線到虛擬主機之後,請創建並打開名為credentials的檔案:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. 將下列行插入檔案中。 將佔位符替換為服務主體值。

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. 儲存並關閉檔案。

選項 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 劇本

  1. 將下列程式碼儲存為 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> 取代為您的值。

  2. 使用 ansible-playbook 執行劇本。

    ansible-playbook create_rg.yml
    

了解更多關於 azure.azcollection

清理資源

  1. 將下列程式碼儲存為 delete_rg.yml

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. 使用 ansible-playbook 命令執行教戰手冊。 將佔位符取代為要刪除的資源組名稱。 資源群組內的所有資源都會被刪除。

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    重點

    • 由於教戰手冊中的register變數和debug區段,當命令完成時,結果會顯示。

後續步驟