Créer une machine virtuelle est ennuyeux. Créer des centaines prend du temps. cloud-init vous permet d'automatiser la création de machines virtuelles dans Microsoft Azure.
Si vous avez déjà configuré une machine virtuelle, vous savez comment cela fonctionne. Vous cliquez ici et là, cliquez un peu plus sur votre chemin, et à la fin, vous avez un système mis en place. Mais ensuite, vous devez toujours installer le logiciel et configurer la machine virtuelle selon vos préférences.
Imaginez maintenant que vous souhaitiez configurer des centaines de machines virtuelles. Cliquer sur votre chemin à travers l'installation n'est pas si efficace. Au lieu de cela, vous devez automatiser le processus autant que possible, et c'est là que cloud-init entre en jeu.
Voyons comment vous pouvez automatiser l'installation du système d'exploitation et la configuration de la machine virtuelle à l'aide de cloud-init dans Microsoft Azure.
Pourquoi utiliser cloud-init pour automatiser la création de VM?
cloud-init est un puissant outil d'automatisation du déploiement développé par Canonical, la société à l'origine d'Ubuntu.
Avec cloud-init, vous pouvez installer et déployer des systèmes d'exploitation Linux et configurer d'autres aspects d'une machine virtuelle. Par exemple, vous pouvez utiliser cloud-init pour configurer des comptes d'utilisateurs, installer et configurer des logiciels, ajouter des clés SSH, etc.
À l'heure actuelle, la majorité des fournisseurs de services cloud tels qu'Azure, Linode et Amazon Web Services (AWS) prennent en charge cloud-init.
Bien que cloud-init ait commencé sur Ubuntu, il prend désormais en charge toutes les principales distributions Linux, telles que openSUSE, Debian, Red Hat Enterprise Linux (RHEL), etc.
Outre le déploiement de logiciels dans le cloud, vous pouvez également utiliser cloud-init pour configurer et installer des logiciels sur des serveurs sur site ou des environnements virtuels tels que VirtualBox, KVM et VMware.
Nous utiliserons la plate-forme cloud Microsoft Azure pour automatiser le déploiement d'un serveur Ubuntu à l'aide de cloud-init.
Étape 1: Créer un script cloud-init
Les scripts cloud-init utilisent des modules pour configurer différents aspects de votre système. Par exemple, vous utiliserez le utilisateurs module pour configurer les informations et les comptes des utilisateurs, et le grillage module pour configurer WireGuard, etc. Il existe des tonnes d'autres modules que vous pouvez utiliser prêts à l'emploi.
Créons un script cloud-init pour automatiser la plupart des choses que vous configurez lors de la configuration d'une nouvelle machine virtuelle.
Nous allons créer un utilisateur nommé "mwiza" et lui attribuer un mot de passe. Pour plus de simplicité, utilisons un mot de passe en texte brut, mais vous pouvez le crypter si vous le souhaitez. De plus, ajoutez la clé SSH de l'utilisateur aux clés autorisées. Cela vous permet de désactiver ultérieurement les connexions par mot de passe SSH pour une meilleure sécurité.
Outre la création d'un nouvel utilisateur, le script doit effectuer les opérations suivantes :
- Ecriture d'un fichier : Créez un fichier simple et écrivez-y du contenu à l'aide de la commande écrire_fichiers module. Le fichier sera placé dans le répertoire personnel. Vous pouvez utiliser les mêmes concepts pour créer des fichiers plus complexes à l'avenir.
- Commandes en cours d'exécution : Nous exécuterons des commandes simples pour configurer le pare-feu UFW, mais il pourrait s'agir de n'importe quelle autre commande Linux. Utiliser le runcmd module pour exécuter n'importe quelle commande de votre choix; c'est similaire à l'exécution de commandes Linux par exécution de scripts bash.
- Configuration des paramètres régionaux : Cela définit vos paramètres régionaux préférés tels que la disposition du clavier, la langue préférée, le fuseau horaire, etc.
- Installez les packages : Utilisez votre gestionnaire de packages préféré pour installer des packages sur votre système. Par exemple, sur les systèmes basés sur Debian, vous pouvez utiliser APT.
Ce ne sont là que quelques-uns des modules que vous pouvez utiliser à partir de cloud-init; il existe plusieurs autres modules pour automatiser toutes sortes de choses.
Voici le script cloud-init complet pour configurer le nouveau compte utilisateur. N'oubliez pas de remplacer la clé SSH par la bonne. N'hésitez pas non plus à modifier le nom d'utilisateur et tout autre détail.
vim: syntaxe=yaml
# Ajouter des utilisateurs système ici
utilisateurs:
- nom: mwiza
groupes: utilisateurs, sudo
shell: /bin/bash
gecos: mwiza
plain_text_passwd: vivre-rire-amour12345G123
lock_passwd: faux
ssh_authorized_keys :
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]# Installer, mettre à jour et mettre à niveau les packages
package_upgrade: vrai
package_update: vrai
package_reboot_if_require: vraipaquets:
- traceroute
- net-outils
- fail2ban# Définir les paramètres régionaux
paramètres régionaux: en_UK
fuseau horaire: Etc/UTC
clavier:
mise en page: nbécrire_fichiers :
- chemin: /etc/salt/minion.d/master_ip_port.conf
contenu: |
maître: sel
port_maître: 4506
port_publication: 4505
- chemin: /home/mwiza/cloud-init.txt
contenu: |
créé par cloud-init dans azur# Exécution de commandes Bash pour configurer des logiciels et des services
runcmd :
- ufw activer
- ufw autorise ssh
- ufw autoriser 80
- systemctl activer ufw
# Éteignez la machine virtuelle une fois l'initialisation terminée
arrêt: mise hors tension
Le script cloud-init utilise YAML, alors assurez-vous que l'indentation est correcte sinon, cela ne fonctionnera pas comme prévu.
Étape 2: Création de la ressource de machine virtuelle
L'étape suivante consiste à créer la ressource nécessaire dans Azure pour la machine virtuelle. Connectez-vous à Azure si vous avez déjà un compte ou créez un compte d'essai gratuit en vous rendant sur azure.microsoft.com.
Sur la page d'accueil du portail Azure, cliquez sur le Créer une ressource bouton. Dans la liste des services Azure les plus populaires, sélectionnez Machine virtuelle.
La page suivante vous donne des informations pour créer des ressources VM telles que le disque dur, la mise en réseau, etc.
Donnez à votre machine virtuelle un nom significatif et sélectionnez la région de déploiement. Créez également un groupe de ressources pour votre machine virtuelle ou utilisez-en un existant.
Sous le Authentification type, sélectionnez le Mot de passe option et fournissez votre nom d'utilisateur et votre mot de passe fort.
Après avoir rempli tous les champs de cette page, vos informations doivent ressembler à ce qui suit.
Étape 3: Ajouter votre script cloud-init
Ensuite, cliquez sur le Avancé tab pour ajouter le script cloud-init. Copiez et collez le script cloud-init de la première étape dans le champ de données personnalisé.
Enfin, cliquez sur le Réviser + créer bouton. Si tout va bien, le test passera. Sinon, le créateur de VM Azure vous guidera sur les corrections à apporter.
Étape 4: Connexion à votre machine virtuelle
Utilisez les informations de présentation de la machine virtuelle pour obtenir l'adresse IP publique de votre machine virtuelle et connectez-vous via SSH. Si vous avez utilisé la bonne clé SSH, le système ne vous demandera pas d'entrer le mot de passe de l'utilisateur.
Une fois connecté, vous pouvez vérifier que les fichiers que vous vouliez créer via le script s'y trouvent. Aussi, rechercher les packages installés avec APT et vérifiez que le pare-feu a bien été configuré à l'aide du statut sudo ufw commande.
cloud-init enregistre également des informations importantes dans le /var/log/cloud-init.log déposer. Il contient des messages détaillés de tous les événements qui se sont produits lors de l'initialisation de cloud-init. Vous pouvez extraire ce fichier à l'aide de la commande cat comme suit :
chat /var/log/cloud-init.log
Automatisez la création de machines virtuelles avec cloud-init
cloud-init est un outil puissant qui vous aide à automatiser l'installation et la configuration de Linux. Vous pouvez l'utiliser dans le cloud et sur des serveurs sur site. Que vous souhaitiez simplement automatiser le déploiement de votre machine virtuelle ou que vous ayez besoin de déployer des serveurs Linux à grande échelle, cloud-init est un excellent choix.
Dans le même ordre d'idées, sécurisez toujours vos connexions SSH pour vos machines virtuelles basées sur le cloud afin d'éviter les failles de sécurité.