Ansible kullanarak Azure'da Linux sanal makineleri oluşturma

Bu makalede Linux sanal makinesini yapılandırmaya yönelik örnek bir Ansible playbook'u verilmiştir.

Bu makalede şunları öğreneceksiniz:

  • Kaynak grubu oluşturma
  • Sanal ağ oluşturma
  • Genel IP adresi oluşturma
  • Ağ güvenlik grubu oluşturma
  • Sanal ağ arabirimi kartı oluşturma
  • Sanal makine oluşturun

1. Ortamınızı yapılandırma

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

2. SSH anahtar çifti oluşturma

  1. Aşağıdaki komutu çalıştırın. İstendiğinde, aşağıdaki dizinde oluşturulacak dosyaları belirtin: /home/azureuser/.ssh/authorized_keys.

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Ortak anahtar dosyasının içeriğini kopyalayın. Varsayılan olarak, ortak anahtar dosyası olarak adlandırılır id_rsa.pub. Değer, "ssh-rsa" ile başlayan uzun bir dizedir. Sonraki adımda bu değere ihtiyacınız olacak.

3. Ansible playbook'unu uygulama

  1. Örnek Ansible kodunu test edip çalıştırmak ve geçerli dizin yapmak için bir dizin oluşturun.

  2. adlı main.yml bir dosya oluşturun ve aşağıdaki kodu ekleyin. Yer tutucuyu <key_data> önceki adımdaki ortak anahtar değeriyle değiştirin.

    - 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. Playbook'u çalıştırın

Ansible playbook'u çalıştırarak Ansible playbook'unu çalıştırın.

ansible-playbook main.yml

5. Sonuçları doğrulayın

VM'nin oluşturulduğunu doğrulamak için az vm list komutunu çalıştırın.

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

6. VM'ye bağlanma

Yeni Linux VM'nize bağlanmak için SSH komutunu çalıştırın. ip adresi> yer tutucusunun <yerine önceki adımdaki IP adresini yazın.

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

Kaynakları temizleme

  1. Aşağıdaki kodu olarak delete_rg.ymlkaydedin.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. ansible-playbook komutunu kullanarak playbook'u çalıştırın. Yer tutucuyu silinecek kaynak grubunun adıyla değiştirin. Kaynak grubundaki tüm kaynaklar silinir.

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

    Önemli noktalar:

    • Playbook'un register değişkeni ve debug bölümü nedeniyle, komut tamamlandığında sonuçlar görüntülenir.

Sonraki adımlar