Een virtuele machine maken is saai. Het maken van honderden is tijdrovend. Met cloud-init kunt u het maken van virtuele machines in Microsoft Azure automatiseren.

Als je ooit een virtuele machine hebt opgezet, weet je hoe het werkt. Je klikt hier en daar, klikt nog wat verder en uiteindelijk heb je een systeem opgezet. Maar dan moet je nog wel software installeren en de VM configureren naar jouw voorkeur.

Stel je nu voor dat je honderden VM's wilt opzetten. Je een weg door de installatie klikken is niet zo effectief. In plaats daarvan moet je het proces zoveel mogelijk automatiseren, en daar komt cloud-init om de hoek kijken.

Laten we eens kijken hoe u de installatie van het besturingssysteem en de configuratie van virtuele machines kunt automatiseren met behulp van cloud-init in Microsoft Azure.

Waarom cloud-init gebruiken om het maken van VM's te automatiseren?

cloud-init is een krachtige tool voor implementatieautomatisering die Canonical, het bedrijf achter Ubuntu, ontwikkelt.

Met cloud-init kunt u Linux-besturingssystemen installeren en implementeren en andere aspecten van een VM configureren. Zo kun je cloud-init gebruiken om gebruikersaccounts in te stellen, software te installeren en configureren, SSH-sleutels toe te voegen, noem maar op.

Op dit moment ondersteunen de meeste cloudserviceproviders zoals Azure, Linode en Amazon Web Services (AWS) cloud-init.

Hoewel cloud-init begon op Ubuntu, ondersteunt het nu alle grote Linux-distributies, zoals openSUSE, Debian, Red Hat Enterprise Linux (RHEL), enz.

Naast het implementeren van software in de cloud, kunt u cloud-init ook gebruiken om software te configureren en te installeren op on-prem servers of virtuele omgevingen zoals VirtualBox, KVM en VMware.

We zullen het Microsoft Azure-cloudplatform gebruiken om de implementatie van een Ubuntu-server te automatiseren met behulp van cloud-init.

Stap 1: een cloud-init-script maken

cloud-init-scripts gebruiken modules voor het configureren van verschillende aspecten van uw systeem. U gebruikt bijvoorbeeld de gebruikers module om gebruikersinformatie en accounts te configureren, en de draadbeschermer module voor het configureren van WireGuard, enz. Er zijn tal van andere modules die u direct kunt gebruiken.

Laten we een cloud-init-script maken om de meeste dingen te automatiseren die u configureert bij het instellen van een nieuwe virtuele machine.

We maken een gebruiker aan met de naam "mwiza" en wijzen deze een wachtwoord toe. Laten we voor de eenvoud een wachtwoord in platte tekst gebruiken, maar u kunt het desgewenst versleutelen. Voeg daarnaast de SSH-sleutel van de gebruiker toe aan geautoriseerde sleutels. Hierdoor kunt u SSH-wachtwoordaanmeldingen later uitschakelen voor een betere beveiliging.

Afgezien van het maken van een nieuwe gebruiker, zou het script het volgende moeten doen:

  • Een bestand schrijven: Maak een eenvoudig bestand en schrijf er inhoud naar met behulp van de schrijf_bestanden moduul. Het bestand wordt in de homedirectory geplaatst. U kunt dezelfde concepten gebruiken voor het maken van complexere bestanden in de toekomst.
  • Lopende opdrachten: We zullen eenvoudige opdrachten uitvoeren voor het configureren van de UFW-firewall, maar het kan elke andere Linux-opdracht zijn. Gebruik de runcmd module voor het uitvoeren van elk commando naar keuze; het is vergelijkbaar met het uitvoeren van Linux-opdrachten door Bash-scripts uitvoeren.
  • Landinstellingen configureren: Hiermee stelt u uw voorkeurslocaties in, zoals de toetsenbordindeling, voorkeurstaal, tijdzone, enz.
  • Pakketten installeren: Gebruik uw favoriete pakketbeheerder om pakketten op uw systeem te installeren. Op Debian-gebaseerde systemen kunt u bijvoorbeeld APT gebruiken.

Dit zijn slechts enkele van de modules die u vanuit cloud-init kunt gebruiken; er zijn verschillende andere modules om allerlei dingen te automatiseren.

Hier is het volledige cloud-init-script om het nieuwe gebruikersaccount te configureren. Vergeet niet de SSH-sleutel te vervangen door de juiste. Voel je ook vrij om de gebruikersnaam en andere details te wijzigen.

vim: syntax=yaml

# Voeg hier systeemgebruikers toe
gebruikers:
- naam: mwiza
groepen: gebruikers, sudo
shell: /bin/bash
gecos: mwiza
plain_text_passwd: Live-laugh-love12345G123
lock_passwd: onwaar
ssh_authorized_keys:
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]

# Pakketten installeren, bijwerken en upgraden
pakket_upgrade: waar
pakket_update: waar
package_reboot_if_require: waar

pakketjes:
- traceroute
- net-tools
- mislukt2ban

# Stel landinstellingen in
landinstelling: nl_UK
tijdzone: Etc/UTC
toetsenbord:
lay-out: NB

schrijf_bestanden:
- pad: /etc/salt/minion.d/master_ip_port.conf
inhoud: |
meester: zout
master_port: 4506
publish_port: 4505
- pad: /home/mwiza/cloud-init.txt
inhoud: |
gemaakt door cloud-init in azure

# Bash-opdrachten uitvoeren om software en services te configureren
runcmd:
- ufw inschakelen
- ufw sta ssh toe
- ufw staat 80 toe
- systemctl inschakelen ufw

# Schakel de VM uit nadat de initialisatie is voltooid
afsluiten: uitschakelen

Het cloud-init-script gebruikt YAML, dus zorg ervoor dat de inspringing correct is, anders werkt het niet zoals verwacht.

Stap 2: De virtuele machinebron maken

De volgende stap is het maken van de benodigde resource in Azure voor de virtuele machine. Meld u aan bij Azure als u al een account heeft of maak een gratis proefaccount aan door naar te gaan azure.microsoft.com.

Klik op de startpagina van de Azure-portal op het Maak een hulpbron knop. Selecteer in de lijst met de meest populaire Azure-services Virtuele machine.

De volgende pagina geeft u informatie voor het maken van VM-bronnen zoals harde schijf, netwerken, enz.

Geef uw virtuele machine een betekenisvolle naam en selecteer de implementatieregio. Maak ook een resourcegroep voor uw virtuele machine of gebruik een bestaande.

Onder de Authenticatie type, selecteer de Wachtwoord optie en geef uw gebruikersnaam en sterk wachtwoord op.

Nadat u alle velden op deze pagina heeft ingevuld, zouden uw gegevens ongeveer als volgt moeten zijn.

Stap 3: Uw cloud-init-script toevoegen

Klik vervolgens op de Geavanceerd tab om het cloud-init-script toe te voegen. Kopieer en plak het cloud-init-script uit de eerste stap in het aangepaste gegevensveld.

Klik ten slotte op de Beoordelen + creëren knop. Als alles in orde is, zal de test slagen. Anders zal de maker van de Azure VM u begeleiden bij de aan te brengen correcties.

Stap 4: inloggen op uw virtuele machine

Gebruik de VM-overzichtsinformatie om het openbare IP-adres van uw virtuele machine op te halen en in te loggen via SSH. Als u de juiste SSH-sleutel hebt gebruikt, vraagt ​​het systeem u niet om het gebruikerswachtwoord in te voeren.

Eenmaal ingelogd, kunt u controleren of de bestanden die u via het script wilde maken aanwezig zijn. Ook, zoek naar geïnstalleerde pakketten met APT en controleer of de firewall correct is geconfigureerd met behulp van de sudo ufw-status commando.

cloud-init registreert ook belangrijke informatie in het /var/log/cloud-init.log bestand. Het bevat uitgebreide berichten van alle gebeurtenissen die plaatsvonden tijdens de cloud-init-initialisatie. U kunt dit bestand als volgt uitchecken met de opdracht cat:

kat /var/log/cloud-init.log

Automatiseer de creatie van virtuele machines met cloud-init

cloud-init is een krachtige tool die u helpt bij het automatiseren van de installatie en configuratie van Linux. U kunt het gebruiken in de cloud en op lokale servers. Of u nu alleen de implementatie van uw virtuele machine wilt automatiseren of Linux-servers op grote schaal wilt implementeren, cloud-init is een uitstekende keuze.

Aan de andere kant, beveilig altijd uw SSH-aanmeldingen voor uw cloudgebaseerde virtuele machines om beveiligingsinbreuken te voorkomen.