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.

2. Crie um par de chaves SSH

  1. 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
    
  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". Você precisará desse valor na próxima etapa.

3. Implemente o manual do Ansible

  1. Crie um diretório no qual testar e executar o código Ansible de exemplo e torne-o o diretório atual.

  2. 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)

  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 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.

Próximos passos