快速入门:在 Azure VM 上配置 Ansible
本文介绍如何在 Azure 中的 Ubuntu VM 上安装 Ansible。
在本文中,学习如何:
- 创建资源组
- 创建 Ubuntu 虚拟机
- 在虚拟机上安装 Ansible
- 通过 SSH 连接到虚拟机
- 在虚拟机上配置 Ansible
- Azure 订阅:如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
- Azure 服务主体:创建服务主体,记下以下值:appId、displayName、password 和 tenant。
创建 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 命令连接到虚拟机的公共 IP 地址。
ssh azureuser@<vm_ip_address>
将 <vm_ip_address>
替换为前面的命令中返回的适当值。
运行以下命令,在 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 及更高版本。
需要以下信息才能配置 Ansible 凭据:
- Azure 订阅 ID 和租户 ID
- 服务主体应用程序 ID 和密码
使用以下方法之一配置 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>
保存并关闭该文件。
在主机虚拟机上,导出服务主体值来配置 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 命令以创建资源组:
#Ansible with azure.azcollection
ansible localhost -m azure.azcollection.azure_rm_resourcegroup -a "name=<resource_group_name> location=<location>"
将 <resource_group_name>
和 <location>
替换为自定义值。
将以下代码另存为
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 运行 playbook。
ansible-playbook create_rg.yml
详细了解 azure.azcollection。
运行 az group delete 以删除资源组。 将删除资源组内的所有资源。
az group delete --name <resource_group>
使用 az group show 验证资源组是否已删除。
az group show --name <resource_group>