Delen via


Een virtuele Linux-machine maken in Azure met Ansible

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: 0001-com-ubuntu-server-jammy
            publisher: Canonical
            sku: 22_04-lts
            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 met 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