Tworzenie maszyn wirtualnych z systemem Linux na platformie Azure przy użyciu rozwiązania Ansible
W tym artykule przedstawiono przykładowy podręcznik rozwiązania Ansible do konfigurowania maszyny wirtualnej z systemem Linux.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Tworzenie grupy zasobów
- Tworzenie sieci wirtualnej
- Tworzenie publicznego adresu IP
- Tworzenie sieciowej grupy zabezpieczeń
- Tworzenie wirtualnej karty sieciowej
- Tworzenie maszyny wirtualnej
1. Konfigurowanie środowiska
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Zainstaluj oprogramowanie Ansible: Wykonaj jedną z następujących opcji:
- Instalowanie i konfigurowanie rozwiązania Ansible na maszynie wirtualnej z systemem Linux
- Konfigurowanie usługi Azure Cloud Shell
2. Tworzenie pary kluczy SSH
Uruchom następujące polecenie. Po wyświetleniu monitu określ pliki do utworzenia w następującym katalogu:
/home/azureuser/.ssh/authorized_keys
.ssh-keygen -m PEM -t rsa -b 4096
Skopiuj zawartość pliku klucza publicznego. Domyślnie plik klucza publicznego ma nazwę
id_rsa.pub
. Wartość jest długim ciągiem rozpoczynającym się od ciągu "ssh-rsa". Ta wartość będzie potrzebna w następnym kroku.
3. Implementowanie podręcznika rozwiązania Ansible
Utwórz katalog, w którym chcesz przetestować i uruchomić przykładowy kod rozwiązania Ansible i ustawić go jako bieżący katalog.
Utwórz plik o nazwie
main.yml
i wstaw następujący kod.<key_data>
Zastąp symbol zastępczy wartością klucza publicznego z poprzedniego 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. Uruchamianie podręcznika
Uruchom podręcznik ansible-playbook , aby uruchomić podręcznik rozwiązania Ansible.
ansible-playbook main.yml
5. Sprawdź wyniki
Uruchom polecenie az vm list , aby sprawdzić, czy maszyna wirtualna została utworzona.
az vm list -d -o table --query "[?name=='myVM']"
6. Nawiązywanie połączenia z maszyną wirtualną
Uruchom polecenie SSH, aby nawiązać połączenie z nową maszyną wirtualną z systemem Linux. Zastąp <symbol zastępczy adresu> IP adresem IP z poprzedniego kroku.
ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa
Czyszczenie zasobów
Zapisz następujący kod jako
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Uruchom podręcznik przy użyciu polecenia ansible-playbook . Zastąp symbol zastępczy nazwą grupy zasobów, która ma zostać usunięta. Wszystkie zasoby w grupie zasobów zostaną usunięte.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Kluczowe punkty:
- Ze względu na zmienną
register
idebug
sekcję podręcznika wyniki są wyświetlane po zakończeniu polecenia.
- Ze względu na zmienną