Skapa virtuella Linux-datorer i Azure med Ansible
Den här artikeln innehåller ett exempel på en Ansible-spelbok för att konfigurera en virtuell Linux-dator.
I den här artikeln kan du se hur du:
- Skapa en resursgrupp
- Skapa ett virtuellt nätverk
- Skapa en offentlig IP-adress
- Skapa en nätverkssäkerhetsgrupp
- Skapa ett kort för virtuellt nätverksgränssnitt
- Skapa en virtuell dator
1. Konfigurera din miljö
- Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Installera Ansible: Gör något av följande alternativ:
- Installera och konfigurera Ansible på en virtuell Linux-dator
- Konfigurera Azure Cloud Shell
2. Skapa ett SSH-nyckelpar
Kör följande kommando. När du uppmanas till det anger du de filer som ska skapas i följande katalog:
/home/azureuser/.ssh/authorized_keys
.ssh-keygen -m PEM -t rsa -b 4096
Kopiera innehållet i den offentliga nyckelfilen. Som standard heter
id_rsa.pub
den offentliga nyckelfilen . Värdet är en lång sträng som börjar med "ssh-rsa ". Du behöver det här värdet i nästa steg.
3. Implementera Ansible-spelboken
Skapa en katalog där du kan testa och köra ansible-exempelkoden och göra den till den aktuella katalogen.
Skapa en fil med namnet
main.yml
och infoga följande kod.<key_data>
Ersätt platshållaren med det offentliga nyckelvärdet från föregående steg.- 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. Kör spelboken
Kör ansible-playbook för att köra Ansible-spelboken.
ansible-playbook main.yml
5. Kontrollera resultatet
Kör az vm list för att verifiera att den virtuella datorn har skapats.
az vm list -d -o table --query "[?name=='myVM']"
6. Anslut till den virtuella datorn
Kör SSH-kommandot för att ansluta till din nya virtuella Linux-dator. <Ersätt platshållaren för ip-adress> med IP-adressen från föregående steg.
ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa
Rensa resurser
Spara följande kod som
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Kör spelboken med kommandot ansible-playbook . Ersätt platshållaren med namnet på den resursgrupp som ska tas bort. Alla resurser i resursgruppen tas bort.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Viktiga punkter:
- På grund av variabeln
register
ochdebug
avsnittet i spelboken visas resultatet när kommandot har slutförts.
- På grund av variabeln