Creación de una máquina virtual Linux en Azure con Ansible
En este artículo, se presenta un cuaderno de estrategias de Ansible de ejemplo para configurar una máquina virtual Linux.
En este artículo aprenderá a:
- Crear un grupo de recursos
- Creación de una red virtual
- Crear una dirección IP pública
- Creación de un grupo de seguridad de red
- Creación de una tarjeta de interfaz de red virtual
- Creación de una máquina virtual
1. Configurar su entorno
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Instalación de Ansible: realice una de las siguientes opciones:
- Instalar y configurar Ansible en una máquina virtual Linux
- Configuración de Azure Cloud Shell
2. Creación de un par de claves SSH
Ejecute el siguiente comando: Cuando se le solicite, especifique los archivos que se crearán en el directorio siguiente:
/home/azureuser/.ssh/authorized_keys
.ssh-keygen -m PEM -t rsa -b 4096
Copie el contenido del archivo de la clave pública. De manera predeterminada, el archivo de la clave pública se llama
id_rsa.pub
. El valor es una cadena larga que empieza por "ssh-rsa". Necesitará este valor en el paso siguiente.
3. Implementación del cuaderno de estrategias de Ansible
Cree un directorio en el que probar y ejecutar el código de ejemplo de Ansible y conviértalo en el directorio actual.
Cree un archivo llamado
main.yml
e inserte el siguiente código. Reemplace el marcador de posición<key_data>
por el valor de la clave pública del paso anterior.- 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. Ejecución del cuaderno de estrategias
Para la ejecución del cuaderno de estrategias de Ansible, ejecute el comando ansible-playbook.
ansible-playbook main.yml
5. Verificación de los resultados
Ejecute az vm list para comprobar que se ha creado la máquina virtual.
az vm list -d -o table --query "[?name=='myVM']"
6. Conexión a la máquina virtual
Ejecute el comando SSH para conectarse a la nueva máquina virtual Linux. Reemplace el marcador de posición <ip-address> por la dirección IP del paso anterior.
ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa
Limpieza de recursos
Guarde el código siguiente como
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Ejecute el cuaderno de estrategias mediante el comando ansible-playbook. Reemplace el marcador de posición por el nombre del grupo de recursos que se va a eliminar. Se eliminarán todos los recursos del grupo de recursos.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Puntos clave:
- Debido a la variable
register
y a la seccióndebug
del cuaderno de estrategias, los resultados se muestran cuando finaliza el comando.
- Debido a la variable