Créer une machine virtuelle Linux dans Azure avec Ansible

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

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: CentOS
            publisher: OpenLogic
            sku: '7.5'
            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é d’adresse> IP 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