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.
Installer Ansible. Pour cela, choisissez l’une des options suivantes :
- Installez et configurez Ansible sur une machine virtuelle Linux
- Configurez Azure Cloud Shell.
2. Créer une paire de clés SSH
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
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
Créez un répertoire dans lequel tester et exécuter l’exemple de code Ansible et définissez-le comme répertoire actuel.
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
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
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 sectiondebug
du playbook, les résultats s’affichent quand la commande se termine.
- En raison de la variable
Étapes suivantes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour