Criar máquinas virtuais do Linux no Azure usando o Ansible

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

Este artigo apresenta um guia estratégico de exemplo do Ansible para configurar máquinas virtuais do Linux.

Neste artigo, você aprenderá como:

  • Criar um grupo de recursos
  • Criar uma rede virtual
  • Criar um endereço IP público
  • Criar um grupo de segurança de rede
  • Criar uma placa de adaptador de rede virtual
  • Criar uma máquina virtual

1. Configurar seu ambiente

  • Assinatura do Azure: Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

2. Criar um par de chaves SSH

  1. Execute o comando a seguir. 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
    
  2. 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". Esse valor será necessário na próxima etapa.

3. Implementar o guia estratégico do Ansible

  1. Crie um diretório no qual testar e executar o código de exemplo do Ansible e transforme ele no diretório atual.

  2. Crie um arquivo chamado main.yml, depois insira o código a seguir. Substitua o texto do 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. Executar o guia estratégico

Execute ansible-playbook para executar o guia estratégico 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 à nova VM do Linux. Substitua o <espaço reservado de endereço> IP pelo endereço IP da etapa anterior.

ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa

Limpar os recursos

  1. 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
    
  2. Execute o guia estratégico 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 register e à seção debug do guia estratégico, os resultados são exibidos quando o comando é concluído.

Próximas etapas