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.
Ansible'ı Yükleme: Aşağıdaki seçeneklerden birini yapın:
2. SSH anahtar çifti oluşturma
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
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
Örnek Ansible kodunu test edip çalıştırmak ve geçerli dizin yapmak için bir dizin oluşturun.
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
Aşağıdaki kodu olarak
delete_rg.yml
kaydedin.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
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 vedebug
bölümü nedeniyle, komut tamamlandığında sonuçlar görüntülenir.
- Playbook'un