Einführung in AWS CLI, Teil 2

AWS Command Line Interface für EC2

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

Um von einem Kommando-Host aus mit AWS CLI zu arbeiten, ist ein wenig Vorarbeit erforderlich.
Um von einem Kommando-Host aus mit AWS CLI zu arbeiten, ist ein wenig Vorarbeit erforderlich. (Bild: Drilling / AWS)

EC2-Instanzen lassen sich innerhalb der Amazon Web Services per Command Line Interface anlegen, bearbeiten und verwalten. Wie das Sub-Command „EC2“ mit AWS-CLI über einen Kommando-Host realisiert wird, sehen wir uns in diesem Beitrag an.

Im ersten Teil dieses Workshops haben wir die AWS-CLI auf einem lokalen Windows-Arbeitsplatz im eigenen Rechenzentrum installiert. In freier Wildbahn wird man die AWS-CLI häufig aus einer EC2-Instanz heraus verwenden, um andere AWS-Dienste zu steuern.

AWS CLI – Grundlagen und Befehlsaufbau

Einführung ins AWS Command Line Interface, Teil 1

AWS CLI – Grundlagen und Befehlsaufbau

27.12.17 - Die Web-basierte Management-Konsole von Amazon Web Services wird dem Elastizitäts-Prinzip und Automatisierungsgedanken der Public Cloud nicht immer gerecht. Mit AWS CLI gibt es aber eine Kommandozeilen-Integration, die Cloud-Spezialisten bei der Ressourcen-Verwaltung entgegenkommt. lesen

Ein populäres Beispiel ist der Betrieb einer Art Kommando-Hosts in einem Public-Subnet. Dieser basiert auf einem Amazon-Linux-AMI, bei dem die CLI bereits vorinstalliert ist und soll ausschließlich dazu dienen, AWS-Ressourcen im aktuellen VPC zu verwalten oder neue Services zu instanziieren.

Der Kommando-Host benötigt erst einmal die passenden Berechtigungen.
Der Kommando-Host benötigt erst einmal die passenden Berechtigungen. (Bild: Drilling / AWS)

Dieser Kommando-Host wird in einem öffentlichen Subnetz platziert und ist damit selbst aus dem eigenen Rechenzentrum heraus per SSH steuerbar. Das Aufsetzen des Kommando-Hosts erledigen wir für das folgende Beispiel mithilfe der AWS Management Console und platzieren diesem in einem eigens dazu angelegten öffentlichen Subnetz. Die notwenigen Workflows im EC2- und VPC-Dashboard sollten allerdings geläufig sein.

Da unser Kommando-Host letztendlich als Steuerzentrale zum Provisionieren weiterer EC2-Instanzen dienen soll, muss die Instanz über den erforderlichen Berechtigungskontext verfügen. Hierfür erstellen wir zunächst einfach eine neue IAM-Rolle „Kommando-Host“ für den EC2-Service, der wir die verwaltete Policy „EC2 Full Access“ anhängen.

Anschließend gilt es, eine Virtual Private Cloud mit öffentlichem Subnetz zu definieren.
Anschließend gilt es, eine Virtual Private Cloud mit öffentlichem Subnetz zu definieren. (Bild: Drilling / AWS)

Anschließend erstellt man im VPC-Dashboard ein passendes VPC mit einem öffentlichen Subnetz. Das Erstellen der benötigten Internet-Gateways (IGW) der Routing-Tabelle und Subnetze kann manuell im VPC-Dashboard oder der Einfachheit halber mit Hilfe des VPC-Wizards erfolgen, wie folgende Abbildung zeigt.

Hier ein Überblick über die Konfigurationsmöglichkeiten für EC2-Instanzen.
Hier ein Überblick über die Konfigurationsmöglichkeiten für EC2-Instanzen. (Bild: Drilling / AWS)

Sind die Voraussetzungen geschaffen, können wir die benötigte EC2-Instanz für den Kommando-Host erstellen. Der EC2-Launch-Wizard verwendet das Amazon-Linux-AMI als Vorlage, erhält die oben erstelle IAM-Rolle, das oben erstelle öffentliche Subnetz als Provisionierungsziel und ein einfaches User-Daten-Skript zum Aktualisieren der wichtigsten Pakete:

#!/bin/bash

yum update -y

Das Installieren der AWS-CLI per Instanz-User-Daten erübrigt sich, da diese im AMI für Amazon Linux bereits installiert ist. Bei der Instanz-Größe können wir es bei „T2-Micro“ belassen und auch beim Root-Volume übernehmen wir die Default-Einstellungen, um im Free-Tier-Kontingent zu bleiben.

EC2-Ressourcen mittels AWS-CLI filtern

Einführung in AWS-CLI, Teil 3

EC2-Ressourcen mittels AWS-CLI filtern

17.01.18 - Das AWS-CLI-Kommando „EC2“ bietet eine große Auswahl an Möglichkeiten, virtuelle Maschinen in AWS zu erstellen, zu steuern und zu verwalten. Der dritte Teil unseres CLI-Workshops befasst sich mit der Suche nach Ressouren, bzw. allgemein mit den Filtermöglichkeiten der Ausgaben, die „jedes“ CLI-Kommando liefert. lesen

Lediglich bei der Security Group erstellen wir „on the fly“ im EC2-Launch-Wizard eine Neue für „SSH-Access“ (Port 22 eingehend von „überall“, d. h. 0.0.0.0/0) und kreieren abschließend ein neues RSA-Schlüsselpaar (nicht vergessen, den privaten Schlüssel herunterzuladen), um uns per SSH auf die Instanz verbinden zu können.

Der Befehl „aws configure“ muss initial auf der EC2-Instanz durchlaufen.
Der Befehl „aws configure“ muss initial auf der EC2-Instanz durchlaufen. (Bild: Drilling / AWS)

Wurde die Instanz erstellt, können wir uns per SSH und dem eben erstellten asymmetrischen Schlüsselpaar auf die Instanz verbinden und dort initial „aws configure“ durchlaufen lassen, wie in Teil 1 dieser Workshop-Reihe beschrieben. Die symmetrischen AES-Schlüssel „Access Key + Secret“ muss man allerdings zuvor für den verwendeten IAM-User erstellt und aktiviert haben.

Damit sind alle Voraussetzungen erfüllt, um vom Kommando-Host aus mit der AWS CLI arbeiten und z. B. weitere Instanzen im öffentlichen Subnetz zu erzeugen. Wir verwenden für diesen Teil des Workshops den Sub-Command „EC2“, befassen uns also vorerst nur mit der AWS-CLI für EC2.

Web-Server erstellen

So wollen wir z.B. zunächst eine weitere EC2-Instanz für einen einfachen Webserver erstellen. Dessen User-Daten-Skript erstellen wir direkt auf den Kommando-Host in einem Editor (z. B. nano oder vi) und speichern es in einer Textdatei „UserData.txt“. Der Inhalt ist simpel und installiert nach dem Aktualisieren der Paketbasis den Apache-Webserver, startet ihn und macht ihn persistent.

#!/bin/bash

wget -q --tries=10 --timeout=20 http://google.com

yum update -y

yum -y install httpd php

chkconfig httpd on

/etc/init.d/httpd start

Mit diesem Skript bewaffnet, können wir die gewünschte neue Instanz auf Basis des Amazon-Linux-AMIs nun in der CLI vom Kommando-Host aus wie folgt erstellen:

aws ec2 run-instances --image-id <ami-id> --user-data file:///home/ec2-user/UserData.txt --key-name <key-name> --security-group-ids <sg-id> --instance-type t2.micro --subnet-id <subnet-id> --associate-public-ip-address --query 'Instances[*].InstanceId'

Tags mit AWS-CLI für EC2 erstellen

Einführung in AWS-CLI, Teil 4

Tags mit AWS-CLI für EC2 erstellen

29.01.18 - Das AWS Command Line Interface bietet zahlreiche Ansätze zum Steuern von EC2-Ressourcen. Hierbei spielen unter anderem Tags eine große Rolle, mit deren Hilfe sich Instanzen, Projekte, Kosten oder anderen AWS-Ressourcen zuordnen lassen. Eingebunden in eigene Operations-Skripte ergeben sich damit interessante Möglichkeiten. lesen

Die hervorgehobenen Eingaben sind dabei zu ergänzen. Die „image-id“ (=ami-id), die „sg-id“ und die „subnet-id“ sind identisch mit denen des Kommando-Hosts und können einfach im Tab „Details“ der Instance-Liste im EC2-Dashboard abgeschaut werden.

Den RSA-Key-Name finden wir im Menü „Key Pairs“ im EC“-Dashboard, sofern man nicht ohnehin ein eigenes Schlüsselpaar hat und verwendet.

Die neue Instanz auf Basis des Amazon-Linux-AMIs wird erstellt.
Die neue Instanz auf Basis des Amazon-Linux-AMIs wird erstellt. (Bild: Drilling / AWS)

Das UserDaten-Skript wurde soeben auf dem Kommando-Host selbst erstellt. Sind alle Angaben vollständig und korrekt, ist die neue Instanz binnen Minuten einsatzbereit. Der Ausgabe-Parameter „--query“ sorgt im Beispiel dafür, dass das Kommando nur die Instance-ID der neu instanziierten Instant zurückliefert.

Die Arbeitsweise des --query-Parameters und weitere Möglichkeiten des EC2-Subcommands zum Erstellen, Verwalten und Auslesen von EC2-Instanzen verrät der nächste Teil dieser Workshop-Reihe.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45055724 / Cloud-Umgebungen & PaaS)