本文提供用於設定 Linux 虛擬機器的範例 Ansible 教戰手冊。
在本文中,您將學會如何:
- 建立資源群組
- 建立虛擬網路
- 建立公用 IP 位址
- 建立網路安全性群組
- 建立虛擬網路介面卡
- 建立虛擬機
1. 配置您的環境
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
安裝 Ansible:執行下列其中一個選項:
- 在Linux虛擬機器上安裝及設定Ansible
- 設定 Azure Cloud Shell
2. 建立 SSH 金鑰對
執行下列命令。 出現提示時,請指定要在下列目錄中建立的檔案:
/home/azureuser/.ssh/authorized_keys。ssh-keygen -m PEM -t rsa -b 4096複製公開金鑰檔案的內容。 依預設,公開金鑰檔案名為
id_rsa.pub。 該值是一個以“ssh-rsa”開頭的長字符串。 您將在下一個步驟中需要此值。
3. 實作 Ansible 劇本
建立一個目錄,用於測試和執行範例 Ansible 程式碼,並將其設為目前目錄。
建立名為
main.yml的檔案,並插入下列程式碼。 將預留位置取代<key_data>為上一個步驟中的公開金鑰值。- name: Create Azure VM hosts: localhost connection: local tasks: - name: Create resource group azure_rm_resourcegroup: name: myResourceGroup location: eastus - name: Create virtual network azure_rm_virtualnetwork: resource_group: myResourceGroup name: myVnet address_prefixes: "10.0.0.0/16" - name: Add subnet azure_rm_subnet: resource_group: myResourceGroup name: mySubnet address_prefix: "10.0.1.0/24" virtual_network: myVnet - name: Create public IP address azure_rm_publicipaddress: resource_group: myResourceGroup allocation_method: Static name: myPublicIP register: output_ip_address - name: Public IP of VM debug: msg: "The public IP is {{ output_ip_address.state.ip_address }}." - name: Create Network Security Group that allows SSH azure_rm_securitygroup: resource_group: myResourceGroup name: myNetworkSecurityGroup rules: - name: SSH protocol: Tcp destination_port_range: 22 access: Allow priority: 1001 direction: Inbound - name: Create virtual network interface card azure_rm_networkinterface: resource_group: myResourceGroup name: myNIC virtual_network: myVnet subnet: mySubnet public_ip_name: myPublicIP security_group: myNetworkSecurityGroup - name: Create VM azure_rm_virtualmachine: resource_group: myResourceGroup name: myVM vm_size: Standard_DS1_v2 admin_username: azureuser ssh_password_enabled: false ssh_public_keys: - path: /home/azureuser/.ssh/authorized_keys key_data: "<key_data>" network_interfaces: myNIC image: offer: 0001-com-ubuntu-server-jammy publisher: Canonical sku: 22_04-lts version: latest
4. 執行劇本
執行 ansible-playbook 以運行 Ansible 劇本。
ansible-playbook main.yml
5. 驗證結果
執行 az vm list 以確認已建立 VM。
az vm list -d -o table --query "[?name=='myVM']"
6. 連線到虛擬機器
執行 SSH 命令以連線到新的 Linux VM。 將< ip 位址預留位置>替換為上一個步驟中的 IP 位址。
ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa
清理資源
將下列程式碼儲存為
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區段,當命令完成時,結果會顯示。
- 由於教戰手冊中的