We werken allemaal graag met de opdrachtregel toch? Ik hou tenminste van het gemak van het openen van een console en het schrijven van een opdracht om een taak uit te voeren. Ik ben het ermee eens dat het in het begin misschien overweldigend lijkt, maar als we er eenmaal aan gewend zijn, is een opdrachtregel onze vriend. Om daarop voort te borduren, bedenk ik meerdere berichten om enkele veelgebruikte basisopdrachten te doorlopen waarmee verschillende AWS-services kunnen worden bestuurd of beheerd. Ja, AWS biedt een volledige opdrachtregelervaring waarmee alle AWS-services kunnen worden beheerd. Toen ik AWS begon te leren en de CLI-opdrachten wilde uitvoeren, had ik moeite om de opdrachten uit de documentatie te begrijpen en moest ik veel vallen en opstaan om ze eindelijk te laten werken. Dus ik ben van plan om deze reeks berichten te schrijven voor zulke beginners die proberen de CLI-manier te leren om dingen op AWS te doen.
Dit bericht is de eerste van nog veel meer berichten waarin ik zal beschrijven hoe u enkele basisbeheerfuncties op verschillende AWS-services kunt uitvoeren. In elk bericht zal ik een AWS-service oppikken en een stapsgewijze handleiding geven om te laten zien hoe de service kan worden beheerd vanaf de opdrachtregel.
De hele codebasis is beschikbaar op mijn Github Repo:Hier
Wat is CLI
Een cli(CbevelLineInterface) is een manier om toegang te krijgen tot een service met slechts enkele opdrachten op een opdrachtregel. U kunt verschillende opdrachten op de console uitvoeren om een specifieke taak uit te voeren. AWS biedt een vergelijkbare interface die een alternatieve manier is om de services rechtstreeks vanaf de opdrachtregelconsole te openen en te beheren. Het biedt een mate van gemak om gewoon de opdrachtregel te openen en de opdracht uit te voeren om een AWS-service te beheren.
AWS CLI is een open source-tool die u op een machine kunt installeren en waarmee u verschillende opdrachten op de console kunt uitvoeren. Met behulp van de CLI en via een minimale configuratie kunt u een simplistische interface hebben en dezelfde functionaliteit hebben als de webconsole. CLI blijkt erg handig voor CI/CD-pijplijnen waar de pijplijn de CLI-opdrachten kan uitvoeren om verschillende taken op AWS uit te voeren. Het is beschikbaar op verschillende terminalprogramma's en kan dienovereenkomstig worden gebruikt op basis van het besturingssysteem dat u gebruikt:
- Linux-terminal
- Windows-opdrachtregel
Vereisten
Om de opdrachten te volgen, zijn er een paar vereisten die u zeker moet hebben:
- Een AWS-account
- Een opdrachtregelterminal. Op basis van welk besturingssysteem u gebruikt, is de bijbehorende opdrachtregelterminal voldoende
- Een editor voor de Cloudformation-sjabloon
In dit bericht
In dit bericht zal ik enkele basiscommando's uitleggen om sommige Cloudformation-functionaliteiten te besturen. Er zijn momenten waarop we snel wat bronnen in AWS moeten gebruiken om iets te testen. Cloudformation biedt het gemak om vooraf gedefinieerde sjablonen te hebben voor verschillende bronnen die we kunnen gebruiken om die services snel op AWS te lanceren. CLI biedt nog een niveau van eenvoud om alle Cloudformation-functionaliteiten rechtstreeks vanaf de opdrachtregel op ons lokale systeem te besturen. Cloudformation is gebaseerd op het concept van infrastructuur als een code waarmee we ons hele AWS-ecosysteem kunnen converteren naar een sjabloonbestand dat kan worden gebruikt om herhaaldelijk dezelfde set bronnen te starten. Met CLI en Cloudformation zien de stappen om een service te lanceren er als volgt uit:
- Bereid de Cloudformation-sjablonen naar behoefte voor
- Wanneer nodig om een nieuwe service te starten of een service te wijzigen, opent u de opdrachtregel en navigeert u naar de CF-sjabloonmap
- Voer de respectieve CLI-opdracht uit om met AWS te communiceren en de respectieve Cloudformation-taak uit te voeren
In dit bericht zal ik de laatste twee stappen doorlopen met een vooraf gedefinieerde CF-sjabloon die ik heb gemaakt. Dit bericht is bedoeld om te helpen met enkele basisstappen voor beginners om CLI voor Cloudformation te gaan gebruiken. Ik ben niet in detail ingegaan op alle Cloudformation-commando's, want dat wordt een erg lange post.
Wat gaan we bouwen
Om de methode voor het besturen van Cloudformation-functies met CLI uit te leggen, ga ik een eenvoudige architectuur in AWS bouwen. Onderstaande afbeelding laat zien welke architectuur we gaan lanceren op AWS met behulp van Cloudformation en CLI.
Onderstaande componenten worden gelanceerd als onderdeel van de architectuur:
- VPC:Er zal een nieuw virtueel netwerk worden gemaakt om alle andere componenten te huisvesten en de architectuur in zijn eigen netwerk te isoleren.
- Openbaar subnet:Binnen de VPC wordt een openbaar subnet gebruikt. Dit subnet is toegankelijk via internet en instanties binnen het subnet hebben toegang tot internet.
- Internetgateway:Deze wordt gecreëerd om internettoegankelijkheid voor de VPC mogelijk te maken
- Routetabel:Een routetabel om netwerkverzoeken binnen de VPC en externe verzoeken te routeren
- Beveiligingsgroep:Om het verkeer naar EC2-instanties te regelen, wordt een beveiligingsgroep gemaakt en worden enkele basispoorten geopend om verkeer toe te staan
Al deze zullen worden gelanceerd als een nieuwe Cloudformation-stack. Een Cloudformation-stack is een set bronnen die samen worden gelanceerd vanuit een Cloudformation-sjabloon. Die bronnen kunnen worden beheerd door de sjabloon te wijzigen.
Voorbereidingsstap
Voordat we de CLI kunnen gebruiken, moeten we de CLI installeren en configureren op ons systeem of op elk systeem waarop u van plan bent de CLI te gebruiken. Het moet zo worden geconfigureerd dat het verbinding kan maken met de juiste AWS-omgeving om de taken uit te voeren. Volg de onderstaande stappen om de CLI voor te bereiden voor verder gebruik:
IAM-gebruiker maken:We hebben een specifieke gebruiker nodig die door de CLI wordt gebruikt om verbinding te maken met AWS. Deze kan apart vanuit de webconsole worden aangemaakt. Om de gebruiker aan te maken:
- Log in op de console en navigeer naar de IAM-service
- Maak een nieuwe gebruiker aan en voeg de vereiste machtigingen toe aan de gebruiker. De machtigingen zijn afhankelijk van wat u probeert uit te voeren met behulp van de CLI. Voor dit bericht zal ik beheerderstoegang aan de gebruiker toevoegen.
- Noteer de toegangstoetsen van de bevestigingspagina Opslaan. Dit is nodig om de CLI te configureren
Maak een SSH-sleutel aan:Maak een nieuwe SSH-sleutel aan vanaf de EC2-pagina op de webconsole. Download en bewaar de sleutel om later te gebruiken.
CLI installeren:
Zodra we de gebruiker hebben, gaan we verder met het installeren van de CLI op ons systeem. Afhankelijk van of u op een lokale computer of op een VM gebruikt, logt u in op het systeem om de CLI te configureren. De installatiestappen verschillen afhankelijk van het besturingssysteem dat u gebruikt. Er zijn verschillende OS-opties beschikbaar in officiële documenten van AWSHier.
Aangezien ik Windows gebruik, zal ik de installatieoptie voor Windows doorlopen:
- Download het installatieprogrammaDownload het installatieprogramma vanHier
- Voer de MSI uit om de CLI te installeren. Standaard wordt het hier geïnstalleerd: C:\Program Files\Amazon\AWSCLIV2
Om de installatie te bevestigen, opent u een opdrachtregel en voert u de onderstaande opdracht uit. Het zou de versie moeten uitvoeren
aws --versie
CLI configureren:De volgende stap is het configureren van de CLI om deze te kunnen gebruiken met een AWS-omgeving. Ik ga een aangepast profiel configureren voor de CLI. U kunt meerdere profielen voor de CLI hebben om verbinding te maken met verschillende omgevingen of gebruikers van hetzelfde systeem. Voer de onderstaande opdrachten uit om de CLI te configureren. Voer desgevraagd de respectieve toegangssleutels in die in een eerdere stap van de IAM-gebruiker zijn genoteerd.
aws configure --profile blogprofiel
Dat voltooit de configuratie van de CLI op uw systeem. Nu is de CLI klaar om verbinding te maken met de AWS-instantie om resources te beheren.
CloudFormation-stappen
We zullen enkele stappen uitvoeren via CLI om verschillende Cloudformation-functies uit te voeren:
- Start een nieuwe Cloudformation Stack om de bronnen in AWS te maken
- Controleer de status en lees uitvoer van de stapel
- Werk de stapel bij om een van de resources bij te werken
- Controleer de Drift-status voor de stapel
- Verwijder de stapel om de hele architectuur naar beneden te halen
Voordat u begint, kloont u mijn Github-repo op uw lokale computer en navigeert u naar de map. Dat zou het voorbeeld Cloudformation-sjabloon moeten bevatten.
Start de stapel
Voer de onderstaande opdracht uit om de stapel te starten:
aws cloudformation create-stack --stack-name myteststack --template-body file://deploy_ec2_network_v1.json --parameters ParameterKey=KeyP,ParameterValue=key1 ParameterKey=InstanceType,ParameterValue=t2.micro --profile blogprofile
Hiermee wordt het maken van de stapel gestart en wordt de stapel-ID uitgevoerd. Noteer de Stack-ID voor de volgende opdrachten:
Dit zijn de parameters die worden doorgegeven met de opdracht:
- Stapel naam: De naam van de aan te maken stapel
- Sjabloon lichaam: De bestandsnaam van het CF-sjabloon wordt doorgegeven. Als het zich in een andere map bevindt dan de huidige, geef dan het absolute bestandspad van dat bestand op
- Parameters: Hier geven we twee parameters door: SSH-sleutelnaam en het instantietype. Dit zijn de parameters die zijn geconfigureerd in de Cloudformation-sjabloon en dienen als invoerparameters voor de stapel. De parameters die hier worden doorgegeven, zijn afhankelijk van de id die is gedefinieerd in de CF-sjabloon en veranderen dienovereenkomstig.
- Profiel: Het aangepaste AWS-profiel dat we hierboven hebben gemaakt
Dit zijn de meest elementaire parameters die moeten worden doorgegeven met de opdracht voor het maken van de stapel. Er zijn ook enkele andere parameters die kunnen worden doorgegeven om andere aspecten van het maken van de stapel te regelen, zoals wat te doen bij fouten, time-outconfiguratie enz. Maar voor dit voorbeeld zal ik deze basisopties gebruiken.
Controleer de status van de stapel
Voer de onderstaande opdracht uit om de status van de creatie te controleren. Geef de Stack-ID door die we eerder hebben gekopieerd als invoer:
aws cloudformation description-stacks --stack-name
--profile blogprofile Dit zal de status van het maken van de stapel uitvoeren
Controleer de AWS-webconsole om te bevestigen dat de bronnen zijn gemaakt.
Stapel creatie
Instantie gemaakt
Haal het IP-exemplaar op dat door de CloudFormation-stack is gelanceerd
Voer de onderstaande opdracht uit om het IP-adres van de instantie op te halen dat is gelanceerd als onderdeel van de Cloudformation-stack. Geef de Stack ID die we eerder hebben gekopieerd door als invoer. De uitvoerstap was al gespecificeerd in de Cloudformation-stacksjabloon, dus het IP-adres wordt als uitvoer verzonden.
aws cloudformation description-stacks --stack-name
--query Stacks[0].Outputs[1].OutputValue --profile blogprofile
In de CF-sjabloon is de uitvoerstap gespecificeerd om het IP-adres te retourneren na het maken van de stapel:
Voer deze opdracht uit om de hele uitvoer te zien met verschillende informatie over de stapel:aws cloudformation description-stacks --stack-name
--profile blogprofile Het zou de volledige informatie over de stapel moeten tonen:
Controleer de driftstatus van de stapel
Er zijn gevallen waarin iemand de stackbronnen van de AWS-webconsole of buiten Cloudformation kan wijzigen. Deze wijzigingen maken het moeilijk om bij te houden wanneer en hoe de bronnen zijn gewijzigd, omdat ze niet via de Cloudformation-stack zijn gedaan. Voor dergelijke scenario's biedt Cloudformation een functie genaamd Drift Status. Indien aangevinkt, wordt weergegeven of de bronnen zich in een andere staat bevinden dan de staat die in de stapel is gedefinieerd. Om de driftstatus te controleren, moeten we eerst een bron bijwerken vanaf de webconsole. Werk de beveiligingsgroep bij die deel uitmaakt van de stapel en voeg er een nieuwe poortregel aan toe (open poort 5000).
Voer de onderstaande opdracht uit om de driftstatus te controleren:
aws cloudformation detect-stack-drift --stack-name
--profile blogprofile Dit initieert het Drift-detectieproces. Voer de onderstaande opdracht uit om de statusuitvoer te controleren:
aws cloudformatie description-stack-resource-drifts --stack-name
--profile blogprofile Dit zal de driftstatus van alle stackresources uitvoeren. Het veld 'StackResourceDriftStatus' toont de status. Voor elke gedrifte bron wordt dienovereenkomstig weergegeven. In dit geval wordt de beveiligingsgroep als gedrift weergegeven.
Verwijder de stapel
Voer de onderstaande opdracht uit om de stapel te verwijderen en alle bronnen van AWS te verwijderen:
aws cloudformation delete-stack --stack-name
--profile blogprofile Dit initieert het verwijderen van de stapel en de bronnen worden verwijderd:
Hiermee zijn alle stappen afgerond die ik wilde behandelen om het proces van het gebruik van Cloudformation met behulp van CLI te beschrijven.
Conclusie
In dit bericht heb ik zojuist het oppervlak bekrast over de Cloudformation CLI-opdrachten. Er zijn heel veel andere commando's waarmee elk aspect van Cloudformation kan worden bestuurd met behulp van CLI. De commando's die ik heb uitgelegd, zijn enkele nuttige basiscommando's die zullen helpen bij het opbouwen van de kennis van CLI-gebruik van Cloudformation. Ik hoop dat dit bericht iemand helpt om zijn reis met AWS CLI te beginnen. Ik zal hierna een nieuwe AWS-service en het CLI-gebruik ervan bedenken. Als je tot die tijd vragen hebt, neem dan rechtstreeks contact met mij op via de contactpagina.