Criar máquinas virtuais Linux no Azure usando o Ansible
Este artigo apresenta um exemplo de manual do Ansible para configurar uma máquina virtual Linux.
Neste artigo, vai aprender a:
- Criar um grupo de recursos
- Criar uma rede virtual
- Crie um endereço IP público
- Criar um grupo de segurança de rede
- Criar uma interface de rede virtual
- Criar uma máquina virtual
1. Configure seu ambiente
- Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.
Instale o Ansible: execute uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual Linux
- Configurar o Azure Cloud Shell
2. Crie um par de chaves SSH
Execute o seguinte comando. Quando solicitado, especifique os arquivos a serem criados no seguinte diretório:
/home/azureuser/.ssh/authorized_keys
.ssh-keygen -m PEM -t rsa -b 4096
Copie o conteúdo do arquivo de chave pública. Por padrão, o arquivo de chave pública é chamado
id_rsa.pub
. O valor é uma cadeia de caracteres longa que começa com "ssh-rsa". Você precisará desse valor na próxima etapa.
3. Implemente o manual do Ansible
Crie um diretório no qual testar e executar o código Ansible de exemplo e torne-o o diretório atual.
Crie um arquivo chamado
main.yml
e insira o código a seguir. Substitua o espaço reservado<key_data>
pelo valor da chave pública da etapa anterior.- 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. Execute o manual
Execute o ansible-playbook para executar o playbook do Ansible.
ansible-playbook main.yml
5. Verificar os resultados
Execute az vm list para verificar se a VM foi criada.
az vm list -d -o table --query "[?name=='myVM']"
6. Conecte-se à VM
Execute o comando SSH para se conectar à sua nova VM Linux. Substitua o espaço reservado para endereço <> IP pelo endereço IP da etapa anterior.
ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa
Clean up resources (Limpar recursos)
Salve o código a seguir como
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Execute o playbook usando o comando ansible-playbook . Substitua o espaço reservado pelo nome do grupo de recursos a ser excluído. Todos os recursos dentro do grupo de recursos serão excluídos.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Pontos principais:
- Devido à variável e
debug
àregister
seção do playbook, os resultados são exibidos quando o comando é concluído.
- Devido à variável e