Leaseweb Cloud AWS EC2 support

Som du måske ved, er nogle af de produkter, LeaseWeb indeholder i sin portefølje, offentlig og privat cloud baseret på Apache CloudStack, som understøtter en komplet API. Vi, LeaseWeb, er meget åbne om dette, og vi forsøger at være så meget involverede og deltager i samfundet og produktudvikling som muligt. Du er måske bekendt med dette, hvis du er en Private Cloud-kunde. I denne artikel er vi målrettet mod de nuværende og tidligere EC2-brugere, som sandsynligvis allerede har værktøjer bygget på AWS CLI, ved at demonstrere, hvordan du kan bruge dem med LeaseWeb Private Cloud-løsninger.

Apache CloudStack har støttet EC2 API i nogen tid i de tidlige dage, men undervejs, mens EC2 API udviklede sig, har CloudStacks støtte stagneret noget. Faktisk var AWS API-komponenten fra CloudStack for nylig løsrevet fra hovedfordelingen for at forenkle vedligeholdelsen af ​​koden.

Selvom det kan lyde som dårlige nyheder, er det slet ikke. I mellemtiden blev et andet projekt spundet af, EC2Stack, og blev også omfavnet af apache. Denne nye stack understøtter den nyeste API (på tidspunktet for skrivning) og er meget lettere at vedligeholde både i alsidighed som i kodebase. At der er skrevet i Python åbner publikum for yderligere bidrag samtidig med at det giver mulighed for hurtig patching / opgradering uden genopbygning.

Så på et tidspunkt troede jeg, jeg kunne dele med dig, hvordan du hurtigt opsætter din AWS-kompatible API, så du kan genbruge dine eksisterende scripts. På detaljerne.

AWS-slutpunktet fungerer som en EC2 API-udbyder, proxy-anmodninger til LeaseWeb API, som er en udvidelse til den native CloudStack API. Og da denne API er tilgængelig for Private Cloud-kunder, kan EC2Stack installeres af kunden selv.

Følgende er en illustration af, hvordan dette kan gøres. Til posten bruger jeg Ubuntu 14.04 som mit skrivebord, og jeg etablerer EC2stack mod LeaseWebs Private Cloud i Holland.

Første skridt er at samle alle oplysninger til EC2stack. Gå til din LeaseWeb platform konsol, og få API nøgler til din bruger (følsomme oplysninger sløret):

apikeys-sløret

Bemærk værdierne for API nøgle og hemmelig nøgle (du skal allerede kende begreberne fra AWS og / eller LeaseWeb Private Cloud).

Installer nu EC2Stack og konfigurer den:

[email protected]:~$ pip installere ec2stack 
[...]
[email protected]:~$ ec2stack-configure 
EC2Stack bindingsadresse [0.0.0.0]: 127.0.0.1 
EC2Stack bind port [5000]: 5000 
Cloudstack vært [mgt.cs01.leaseweb.net]: csrp01nl.leaseweb.com 
Cloudstack port [443]: 443 
Cloudstack-protokollen [https]: https 
Cloudstack-sti [/ client / api]: / Klient / api 
Cloudstack brugerdefineret disk tilbyder navn []: dualcore
Cloudstack standard zone navn [Evoswitch]: CSRP01 
Ønsker du at indtaste instans type mappings? (Ja Nej): Ja 
Indsæt den AWS EC2-forekomsttype, du ønsker at kortlægge: t1.micro 
Indsæt navnet på den forekomsttype, du ønsker at kortlægge denne til: Debian 7 amd64 5GB 
Ønsker du at tilføje flere mappings? (Ja Nej): Ingen 
Ønsker du at indtaste ressource type til ressource id mappings til tag support? (Ja Nej): Ingen 
INFO [alembic.migration] Kontekst impl SQLiteImpl. 
INFO [alembic.migration] Vil antage DDL uden transaktion. 

Værdien for zonenavnet vil være anderledes, hvis din Private Cloud ikke er i Holland POP. Resten af ​​værdierne kan hentes fra platformskonsollen:

serviceoffering-sløret

skabelon-sløret

På dette tidspunkt skal din EC2stack proxy være i stand til at tale med din Private Cloud, så vi skal nu instruere den om at starte den for at acceptere EC2 API-opkald til din bruger. For øjeblikket skal du bare køre den på en separat skal:

[Email protected]: ~ $ ec2stack -d DEBUG 
 * Kører på http: // 127.0.0.1: 5000 / * Genstart med reloader

Og registrer nu din bruger ved hjælp af de nøgler, du har samlet fra det første trin:

[Email protected]: ~ $ ec2stack-register http: // localhost: 5000 H5xnjfJy82a7Q0TZA_8Sxs5U-MLVrGPZgBd1E-1HunrYOWBa0zTPAzfXlXGkr-p0FGY-9BDegAREvq0DGVEZoFjsT PYDwuKWXqdBCCGE8fO341F2-0tewm2mD01rqS1uSrG1n7DQ2ADrW42LVfLsW7SFfAy7OdJfpN51eBNrH1gBd1E 
Successfully Registered!

Og det er det så vidt angår API-tjenesten. Som du normalt vil gøre med AWS CLI, skal du nu "binde" CLI til disse nye legitimationsoplysninger:

[Email protected]: ~ $ aws konfigurere 
AWS Access Key ID [**************** yI2g]: H5xnjfJy82a7Q0TZA_8Sxs5U-MLVrGPZgBd1E-1HunrYOWBa0zTPAzfXlXGkr-p0FGY-9BDegAREvq0DGVEZoFjsT
AWS Secret Access Key [**************** L4sw]: PYDwuKWXqdBCCGE8fO341F2-0tewm2mD01rqS1uSrG1n7DQ2ADrW42LVfLsW7SFfAy7OdJfpN51eBNrH1gBd1E  Standard regionnavn [CS113]: CSRP01 
Standard outputformat

: tekst

Og det er det! Du er nu klar til at bruge AWS CLI, som du er vant til:

[Email protected]: ~ $ aws --endpoint = http: // 127.0.0.1: 5000 --output json ec2 beskrive-billeder | jq '.Images [] | .Name ' 
"Ubuntu 12.04 i386 30GB" "Ubuntu 12.04 amd64 5GB" "Ubuntu 13.04 amd64 5GB" "CentOS 6 amd64 5GB" "Debian 6 amd64 5GB" "CentOS 7 amd64 20140822T1151" "Debian 7 64 10 20141001T1343" "Debian 6 i386 5GB" " Ubuntu 14.04 64bit med docker.io" "Ubuntu 12.04 amd64 30GB" "Debian 7 i386 5GB" "Ubuntu 14.04 amd64 20140822T1234" "Ubuntu 12.04 i386 5GB" "Ubuntu 13.04 i386 5GB" "CentOS 6 i386 5GB" "CentOS 6 amd64 20140822T1142" "Ubuntu 12.04 amd64 20140822T1247" "Debian 7 amd64 5GB"

Bemærk venligst, at jeg kun brugte JSON output (og JQ at analysere det) for at opsummere resultaterne, da ethvert andet format ikke passer på siden.

Hvis du vil oprette en VM med indbyggede SSH nøgler, skal du opret / opsæt dit keypair i LeaseWeb Private Cloud, hvis du ikke allerede havde det. I det følgende eksempel genererer jeg en ny, men selvfølgelig kan du indlæse dine eksisterende nøgler.

ssh- keypairs-sløret

Du vil gerne kopiere indsæt den genererede nøgle (i privat nøgle) til en fil og beskytte den. Jeg reddede min i $ HOME / .ssh / id_ntavares.csrp01.key.

ssh- keypairs2-sløret

Denne nøgle vil blive brugt senere til at logge ind i de oprettede tilfælde og hente administratoradgangskoden. Endelig instruere AWS CLI at bruge dette tastatur, når du installerer dine forekomster:

[Email protected]: ~ $ aws --endpoint = http: // 127.0.0.1: 5000 ec2 run-instances \
 - instans-type dualcore \
 --image-id 7c123f01-9865-4312-a198-05e2db755e6a \
 --key-name ntavares-key 
INSTANCES	KVM	7c123f01-9865-4312-a198-05e2db755e6a	a0977df5-d25e-40cb-9f78-b3a551a9c571	dualcore	ntavares-key	2014-12-04T12:03:32+0100	10.42.1.129 
PLACERING CSRP01 
STAT 16 kører 

Bemærk, at billed-id'et er taget fra den forrige liste (det jeg forenklet med JQ).

Bemærk også, at selv om EC2stack er ret nyt, og der stadig er nogle begrænsninger for denne EC2-CS-bro - se nedenfor for en kortlægning af understøttedeAPI-opkald. For eksempel kan en, som du kan komme ind på, når du skriver denne artikel (~ 2015), manglende evne til at implementere en instans, hvis du bruger flere isolerede netværk (eller flere VPC'er). Amazon deler også dette koncept, så a simpel patch var nødvendigt.

For denne demo kører vi faktisk i et miljø med flere isolerede netværk, så hvis du kørte kommandoen ovenfor, får du følgende output:

[Email protected]: ~ $ aws --endpoint = http: // 127.0.0.1: 5000 ec2 run-instances \
 - instans-type dualcore \
 --image-id 7c123f01-9865-4312-a198-05e2db755e6a \
 --key-name ntavares-key
En klientfejl (InvalidRequest) opstod, når du kalder RunInstances-operationen: Mere end 1-standard Isolerede netværk findes for konto Acct [47504f6c-38bf-4198-8925-991a5f801a6fXNUMXaXNUMXb-rme]; Angiv venligst networkIds

I mellemtiden blev LeaseWebs patch slået sammen, så mange andre, som begge demonstrerer Open Source's magt og aktiviteten på dette projekt.

De grundlæggende vedligeholdelsesopgaver er naturligvis der:

[Email protected]: ~ $ aws --endpoint = http: // 127.0.0.1: 5000 ec2 beskrive-forekomster 
RESERVATIONS	None 
INSTANCES	KVM	7c123f01-9865-4312-a198-05e2db755e6a	a0977df5-d25e-40cb-9f78-b3a551a9c571	dualcore	ntavares-key	2014-12-04T12:03:32+0100	10.42.1.129	10.42.1.129 PLACEMENT CSRP01 standard STATE 16 kører

Jeg har fremhævet nogle oplysninger, du skal bruge nu til at logge ind på forekomsten: henholdsvis forekomst id og IP-adresse. Du kan også logge ind med din ssh keypair:

[[Email protected] ~] # ssh -i $ HOME / .ssh / id_ntavares.csrp01.key [Email protected] 
Linux localhost 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 

[...] Debian GNU / Linux leveres med absolut ingen garanti, i det omfang det er tilladt i henhold til gældende lov. 
[Email protected]: ~ #

Hvis du har brug for det, kan du også hente adgangskoden på samme måde som med EC2:

[Email protected]: ~ $ aws --endpoint=http://127.0.0.1:5000 ec2 get-password-data --instance-id a0977df5-d25e-40cb-9f78-b3a551a9c571 
None dX5LPdKndjsZkUo19Z3/J3ag4TFNqjGh1OfRxtzyB+eRnRw7DLKRE62a6EgNAdfwfCnWrRa0oTE1umG91bWE6lJ5iBH1xWamw4vg4whfnT4EwB/tav6WNQWMPzr/yAbse7NZHzThhtXSsqXGZtwBNvp8ZgZILEcSy5ZMqtgLh8Q=

Som det sker med EC2, kodeordet returneres krypteret, så du skal bruge din nøgle til at vise den:

[Email protected]: ~ $ aws --endpoint = http: // 127.0.0.1: 5000 ec2 get-password-data - instans-id a0977df5-d25e-40cb-9f78-b3a551a9c571 | awk '{print $ 2}'> ~ / tmp.1
[Email protected]: ~ $ openssl enc-base64 -in tmp.1 -out tmp.2 -d-A 
[Email protected]: ~ $ openssl rsautl -decrypt -in tmp.2 -text -inkey $ HOME / .ssh / id_ntavares.csrp01.key 
[Email protected]: ~ $ kat tmp.3; ekko 
hI5wueeur
[Email protected]: ~ $ rm -f tmp. {1,2,3} 
[[Email protected] ~] # sshpass-p hI5wueeur ssh [Email protected] 
Linux lokalhost 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 [...] Debian GNU / Linux leveres med absolut ingen garanti, i det omfang det er tilladt efter gældende lov. Sidste login: Thu Dec 4 13: 33: 07 2014 fra jump.rme.leasewebcloud.com 
[Email protected]: ~ #

Scenariet for flere isolerede netværk

Hvis du allerede kører flere isolerede netværk i din målplatform (være enten VPC-bundet eller ej), skal du sende argument -subnet-id til kommandoen run-instances for at angive hvilket netværk, der skal installere forekomsten i; ellers CloudStack vil klage over ikke at vide, hvilket netværk der skal installere forekomsten. Jeg tror det skyldes, at Amazon ikke tillader brugen af ​​Isolated Networking så frit som LeaseWeb - LeaseWeb giver dig den fulde fleksibilitet på platformskonsollen.

Da EC2stack ikke understøtter beskrivelsesnetværk-acls (fra december 2014) for at give dig mulighed for at bestemme, hvilke isolerede netværk du kan bruge, er den nemmeste måde at bestemme dem på at gå til platformskonsollen og kopiere og indsætte netværks-id'et af netværket du er interesseret i:

Derefter kunne du bruge -subnet-id:

[Email protected]: ~ $ aws --endpoint = http: // 127.0.0.1: 5000 ec2 run-instances \
 - instans-type dualcore \
 --image-id 7c123f01-9865-4312-a198-05e2db755e6a \
 --key-name ntavares-key \
 --subnet-id 5069abd3-5cf9-4511-a5a3-2201fb7070f8
PLACEMENT CSRP01 
STAT 16 kører 

Jeg håber jeg demonstrerede lidt af hvad der kan gøres i forhold til kompatibel EC2 API. Andre funktionaliteter er tilgængelige for mere komplekse opgaver, selvom EC2stack som tidligere er helt nyt, som du måske har brug for fællesskabsbistand, hvis du ikke selv kan udvikle løsningen. Hos LeaseWeb er vi meget interesserede i at kende dine brugssager, så lad os slippe en note.

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.