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

警告

本文參考 CentOS,亦即接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

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

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

  • 建立資源群組
  • 建立 CentOS 虛擬機
  • 在虛擬機上安裝 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 CentOS85Gen2 \
    --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

具有 azure_rm 模組的 Ansible 2.9

執行下列命令,在 Centos 上設定 Ansible 2.9:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible.
pip3 install "ansible==2.9.17"

# Install Ansible azure_rm module for interacting with Azure.
pip3 install ansible[azure]

Ansible 2.10 搭配 azure.azcollection

執行下列命令以在 Centos 上設定 Ansible:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible az collection for interacting with Azure.
ansible-galaxy collection install azure.azcollection

# Install Ansible modules for Azure
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements-azure.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 2.9 with azure_rm module
ansible localhost -m azure_rm_resourcegroup -a "name=ansible-test location=eastus"

#Ansible 2.10 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

    具有 azure_rm 模組的 Ansible 2.9

    ---
    - hosts: localhost
      connection: local
      tasks:
        - name: Creating resource group
          azure_rm_resourcegroup:
            name: "<resource_group_name"
            location: "<location>"
    

    Ansible 2.10 搭配 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區段,因此命令完成時會顯示結果。

下一步