Schnellstart: Erstellen eines virtuellen Linux-Computers in Azure mithilfe von AnsibleQuickstart: Configure Linux virtual machines in Azure using Ansible

Ansible nutzt eine deklarative Sprache und ermöglicht Ihnen dadurch das Erstellen, Konfigurieren und Bereitstellen von Azure-Ressourcen über Ansible-Playbooks.Using a declarative language, Ansible allows you to automate the creation, configuration, and deployment of Azure resources via Ansible playbooks. Dieser Artikel enthält ein Ansible-Beispielplaybook für die Konfiguration von virtuellen Linux-Computern.This article presents a sample Ansible playbook for configuring Linux virtual machines. Das vollständige Ansible-Playbook finden Sie am Ende dieses Artikels.The complete Ansible playbook is listed at the end of this article.

VoraussetzungenPrerequisites

  • Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Erstellen einer RessourcengruppeCreate a resource group

Ansible benötigt eine Ressourcengruppe, in der Ihre Ressourcen bereitgestellt werden.Ansible needs a resource group in which your resources are deployed. Der folgende Abschnitt eines Ansible-Beispielplaybooks erstellt eine Ressourcengruppe namens myResourceGroup am Standort eastus:The following sample Ansible playbook section creates a resource group named myResourceGroup in the eastus location:

- name: Create resource group
  azure_rm_resourcegroup:
    name: myResourceGroup
    location: eastus

Erstellen eines virtuellen NetzwerksCreate a virtual network

Beim Erstellen eines virtuellen Azure-Computers müssen Sie ein virtuelles Netzwerk erstellen oder ein vorhandenes virtuelles Netzwerk verwenden.When you create an Azure virtual machine, you must create a virtual network or use an existing virtual network. Außerdem müssen Sie entscheiden, wie auf Ihre virtuellen Computer im virtuellen Netzwerk zugegriffen werden soll.You also need to decide how your virtual machines are intended to be accessed on the virtual network. Der folgende Abschnitt eines Ansible-Beispielplaybooks erstellt ein virtuelles Netzwerk mit dem Namen myVnet im Adressbereich 10.0.0.0/16:The following sample Ansible playbook section creates a virtual network named myVnet in the 10.0.0.0/16 address space:

- name: Create virtual network
  azure_rm_virtualnetwork:
    resource_group: myResourceGroup
    name: myVnet
    address_prefixes: "10.0.0.0/16"

Alle in einem virtuellen Netzwerk bereitgestellten Azure-Ressourcen werden in einem Subnetz innerhalb eines virtuellen Netzwerks bereitgestellt.All Azure resources deployed into a virtual network are deployed into a subnet within a virtual network.

Der folgende Abschnitt eines Ansible-Beispielplaybooks erstellt ein Subnetz mit dem Namen mySubnet im virtuellen Netzwerk myVnet:The following sample Ansible playbook section creates a subnet named mySubnet in the myVnet virtual network:

- name: Add subnet
  azure_rm_subnet:
    resource_group: myResourceGroup
    name: mySubnet
    address_prefix: "10.0.1.0/24"
    virtual_network: myVnet

Erstellen einer öffentlichen IP-AdresseCreate a public IP address

Öffentliche IP-Adressen ermöglichen Internetressourcen die eingehende Kommunikation mit Azure-Ressourcen.Public IP addresses allow Internet resources to communicate inbound to Azure resources. Öffentliche IP-Adressen ermöglichen Azure-Ressourcen außerdem die ausgehende Kommunikation mit öffentlichen Azure-Diensten.Public IP addresses also enable Azure resources to communicate outbound to public-facing Azure services. In beiden Szenarien wird der Ressource, auf die zugegriffen wird, eine IP-Adresse zugewiesen.In both scenarios, an IP address assigned to the resource being accessed. Die Adresse ist für die Ressource reserviert, bis Sie die Zuweisung aufheben.The address is dedicated to the resource until you unassign it. Wenn einer Ressource keine öffentliche IP-Adresse zugewiesen ist, kann die Ressource trotzdem ausgehend mit dem Internet kommunizieren.If a public IP address isn't assigned to a resource, the resource can still communicate outbound to the Internet. Die Verbindung erfolgt, indem Azure dynamisch eine verfügbare IP-Adresse zuweist.The connection is made by Azure dynamically assigning an available IP address. Die dynamisch zugewiesene Adresse ist nicht für die Ressource reserviert.The dynamically assigned address isn't dedicated to the resource.

Der folgende Abschnitt eines Ansible-Beispielplaybooks erstellt eine öffentliche IP-Adresse mit dem Namen myPublicIP:The following sample Ansible playbook section creates a public IP address named myPublicIP:

- name: Create public IP address
  azure_rm_publicipaddress:
    resource_group: myResourceGroup
    allocation_method: Static
    name: myPublicIP

Erstellen einer NetzwerksicherheitsgruppeCreate a network security group

Netzwerksicherheitsgruppen filtern den Netzwerkdatenverkehr zwischen Azure-Ressourcen in einem virtuellen Netzwerk.Network security groups filter network traffic between Azure resources in a virtual network. Es werden Sicherheitsregeln definiert, die eingehenden und ausgehenden Datenverkehr von und zu Azure-Ressourcen steuern.Security Rules are defined that govern inbound and outbound traffic to and from Azure resources. Weitere Informationen zu Azure-Ressourcen und Netzwerksicherheitsgruppen finden Sie unter Integration virtueller Netzwerke für Azure-Dienste.For more information about Azure resources and network security groups, see Virtual network integration for Azure services

Mit dem folgenden Playbook wird eine Netzwerksicherheitsgruppe namens myNetworkSecurityGroup erstellt.The following playbook creates a network security group named myNetworkSecurityGroup. Die Netzwerksicherheitsgruppe schließt eine Regel ein, die SSH-Datenverkehr an TCP-Port 22 zulässt.The network security group includes a rule that allows SSH traffic on TCP port 22.

- 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

Erstellen einer virtuellen NetzwerkadapterkarteCreate a virtual network interface card

Ein virtueller Netzwerkadapterkarte verbindet Ihren virtuellen Computer mit einem angegebenen virtuellen Netzwerk, einer öffentlichen IP-Adresse und einer Netzwerksicherheitsgruppe.A virtual network interface card connects your virtual machine to a given virtual network, public IP address, and network security group.

Im folgenden Abschnitt eines Ansible-Beispielplaybooks wird die virtuelle Netzwerkadapterkarte myNIC erstellt, die mit den von Ihnen erstellen virtuellen Netzwerkressourcen verbunden ist:The following section in a sample Ansible playbook section creates a virtual network interface card named myNIC connected to the virtual networking resources you've created:

- 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

Erstellen eines virtuellen ComputersCreate a virtual machine

Im letzten Schritt wird ein virtueller Computer erstellt, der alle Ressourcen verwendet, die Sie in den vorherigen Abschnitten dieses Artikels erstellt haben.The final step is to create a virtual machine that uses all the resources you've created in the previous sections of this article.

Mit dem Abschnitt des Ansible-Beispielplaybooks in diesem Abschnitt wird ein virtueller Computer namens myVM erstellt und die virtuelle Netzwerkadapterkarte myNIC angefügt.The sample Ansible playbook section presented in this section creates a virtual machine named myVM and attaches the virtual network interface card named myNIC. Ersetzen Sie den Platzhalter „<your-key-data>“ durch die Daten Ihres eigenen öffentlichen Schlüssels.Replace the <your-key-data> placeholder with your own complete public key data.

- 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: <your-key-data>
    network_interfaces: myNIC
    image:
      offer: CentOS
      publisher: OpenLogic
      sku: '7.5'
      version: latest

Vollständiges Ansible-BeispielplaybookComplete sample Ansible playbook

Dieser Abschnitt enthält das gesamte Ansible-Beispielplaybook, das Sie im Rahmen dieses Artikels erstellt haben.This section lists the entire sample Ansible playbook that you've built up over the course of this article.

- 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: Dump public IP for VM which will be created
    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: <your-key-data>
      network_interfaces: myNIC
      image:
        offer: CentOS
        publisher: OpenLogic
        sku: '7.5'
        version: latest

Ausführen des Ansible-BeispielplaybooksRun the sample Ansible playbook

In diesem Abschnitt wird die Ausführung des in diesem Artikel vorgestellten Ansible-Beispielplaybooks Schritt für Schritt erläutert.This section walks you through running the sample Ansible playbook presented in this article.

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Öffnen Sie Cloud Shell.Open Cloud Shell.

  3. Erstellen Sie für Ihr Playbook eine Datei namens azure_create_complete_vm.yml, und öffnen Sie sie wie folgt im vi-Editor:Create a file (to contain your playbook) named azure_create_complete_vm.yml, and open it in the VI editor, as follows:

    vi azure_create_complete_vm.yml
    
  4. Drücken Sie die I-TASTE, um den Einfügemodus zu starten.Enter insert mode by selecting the I key.

  5. Fügen Sie das vollständige Ansible-Beispielplaybook in den Editor ein.Paste the complete sample Ansible playbook into the editor.

  6. Drücken Sie die ESC-TASTE, um den Einfügemodus zu beenden.Exit insert mode by selecting the Esc key.

  7. Speichern Sie die Datei, und geben Sie den folgenden Befehl ein, um den vi-Editor zu schließen:Save the file and exit the vi editor by entering the following command:

    :wq
    
  8. Führen Sie das Ansible-Beispielplaybook aus.Run the sample Ansible playbook.

    ansible-playbook azure_create_complete_vm.yml
    
  9. Die Ausgabe sieht etwa wie im folgenden Beispiel aus, das zeigt, dass erfolgreich ein virtueller Computer erstellt wurde:The output looks similar to the following where you can see that a virtual machine has been successfully created:

    PLAY [Create Azure VM] ****************************************************
    
    TASK [Gathering Facts] ****************************************************
    ok: [localhost]
    
    TASK [Create resource group] *********************************************
    changed: [localhost]
    
    TASK [Create virtual network] *********************************************
    changed: [localhost]
    
    TASK [Add subnet] *********************************************************
    changed: [localhost]
    
    TASK [Create public IP address] *******************************************
    changed: [localhost]
    
    TASK [Dump public IP for VM which will be created] ********************************************************************
    ok: [localhost] => {
       "msg": "The public IP is <ip-address>."
    }
    
    TASK [Create Network Security Group that allows SSH] **********************
    changed: [localhost]
    
    TASK [Create virtual network interface card] *******************************
    changed: [localhost]
    
    TASK [Create VM] **********************************************************
    changed: [localhost]
    
    PLAY RECAP ****************************************************************
    localhost                  : ok=8    changed=7    unreachable=0    failed=0
    
  10. Für den Zugriff auf den virtuellen Linux-Computer wird der SSH-Befehl verwendet.The SSH command is used to access your Linux VM. Ersetzen Sie den Platzhalter „<ip-address>“ durch die IP-Adresse aus dem vorherigen Schritt.Replace the <ip-address> placeholder with the IP address from the previous step.

    ssh azureuser@<ip-address>
    

Nächste SchritteNext steps