使用 Ansible 管理 Azure 中的 Linux 虚拟机
使用 Ansible 可以在环境中自动部署和配置资源。 在本文中,你将使用 Ansible playbook 来启动和停止 Linux 虚拟机。
- Azure 订阅:如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
安装 Ansible - 执行以下任一选项:
- 在 Linux 虚拟机上安装和配置 Ansible
- 配置 Azure Cloud Shell,另外,如果无法访问 Linux 虚拟机,请使用 Ansible 创建虚拟机。
在本部分中,你将使用 Ansible 解除分配(停止)Azure 虚拟机。
登录 Azure 门户。
打开 Cloud Shell。
创建一个名为
azure-vm-stop.yml
的文件,并在编辑器中将其打开:code azure-vm-stop.yml
将以下示例代码粘贴到编辑器中:
- name: Stop Azure VM hosts: localhost connection: local tasks: - name: Stop virtual machine azure_rm_virtualmachine: resource_group: {{ resource_group_name }} name: {{ vm_name }} allocated: no
将占位符
{{ resource_group_name }}
和{{ vm_name }}
替换成自己的值。保存文件并退出编辑器。
使用 ansible-playbook 运行 playbook
ansible-playbook azure-vm-stop.yml
运行 playbook 后,可看到类似于以下结果的输出:
PLAY [Stop Azure VM] ******************************************************** TASK [Gathering Facts] ****************************************************** ok: [localhost] TASK [Deallocate the Virtual Machine] *************************************** changed: [localhost] PLAY RECAP ****************************************************************** localhost : ok=2 changed=1 unreachable=0 failed=0
在本部分中,你将使用 Ansible 启动已解除分配(停止)的 Azure 虚拟机。
登录 Azure 门户。
打开 Cloud Shell。
创建一个名为
azure-vm-start.yml
的文件,并在编辑器中将其打开:code azure-vm-start.yml
将以下示例代码粘贴到编辑器中:
- name: Start Azure VM hosts: localhost connection: local tasks: - name: Start virtual machine azure_rm_virtualmachine: resource_group: {{ resource_group_name }} name: {{ vm_name }} started: yes
将占位符
{{ resource_group_name }}
和{{ vm_name }}
替换成自己的值。保存文件并退出编辑器。
使用 ansible-playbook 运行 playbook
ansible-playbook azure-vm-start.yml
运行 playbook 后,可看到类似于以下结果的输出:
PLAY [Start Azure VM] ******************************************************** TASK [Gathering Facts] ****************************************************** ok: [localhost] TASK [Start the Virtual Machine] ******************************************** changed: [localhost] PLAY RECAP ****************************************************************** localhost : ok=2 changed=1 unreachable=0 failed=0