Inicio rápido: Configuración de máquinas virtuales Linux en Azure con AnsibleQuickstart: Configure Linux virtual machines in Azure using Ansible

Mediante un lenguaje declarativo, Ansible permite automatizar la creación, configuración e implementación de recursos de Azure con los cuadernos de Ansible.Using a declarative language, Ansible allows you to automate the creation, configuration, and deployment of Azure resources via Ansible playbooks. En este artículo se presenta un cuaderno de estrategias de Ansible de ejemplo para configurar las máquinas virtuales Linux.This article presents a sample Ansible playbook for configuring Linux virtual machines. El cuaderno de Ansible completo aparece al final de este artículo.The complete Ansible playbook is listed at the end of this article.

Requisitos previosPrerequisites

  • Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Crear un grupo de recursosCreate a resource group

Ansible necesita un grupo de recursos en el que implementará todos los recursos.Ansible needs a resource group in which your resources are deployed. En la siguiente sección, el cuaderno de Ansible de ejemplo crea un grupo de recursos llamado myResourceGroup en la ubicación eastus:The following sample Ansible playbook section creates a resource group named myResourceGroup in the eastus location:

- name: Create resource group
  azure_rm_resourcegroup:
    name: myResourceGroup
    location: eastus

Creación de una red virtualCreate a virtual network

Cuando se crea una máquina virtual de Azure, es preciso crear una red virtual o usar una red virtual existente.When you create an Azure virtual machine, you must create a virtual network or use an existing virtual network. También es preciso decidir la forma en que pretende que se acceda a las máquinas virtuales de la red virtual.You also need to decide how your virtual machines are intended to be accessed on the virtual network. En la siguiente sección, el cuaderno de Ansible crea una red virtual llamada myVnet en el espacio de direcciones 10.0.0.0/16:The following sample Ansible playbook section creates a virtual network named myVnet in the 10.0.0.0/16 address space:

- name: Create virtual network
  azure_rm_virtualnetwork:
    resource_group: myResourceGroup
    name: myVnet
    address_prefixes: "10.0.0.0/16"

Todos los recursos de Azure implementados en una red virtual se implementan en una subred de esa red virtual.All Azure resources deployed into a virtual network are deployed into a subnet within a virtual network.

En la siguiente sección, el cuaderno de Ansible de ejemplo crea una subred llamada mySubnet en la red virtual myVnet:The following sample Ansible playbook section creates a subnet named mySubnet in the myVnet virtual network:

- name: Add subnet
  azure_rm_subnet:
    resource_group: myResourceGroup
    name: mySubnet
    address_prefix: "10.0.1.0/24"
    virtual_network: myVnet

Crear una dirección IP públicaCreate a public IP address

Las direcciones IP públicas permiten a los recursos de Internet la comunicación entrante a los recursos de Azure.Public IP addresses allow Internet resources to communicate inbound to Azure resources. También habilitan los recursos de Azure para la comunicación saliente a los servicios de Azure orientados al público.Public IP addresses also enable Azure resources to communicate outbound to public-facing Azure services. En ambos escenarios, se asigna una dirección IP al recurso al que se tiene acceso.In both scenarios, an IP address assigned to the resource being accessed. Hasta que cancele la asignación, la dirección estará dedicada al recurso.The address is dedicated to the resource until you unassign it. Si el recurso no tiene asignada una dirección IP pública, el recurso puede seguir comunicándose hacia Internet.If a public IP address isn't assigned to a resource, the resource can still communicate outbound to the Internet. La conexión se realiza mediante Azure asignando dinámicamente una dirección IP disponible.The connection is made by Azure dynamically assigning an available IP address. La dirección asignada dinámicamente no está dedicada a al recurso.The dynamically assigned address isn't dedicated to the resource.

En la siguiente sección, el cuaderno de Ansible de ejemplo crea una dirección IP pública llamada myPublicIP:The following sample Ansible playbook section creates a public IP address named myPublicIP:

- name: Create public IP address
  azure_rm_publicipaddress:
    resource_group: myResourceGroup
    allocation_method: Static
    name: myPublicIP

Crear un grupo de seguridad de redCreate a network security group

Los grupos de seguridad de red filtran el tráfico de red entre los recursos de Azure en una red virtual.Network security groups filter network traffic between Azure resources in a virtual network. Se definen las reglas de seguridad que controlan el tráfico entrante y saliente hacia y desde los recursos de Azure.Security Rules are defined that govern inbound and outbound traffic to and from Azure resources. Para obtener más información acerca de los recursos de Azure y los grupos de seguridad de red, consulte Integración de red virtual para los servicios de Azure.For more information about Azure resources and network security groups, see Virtual network integration for Azure services

En el cuaderno de estrategias siguiente, se crea un grupo de seguridad de red denominado myNetworkSecurityGroup.The following playbook creates a network security group named myNetworkSecurityGroup. El grupo de seguridad de red incluye una regla que permite el tráfico en el puerto TCP 22.The network security group includes a rule that allows SSH traffic on TCP port 22.

- 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

Creación de una tarjeta de interfaz de red virtualCreate a virtual network interface card

Una tarjeta de interfaz de red virtual conecta la máquina virtual a una red virtual determinada, una dirección IP pública y un grupo de seguridad de red.A virtual network interface card connects your virtual machine to a given virtual network, public IP address, and network security group.

En la siguiente sección, el cuaderno de Ansible de ejemplo crea una tarjeta de interfaz de red virtual llamada myNIC conectada a los recursos de red virtual que ha creado:The following section in a sample Ansible playbook section creates a virtual network interface card named myNIC connected to the virtual networking resources you've created:

- 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

de una máquina virtualCreate a virtual machine

El último paso es crear una máquina virtual que usa todos los recursos que ha creado en las secciones anteriores de este artículo.The final step is to create a virtual machine that uses all the resources you've created in the previous sections of this article.

El cuaderno de Ansible de ejemplo presentado en esta sección crea una máquina virtual llamada myVM y conecta la tarjeta de interfaz de red virtual llamada myNIC.The sample Ansible playbook section presented in this section creates a virtual machine named myVM and attaches the virtual network interface card named myNIC. Reemplace el marcador de posición <datos-de-clave> por sus propios datos de clave pública completos.Replace the <your-key-data> placeholder with your own complete public key data.

- 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: <your-key-data>
    network_interfaces: myNIC
    image:
      offer: CentOS
      publisher: OpenLogic
      sku: '7.5'
      version: latest

Cuaderno de Ansible de ejemplo completoComplete sample Ansible playbook

Esta sección enumera el cuaderno de Ansible de ejemplo completo que creó en el transcurso de este artículo.This section lists the entire sample Ansible playbook that you've built up over the course of this article.

- 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: Dump public IP for VM which will be created
    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: <your-key-data>
      network_interfaces: myNIC
      image:
        offer: CentOS
        publisher: OpenLogic
        sku: '7.5'
        version: latest

Ejecución del cuaderno de Ansible de ejemploRun the sample Ansible playbook

Esta sección le guía en la ejecución del cuaderno de Ansible de ejemplo presentada en este artículo.This section walks you through running the sample Ansible playbook presented in this article.

  1. Inicie sesión en el Azure Portal.Sign in to the Azure portal.

  2. Abra Cloud Shell.Open Cloud Shell.

  3. Cree un archivo (para que contenga el cuaderno) llamado azure_create_complete_vm.yml y ábralo en el editor VI como se indica a continuación:Create a file (to contain your playbook) named azure_create_complete_vm.yml, and open it in the VI editor, as follows:

    vi azure_create_complete_vm.yml
    
  4. Seleccione la tecla I para acceder al modo de inserción.Enter insert mode by selecting the I key.

  5. Pegue el cuaderno de Ansible de ejemplo completo en el editor.Paste the complete sample Ansible playbook into the editor.

  6. Seleccione la tecla Esc para acceder al modo de inserción.Exit insert mode by selecting the Esc key.

  7. Guarde el archivo y salga del editor vi, para lo que debe escribir el siguiente comando:Save the file and exit the vi editor by entering the following command:

    :wq
    
  8. Ejecute el cuaderno de Ansible de ejemplo.Run the sample Ansible playbook.

    ansible-playbook azure_create_complete_vm.yml
    
  9. La salida es similar a la siguiente, en la que se muestra que la máquina virtual se ha creado correctamente:The output looks similar to the following where you can see that a virtual machine has been successfully created:

    PLAY [Create Azure VM] ****************************************************
    
    TASK [Gathering Facts] ****************************************************
    ok: [localhost]
    
    TASK [Create resource group] *********************************************
    changed: [localhost]
    
    TASK [Create virtual network] *********************************************
    changed: [localhost]
    
    TASK [Add subnet] *********************************************************
    changed: [localhost]
    
    TASK [Create public IP address] *******************************************
    changed: [localhost]
    
    TASK [Dump public IP for VM which will be created] ********************************************************************
    ok: [localhost] => {
       "msg": "The public IP is <ip-address>."
    }
    
    TASK [Create Network Security Group that allows SSH] **********************
    changed: [localhost]
    
    TASK [Create virtual network interface card] *******************************
    changed: [localhost]
    
    TASK [Create VM] **********************************************************
    changed: [localhost]
    
    PLAY RECAP ****************************************************************
    localhost                  : ok=8    changed=7    unreachable=0    failed=0
    
  10. El comando SSH se usa para acceder a la máquina virtual Linux.The SSH command is used to access your Linux VM. Reemplace el marcador de posición <dirección-ip> por la dirección IP del paso anterior.Replace the <ip-address> placeholder with the IP address from the previous step.

    ssh azureuser@<ip-address>
    

Pasos siguientesNext steps

Inicio rápido: Manage a Linux virtual machine in Azure using Ansible (Inicio rápido: Administración de una máquina virtual Linux en Azure mediante Ansible)Quickstart: Manage a Linux virtual machine in Azure using Ansible