Partage via


Créer une machine virtuelle Linux dans Azure avec Ansible

Cet article présente un exemple de playbook Ansible pour la configuration d’une machine virtuelle Linux.

Dans cet article, vous apprendrez comment :

  • Créer un groupe de ressources
  • Créez un réseau virtuel
  • Créer une adresse IP publique
  • Créer un groupe de sécurité réseau
  • Créer une carte d’interface réseau virtuelle
  • Création d'une machine virtuelle

1. Configurer votre environnement

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

2. Créer une paire de clés SSH

  1. Exécutez la commande suivante : Quand vous y êtes invité, spécifiez les fichiers à créer dans le répertoire suivant : /home/azureuser/.ssh/authorized_keys.

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Copiez le contenu du fichier de clé publique. Par défaut, le fichier de clé publique est nommé id_rsa.pub. La valeur est une chaîne longue commençant par « ssh-rsa  ». Vous aurez besoin de cette valeur à l’étape suivante.

3. Implémenter le playbook Ansible

  1. Créez un répertoire dans lequel tester et exécuter l’exemple de code Ansible et définissez-le comme répertoire actuel.

  2. Créez un fichier nommé main.yml et insérez le code suivant. Remplacez l’espace réservé <key_data> par la valeur de clé publique obtenue à l’étape précédente.

    - 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. Exécuter le playbook

Exécutez ansible-playbook pour exécuter le playbook Ansible.

ansible-playbook main.yml

5. Vérifier les résultats

Exécutez az vm list pour vérifier que la machine virtuelle a été créée.

az vm list -d -o table --query "[?name=='myVM']"

6. Se connecter à la machine virtuelle

Exécutez la commande SSH pour vous connecter à votre nouvelle machine virtuelle Linux. Remplacez l’espace réservé <ip-address> par l’adresse IP de l’étape précédente.

ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa

Nettoyer les ressources

  1. Enregistrez le code suivant en tant que delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Exécutez le playbook en utilisant la commande ansible-playbook. Remplacez l’espace réservé par le nom du groupe de ressources à supprimer. Toutes les ressources du groupe de ressources seront supprimées.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Points essentiels :

    • En raison de la variable register et de la section debug du playbook, les résultats s’affichent quand la commande se termine.

Étapes suivantes