Een virtuele Linux-machine maken in Azure met Ansible

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Dit artikel bevat een voorbeeld van een Ansible-playbook voor het configureren van een virtuele Linux-machine.

In dit artikel leert u het volgende:

  • Een brongroep maken
  • Een virtueel netwerk maken
  • Een openbaar IP-adres maken
  • Een netwerkbeveiligingsgroep maken
  • Een virtuele netwerkinterfacekaart maken
  • Maak een virtuele machine

1. Uw omgeving configureren

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

2. Een SSH-sleutelpaar maken

  1. Voer de volgende opdracht uit. Geef de bestanden op die moeten worden gemaakt in de volgende map: /home/azureuser/.ssh/authorized_keys

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Kopieer de inhoud van het openbare-sleutelbestand. Standaard heeft het openbare-sleutelbestand de naam id_rsa.pub. De waarde is een lange tekenreeks die begint met 'ssh-rsa'. U hebt deze waarde nodig in de volgende stap.

3. Het Ansible-playbook implementeren

  1. Maak een map waarin u de voorbeeldcode van Ansible wilt testen en uitvoeren en deze de huidige map kunt maken.

  2. Maak een bestand met de naam main.yml en voeg de volgende code in. Vervang de <key_data> tijdelijke aanduiding door de waarde van de openbare sleutel uit de vorige stap.

    - 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. Voer het playbook uit

Voer ansible-playbook uit om het Ansible-playbook uit te voeren.

ansible-playbook main.yml

5. Controleer de resultaten

Voer az vm list uit om te controleren of de virtuele machine is gemaakt.

az vm list -d -o table --query "[?name=='myVM']"

6. Verbinding maken naar de VIRTUELE machine

Voer de SSH-opdracht uit om verbinding te maken met uw nieuwe Linux-VM. Vervang de tijdelijke aanduiding voor ip-adressen <> door het IP-adres uit de vorige stap.

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

Resources opschonen

  1. Sla de volgende code op als delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Voer het playbook uit met behulp van de ansible-playbook-opdracht . Vervang de tijdelijke aanduiding door de naam van de resourcegroep die u wilt verwijderen. Alle resources in de resourcegroep worden verwijderd.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Belangrijkste punten:

    • Vanwege de register variabele en debug sectie van het playbook worden de resultaten weergegeven wanneer de opdracht is voltooid.

Volgende stappen