Sdílet prostřednictvím


Vytvoření virtuálních počítačů s Linuxem v Azure pomocí Ansible

Tento článek představuje ukázkový playbook Ansible pro konfiguraci virtuálního počítače s Linuxem.

V tomto článku se naučíte:

  • Vytvoření skupiny zdrojů
  • Vytvoření virtuální sítě
  • Vytvoření veřejné IP adresy
  • Vytvoření skupiny zabezpečení sítě
  • Vytvoření karty virtuálního síťového rozhraní
  • Vytvoření virtuálního počítače

1. Konfigurace prostředí

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

2. Vytvoření páru klíčů SSH

  1. Spusťte následující příkaz. Po zobrazení výzvy zadejte soubory, které se mají vytvořit v následujícím adresáři: /home/azureuser/.ssh/authorized_keys.

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Zkopírujte obsah souboru veřejného klíče. Ve výchozím nastavení má soubor veřejného klíče název id_rsa.pub. Hodnota je dlouhý řetězec začínající řetězcem "ssh-rsa". Tuto hodnotu budete potřebovat v dalším kroku.

3. Implementace playbooku Ansible

  1. Vytvořte adresář, ve kterém chcete otestovat a spustit ukázkový kód Ansible a nastavit ho jako aktuální adresář.

  2. Vytvořte soubor s názvem main.yml a vložte následující kód. <key_data> Zástupný symbol nahraďte hodnotou veřejného klíče z předchozího kroku.

    - 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. Spusťte skript

Spusťte ansible-playbook, abyste spustili playbook Ansible.

ansible-playbook main.yml

5. Ověřte výsledky.

Spuštěním příkazu az vm list ověřte, že byl virtuální počítač vytvořen.

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

6. Připojení k virtuálnímu počítači

Spuštěním příkazu SSH se připojte k novému virtuálnímu počítači s Linuxem. <Zástupný symbol IP-adresy> nahraďte IP adresou z předchozího kroku.

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

Vyčistěte zdroje

  1. Uložte následující kód jako delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Spusťte playbook pomocí příkazu ansible-playbook . Zástupný symbol nahraďte názvem skupiny prostředků, která se má odstranit. Odstraní se všechny prostředky v rámci skupiny prostředků.

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

    Klíčové body:

    • register Vzhledem k proměnné a debug části playbooku se výsledky zobrazí po dokončení příkazu.

Další kroky