Criar máquinas virtuais Linux no Azure usando o Ansible
Atenção
Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.
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: CentOS publisher: OpenLogic sku: '7.5' 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
Próximos passos
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários