Breng AWS CLI en CloudFormation inzetten voor infrastructuur

In het donkere verleden van fysieke servers werd infrastructuur voorzien van behulp van schroevendraaiers en kabels in vochtige kelders. Deze donkere tijden werden lichter toen publieke cloud-oplossingen de plaats innamen van on-premises infrastructuur als de voorkeursmethode voor het voorzien en uitvoeren van servers. In deze blogpost leer je hoe je cloud-oplossingen kunt implementeren met AWS CLI en CloudFormation.

Dit is een gastpost van Karl Eriksson, medeoprichter van Mocki – een tool waarmee je in enkele minuten mock-API’s kunt maken.

Als je één omgeving voor je applicatie gebruikt, kun je gemakkelijk dingen beheren via een grafische gebruikersinterface (GUI) zoals de AWS Console. Maar wanneer je meerdere omgevingen hebt, zoals ontwikkeling, staging en productie, wordt het moeilijker. Menselijke fouten en tijd spelen dan een rol. AWS CLI en CloudFormation kunnen helpen.

Je moet je infrastructuur als code beheren. In de AWS-wereld doe je dat met CloudFormation-stacks.

Wanneer je voor het eerst een CloudFormation-stack implementeert, zal AWS alles vanaf nul creëren. Als je de stack als een update implementeert, zal het eventuele wijzigingen in de infrastructuur detecteren en alleen die wijzigingen implementeren.

CloudFormation-stacks zorgen ervoor dat dezelfde wijzigingen worden toegepast in al je verschillende omgevingen.

CloudFormation: AWS Infrastructuur als Code

AWS Infrastructure as Code Source: https://aws.amazon.com/cloudformation/

AWS CloudFormation is een tool voor het schrijven en leveren van infrastructuur als code in een AWS-omgeving. De meeste services van AWS worden ondersteund door CloudFormation. Het grootste deel van wat u kunt maken met behulp van de AWS Console, zoals virtuele servers, databases, load balancers en bestandsopslag, kan worden toegevoegd aan een CloudFormation-stack. Zodra deze zijn toegevoegd, kunnen al die resources vervolgens worden geïmplementeerd vanaf een opdrachtregel of een ander geautomatiseerd proces.

Voor updates zorgt CloudFormation ervoor dat de operaties op de meest efficiënte manier worden uitgevoerd en worden wijzigingen automatisch teruggedraaid als er iets misgaat.

Laten we nu leren hoe infrastructuur te maken met behulp van de AWS CLI en CloudFormation.

Vereisten

Om de CloudFormation-handleiding te volgen in de rest van dit artikel, moet u ervoor zorgen dat u het volgende hebt:

  • Een AWS-account
  • AWS CLI – Leer hier hoe u deze kunt downloaden en instellen. U kunt bevestigen dat de CLI succesvol is ingesteld door het commando “aws s3 ls” uit te voeren. Als het commando succesvol wordt uitgevoerd, is alles in orde.

Als je meerdere AWS-profielen geconfigureerd hebt via de AWS CLI, gebruik dan een profiel dat geschikt is voor ontwikkeling of testdoeleinden voor deze tutorial.

Je Eerste CloudFormation Stack Creëren

Genoeg achtergrondinformatie, laten we aan de slag gaan en de AWS CLI en CloudFormation gebruiken om een stack te creëren!

In dit voorbeeld ga je een stack maken die de infrastructuur bevat die nodig is om een statische website te implementeren die gehost wordt op de statische bestandshostingservice AWS S3.

Om te beginnen, maak een nieuw bestand genaamd template.yaml en vul het met de onderstaande inhoud:

AWSTemplateFormatVersion: 2010-09-09
Description: A simple CloudFormation template
Resources:
    Bucket:
        Type: AWS::S3::Bucket
        Properties:
            BucketName: your-bucket-name # gebruik je eigen unieke naam
  • AWSTemplateFormatVersion bepaalt de opmaakversie voor het sjabloon, zodat AWS het correct kan interpreteren bij implementatie.
  • Description – bevat een beschrijving van het sjabloon die wordt weergegeven in de AWS Console nadat je het hebt geïmplementeerd.
  • Resources – bevat alle infrastructuur die je aan het sjabloon toevoegt. In dit geval zal de infrastructuur een eenvoudige S3-bucket creëren die een statische site zal hosten.

De eigenschap BucketName moet uniek zijn, probeer dus iets anders te bedenken dan je-bucket-naam.

Het implementeren van de Stack met AWS CLI en CloudFormation

Nu je een eenvoudig sjabloon hebt gemaakt om te implementeren, voer je de implementatie uit op AWS met behulp van AWS CLI en CloudFormation via onderstaand commando:

aws cloudformation deploy --template-file template.yaml --stack-name static-website

Na het uitvoeren van het commando, ga naar de AWS Console en ga vervolgens naar Services → CloudFormation. Daar zou je de implementatie moeten zien lopen. Na enkele minuten zou je moeten zien dat het de status CREATE_COMPLETE bereikt. Als dat het geval is, is het voltooid!

Als er fouten zijn opgetreden, kun je ze zien in het gedeelte Events bij het bekijken van de details van je stack.

Door naar Services te gaan → S3, zou je nu een gloednieuwe S3-bucket moeten zien.

Het bouwen van de eenvoudige website

Zodra je een S3-bucket hebt om een website op te slaan, maak je een index.html-bestand dat als de site zal fungeren.

Als je niets specifieks in gedachten hebt, kun je de onderstaande inhoud gebruiken in je index.html-bestand:

<html>
  <body>
    <h1>Static Site Deployed Using CloudFormation</h1>
    <p>Hello! This site was deployed using CloudFormation. Go cloud!</p>
  </body>
</html>

Sla het index.html-bestand op en upload het naar je S3-bucket via de AWS Console.

Zorg ervoor dat je openbare leestoegang verleent aan het indexbestand, aangezien het toegankelijk zal zijn voor iedereen die de site bezoekt.

Het sjabloon bijwerken

Op dit moment is de zojuist aangemaakte S3-bucket niet geconfigureerd om een website te hosten. Laten we dat veranderen. Je kunt momenteel het indexbestand downloaden via de AWS-console, maar het is niet toegankelijk via het openbare internet. Gebruik de AWS CLI en CloudFormation om de configuratie te wijzigen en statische websitehosting in te schakelen.

Wijzig het template.yaml-bestand als volgt om het in te schakelen. Hier introduceren we enkele nieuwe eigenschappen in ons sjabloon.

AWSTemplateFormatVersion: 2010-09-09
Description: A simple CloudFormation template
Resources:
    Bucket:
        Type: AWS::S3::Bucket
        Properties:
            BucketName: your-bucket-name # gebruik je eigen unieke naam
            AccessControl: PublicRead
            WebsiteConfiguration:
                IndexDocument: index.html
Outputs:
    WebsiteURL:
        Value: !GetAtt [Bucket, WebsiteURL]
        Description: URL for website hosted on S3
  • AccessControl – stelt de toegangsrechten voor de S3-bucket in op openbaar lezen, zodat elke gebruiker die de site bezoekt het index.html-bestand kan zien
  • WebsiteConfiguration – configureert de S3-bucket om te fungeren als een website die het index.html-bestand serveert wanneer gebruikers naar de bucket-URL gaan
  • Outputs – kunnen verschillende eigenschappen zijn voor resources die deel uitmaken van de stack. In het bovenstaande voorbeeld is de WebsiteURL de uitvoer van de stack. Wanneer je het sjabloon opnieuw implementeert, zou je de website-URL als uitvoer moeten zien in de AWS CloudFormation Console.

Implementeer nu de wijzigingen naar de bestaande stack met dezelfde opdracht als in de vorige stap:

aws cloudformation deploy --template-file template.yaml --stack-name static-website

Om het resultaat te bevestigen, navigeer naar de CloudFormation-console. Na een paar minuten zou je moeten opmerken dat de stack zich in de UPDATE_COMPLETE staat bevindt. Wanneer de stack deze staat bereikt, ga naar het Outputs-tabblad waar je de WebsiteUrl zou moeten zien toegevoegd als een output in de sjabloon.

Klik op de verstrekte URL en je zou je site in je browser moeten zien.

Gefeliciteerd! Met de AWS CLI en CloudFormation heb je nu je eerste stack ingezet met infrastructuur als code! Op dit punt, blijf toevoegen aan je sjabloonbestand om nieuwe wijzigingen in te zetten of maak een nieuwe volgens je behoeften.

Conclusie

In deze tutorial heb je geleerd over het concept van infrastructuur als code en de voordelen die het heeft ten opzichte van handmatige voorziening van infrastructuur. Door de infrastructuur als code-benadering te gebruiken met de AWS CLI en CloudFormation, heb je vervolgens een stack ingezet om een statische website te maken.

Met de principes die je hebt geleerd in deze tutorial, kun je een productierijp systeem volledig implementeren met behulp van CloudFormation.

Verder lezen

Als je meer wilt lezen over infrastructuur als code als fenomeen, bekijk dan Infrastructure as Code in the Real World door HashiCorp.

Als je meer wilt leren over hoe je CloudFormation kunt integreren in je ontwikkelingsstroom en al je infrastructuur kunt beheren met behulp van CloudFormation, zorg er dan voor dat je dit bekijkt:

Veel succes op je reis bij het implementeren van al je infrastructuur met behulp van infrastructuur als code in AWS!

Source:
https://adamtheautomator.com/aws-cli-and-cloudformation/