Henri Binsztok yra „Wallix“ vyriausiasis inovacijų pareigūnas ir „Awless“ atvirojo kodo projekto vienas iš kūrėjų.
Kai debesyje buvo kalbama tik apie virtualias mašinas, tokie įrankiai kaip „Chef“ ar „Lėlė“ padėjo mums lengvai paruošti savo VM. Svarbu buvo tik pateikti egzempliorius, kuriuose buvo visas reikalingas kodas ir duomenys. Tačiau dabar, kai „Amazon Web Services“ pasiekė daugiau nei 90 paslaugų, sąveika su AWS API tampa pagrindine darbo dalimi.
Kaip turėtume valdyti AWS infrastruktūrą ir kokias sąsajas turėtume naudoti? Daugelis pradedančiųjų pradeda naudoti „AWS Console“, numatytąją GUI, o patyrę sisteminiai administratoriai dažniausiai teikia pirmenybę komandinės eilutės sąsajai (CLI). Problema ta, kad AWS CLI nėra patogi vartotojui. Kadangi jis integruoja visą AWS API, jis atskleidžia didžiulį paviršiaus plotą pagal komandas, žymes ir parinktis.
„Awless“ kyla iš mūsų poreikio greitai, galingai ir lengvai naudoti CLI valdyti AWS. Naudodami „Awless“, galite sukurti ir valdyti AWS infrastruktūrą, pradedant nuo nulio, ir visada gauti skaitomą išvestį (tiek žmonėms, tiek programoms), ištirti visus debesų išteklius (net ir neprisijungus) ir atlikti užklausas, prisijungti prie egzempliorių ir kurti, atnaujinti ir tvarkyti. ištrinti debesies išteklius. Be atskirų komandų eilių, „Awless“ palaiko šablonus, įgalinančius aukštesnį automatizavimo lygį. Paskutinis, bet ne mažiau svarbus „Awless“ tikslas - užtikrinti sumanius nutylėjimus ir geriausią saugumo praktiką.
Kadangi AWS paslaugų yra labai daug, dažnai svarbu komandų eilutėje rasti ir parodyti paslaugų hierarchiją. Mes galime grupuoti paslaugas pagal funkcionalumą, pvz., Skaičiavimą ir duomenų bazę. Tačiau nuodugniai išgyventi kiekvieną iš jų yra varginantis dalykas, nes šio rašymo metu saugykloje ir duomenų bazėje yra ne mažiau kaip 15 paslaugų, neskaitant keturių duomenų perkėlimo paslaugų ir devynių analizės paslaugų, tiesiogiai susijusių su duomenų naudojimu.
Mums lengviau sugrupuoti paslaugas pagal pasirengimą debesims. Šiame straipsnyje mes išsamiai paaiškinsime, kaip naudoti „Awless“ kuriant ir tvarkant debesų išteklius realiam naudojimo atvejui, gamybai pritaikytų „WordPress“ egzempliorių diegimui. Mes naudosime šiuos AWS išteklius:
- VM paslaugos EC2 (Elastic Compute Cloud) ir ELB (Elastinis apkrovos balansavimas);
- Aukšto lygio paslaugos, veikiančios VM, bet valdomos AWS, pvz., RDS (Reliacinių duomenų bazių tarnyba) arba „ElastiCache“ (eilėms);
- „Be serverio“ paslaugos, veikiančios daugiabučiuose VM, pvz., S3 (objektų saugykla) arba „Lambda“ (vienos funkcijos vykdymas).
Pradėkite nuo „Awless“
Prisiregistruokite AWS ir sukurkite pirmąją paskyrą AdministratorAccess
teises. Atidžiai atkreipkite dėmesį į savo prieigos raktą ir slaptą raktą.
Įdiekite „Awless“
„Awless“ galite rasti adresu „GitHub“. Mes tiekiame iš anksto pastatyti dvejetainiai failai ir „Homebrew“ paketai, skirti „MacOS“:
> virimo čiaupas wallix / awless
> užvirinti baisiai
Galite patikrinti, ar „Awless“ tinkamai įdiegta, paleisdami:
> baisi versija
„Awless“ modeliuojamas pagal tokius populiarius komandinės eilutės įrankius kaip „Git“. Dauguma komandų yra tokios:
> baisus veiksmažodis [subjektas] [parametras = reikšmė ...]
Šiame straipsnyje pateikiama 360 laipsnių realaus AWS gamybos darbo krūvio apžvalga, pradedant nuo nulio. Aiškumo dėlei praleidžiame visus patvirtinimus ir kai kuriuos išvesties veiksmus, nes „Awless“ visada prašo patvirtinti komandas, kurios sukuria, atnaujina ar ištrina išteklius.
Pirmieji žingsniai su „Awless“
Pirmąją „Awless“ komandą galime išleisti išvardiję savo virtualius privačius debesis (VPC). Kadangi tai yra pirmasis mūsų bandymas, turėsime įvesti keletą būtinų duomenų, kad sukonfigūruotume „Awless“:
> baisus sąrašas vpcsSveiki atvykę į nepaprastą! Sprendžiami aplinkos duomenys ...
Pasirinkite AWS regioną:
ap-šiaurės rytai-1, ap-šiaurės rytai-2, ap-pietūs-1, ap-pietryčiai-1, ap-pietryčiai-2, ca-centriniai-1, cn-šiaurės-1, eu-centriniai-1, eu- vakarai-1, eu-vakarai-2, sa-rytai-1, us-rytai-1, us-rytai-2, us-gov-west-1, us-vakarai-1, us-vakarai-2
Vertė? > mus-vakarus-2
Sinchronizuojamas regionas „us-west-2“ ...
Nepavyksta išspręsti AWS prisijungimo duomenų (AWS_ACCESS_KEY_ID ir AWS_SECRET_ACCESS_KEY) Įveskite prieigos raktus ir pasirinkite profilio pavadinimą (saugomą /Users/john/.aws/credentials):
AWS prieigos rakto ID? AKIAIINZQI7WIEXAMLLE
AWS slaptas prieigos raktas? hYWZBVOusePEPSr5PkscplskB84fjbgUEXAMPLE
Pasirinkite profilio vardą? administratorius
✓ Sukurti /Users/john/.aws/credentials
✓ Profilio „admin“ prisijungimo duomenys sėkmingai saugomi
Viskas padaryta. Mėgautis!
Galite peržiūrėti ir sukonfigūruoti „awless“ naudodami „awless config“.
Dabar veikia: baisus sąrašas vpcs
| ID ▲ | VARDAS | Numatytasis | VALSTYBĖ | CIDR |
|--------------|------|---------|-----------|---------------|
| vpc-1d1df679 | | tiesa | prieinama | 172.31.0.0/16 |
Sukurkite AWS vartotoją
Dabar naudosime „Awless“ norėdami sukurti naują AWS vartotoją ir suteikti jam pakankamai teisių naudodami administratoriaus profilį. Sukuriame vartotoją Johną ir jo prieigos raktą:
> baisu sukurti vartotojo vardą = john
> awless sukurti prieigos raktą user = john aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI / K7MDENG / bPxRfiCYEXAMPLEKEY
Ar norite išsaugoti .aws / kredencialus? (taip / ne) taip
Įrašo pavadinimas .aws / įgaliojimuose? [numatytasis] john
Dabar, kai Jonas egzistuoja, jam reikia leidimų rinkinio. Johnui suteiksime visišką prieigą prie EC2, RDS, Auto Scaling, CloudFront ir S3 paslaugų, kurias naudosime šiame straipsnyje:
> „awless attach policy service = ec2 access = full user = john“
> „awless attach policy service = rds access = full user = john“
> „awless attach policy service = s3 access = full user = john“
> „awless attach policy service“ = prieigos automatizavimas = visas vartotojas = john
> „awless attach policy service = cloudfront access = full user = john“
Dabar, kai Jonas yra visiškai funkcionalus vartotojas, pereisime prie jo profilio, kad atliktumėte kitus veiksmus:
> awless config set aws.profile john
Mes naudosime AWS, kad nustatytume labai prieinamą, valdomą „WordPress“ diegimą, derinant VM, valdomas ir be serverių paslaugas. Mūsų pagrindinis tikslas pavaizduotas žemiau. Turėsime išspręsti tris „iššūkius“, kad jį pasiektume, naudodamiesi atitinkamai AWS infrastruktūros paslaugomis, valdomomis paslaugomis ir paslaugomis be serverių.
Wallix1 iššūkis: pakelkite ir perkelkite programą į EC2
„Lift and shift“ yra greičiausias senų programų perkėlimas į debesį ir naudojimasis debesų platformų lankstumu ir sąnaudų pranašumais. Tokiu atveju pradėsime diegdami „WordPress“ variklį ir jo duomenų bazę viename VM. Klientai prisijungs tiesiogiai prie VM.
WallixSukurkite VPC
Prieš pradėdami kurti VM, pirmiausia turime sukurti tinklo išteklius:
- Privatus tinklas (arba VPC)
- Interneto vartai šiam VPC
- Potinklis, naudojantis interneto šliuzą
„Awless“ paragins visus trūkstamus parametrus su automatiniu užbaigimu. Čia mes naudojame abu pateiktus derinius (param = vertė
) ir raginami parametrai:
> awless sukurti vpc cidr = 10.0.0.0 / 16 name = wordpress-vpc
> baisu sukurti internetgateway
[Gerai] id = igw-1234567
> nepaprastai pritvirtinkite interneto vartus
Nurodykite (norėdami mesti, paspauskite „Ctrl“ + C, norėdami baigti skirtuką):
internetgateway.id? [Skirtukas]
internetgateway.id? igw-1234567
internetgateway.vpc? @ wo [skirtukas]
internetgateway.vpc? @ wordpress-vpc
„Awless“ pateikia geriausią vardų, o ne išteklių ID naudojimo praktiką. Kaip toks, @ išteklių pavadinimas
yra išteklių, pavadintų „resurso pavadinimas“, identifikatorius.
Sukurkime viešąjį potinklį, kuriame talpinsime „WordPress“ egzempliorių, ir pridėkime maršrutų lentelę, nukreipiančią interneto srautą į VPC interneto vartus:
> baisus sukurti potinklį cidr = 10.0.0.0 / 24 vpc = @ wordpress-vpc name = wordpress-public-subnet
> baisus atnaujinimas potinklio id = @ wordpress-public-subnet public = true
> baisiai sukurkite perkeliamą vpc = @ wordpress-vpc
> awless attach routetable subnet = @ wordpress-public-subnet
Nurodykite (norėdami išeiti, paspauskite „Ctrl“ + C, norėdami užbaigti skirtuką):
routetable.id?[tab]
* pasirinkite aukščiau sukurto kelialapio ID *
> baisus maršruto sukūrimas cidr = 0.0.0.0 / 0
Nurodykite (norėdami mesti, paspauskite „Ctrl“ + C, norėdami baigti skirtuką):
maršrutas.gateway? * interneto šliuzo, kurį pridėjote prie VPC, ID *
route.table? * aukščiau sukurto kelialapio ID *
Atkreipkite dėmesį, kad kiekvienas „Awless“ veiksmas yra maždaug toks paprastas, koks tik gali būti. Nors laikomės visapusiško žingsnis po žingsnio, „Awless“ leidžia mums daug greičiau atlikti nuobodų infrastruktūros sukūrimo procesą nei naudojant grafinę konsolę ar AWS CLI.
Sukurkite SSH raktų porą ir saugos grupę
Debesų tinklas dabar paruoštas. Prieš kurdami egzempliorių, mums reikia SSH raktų poros, kad vėliau galėtume prisijungti prie egzemplioriaus. Vienoje komandoje „Awless“ vietoje sukuria SSH raktų porą ir užregistruoja ją AWS:
> baisu sukurti keypair name = johnkey
Geriausia praktika yra suteikti minimalią prieigą prie bet kokių išteklių, todėl priimsime tik HTTP ryšius iš viso interneto ir SSH iš išeinančio IP adreso. Norėdami tai padaryti, mes sukuriame ir sukonfigūruojame saugos grupę:
> baisu sukurti saugos grupę vpc = @ wordpress-vpc description = \ ”HTTP public + SSH access \” name = wordpress-secgroup
> MY_IP = $ (baisus „whoami“ - tik vienas)
> baisus atnaujinimo saugos grupės ID = @ įeinantis „wordpress-secgroup“ = įgalioti cidr = $ MY_IP / 32 portrange = 22
> baisus atnaujinimo saugos grupės ID = @ įeinantis „wordpress-secgroup“ = įgalioti cidr = 0.0.0.0 / 0 portrange = 80
Pateikite programą AWS vartotojo duomenimis
Dabar mes pateiksime savo „WordPress“ egzempliorių per AWS vartotojo duomenis. Čia mes naudosime scenarijų, kurį galima rasti „GitHub“:
> awless sukurti egzempliorių potinklį = @ wordpress-public-subnet keypair = johnkey name = wordpress-instance userdata = // raw.githubusercontent.com/zn3zman/AWS-WordPress-Creation/16a52aef4f618d558d61197df4e4eca4c015277f/WP-Set sekgrupė
Tu gali naudoti baisus pasirodymas
Norėdami gauti informacijos apie bet kokius išteklius, pvz., viešą „WordPress“ egzemplioriaus IP adresą:
> „awless show wordpress-instance“
Galite prisijungti prie IP adreso iš komandos išvesties, kad galėtumėte pasiekti „WordPress“ paslaugą (nors gali tekti palaukti kelias minutes, kol egzempliorius bus tinkamai parengtas).
„WordPress“ fondasPagal numatytuosius nustatymus „Awless“ sukurs „t2.micro“ tipą (1 vCPU, 1 GB RAM) naudodamas „Amazon Linux“. Numatytąsias reikšmes galite atnaujinti naudodami baisus konfigūracijos rinkinys
:
> awless config set instance.type m4.large
> UBUNTU_AMI = $ („awless search images canonical“: „ubuntu — only-only“ - tylus)
> awless config set instance.image $ UBUNTU_AMI
Iki šiol sukūrėme kelis išteklius. Naudojant baisus sąrašas
, galime išvardyti vartotojus, egzempliorius, potinklius ir visus kitus šaltinius (žinoma, jei jūsų AWS profilis turi pakankamai teisių). Pavyzdžiui, galime išvardyti egzempliorius:
> baisūs sąrašo egzemplioriai
| ID ▲ | ZONA | VARDAS | ATNAUJINIMAS |
|-------------------|----------|--------------------|---------|
| i-00268db26b0d0393c | us-vakarai-1c | wordpress-instance | 57 min
[...]
„Awless“ yra galinga funkcija, leidžianti lengvai prisijungti prie egzempliorių naudojant SSH. Užkulisiuose „Awless“ automatiškai gaus egzemplioriaus IP adresą, atspės vartotojo vardą ir prisijungs prie anksčiau sukurto raktų poros:
> baisus ssh wordpress-egzempliorius
Jei norite ištrinti „WordPress“ egzempliorių, galite paleisti baisiai ištrinti egzempliorių id = @ wordpress-instance
. Tai galite padaryti dabar, nes per kitą iššūkį sukursime pažangesnį diegimą.
Kaip naudoti „Awless“ šablonus
Visus šio iššūkio veiksmus galima apibūdinti kaip „Awless“ komandų seką, kurioje ankstesnių komandų rezultatai (pavyzdžiui, interneto vartų ID) naudojami kaip įvestis į kitas komandas. Kadangi „Awless“ teikia įmontuotą šablonų sistemą, galite sukomplektuoti visą 1 iššūkį į šabloną ir paleisti jį su:
> „awless run“ //raw.githubusercontent.com/wallix/awless-templates/bcd0dd41b1524eeac1e53d12b2998bc56689c517/simple_wordpress_infra.aws
„Awless“ siūlo galingą funkciją, kuri leidžia jums atšaukti daugumą pakeitimų, taikomų AWS infrastruktūrai. Pavyzdžiui, galite ištrinti visą šablono sukurtą infrastruktūrą vienoje komandoje: baisus grąžinti grąžinimo ID
. Norėdami rasti duotą grąžinti ID
, baisus rąstas
pateikiamos visos anksčiau debesų infrastruktūrai pritaikytos komandos su jų išvestimi ir ID:
> baisus žurnalas # raskite grąžintiną ID > baisus grąžinimas 01BM6D1YRZ5SSN5Z09VEEGN0HV
2 iššūkis: naudokitės AWS valdomomis paslaugomis
Mūsų ankstesnė dislokacija yra funkcionali, tačiau gana amatinga. Mūsų tinklaraštį palaiko vienas egzempliorius vienoje prieinamumo zonoje (AZ). Dabar norime sukurti labai prieinamą tinklaraštį, kuriame būtų apkrovos balansavimo priemonė, du egzemplioriai skirtinguose AZ ir atkartota duomenų bazė, kuria dalijasi mūsų egzemplioriai. Užuot paleidę savo duomenų bazę, mes naudosime AWS RDS, „Amazon“ valdomą paslaugą SQL duomenų bazėms. Valdomos paslaugos naudojimas suteikia daug privalumų, įskaitant grupavimą, valdomą saugą ir atsargines kopijas.
WallixNorėdami turėti labai prieinamus išteklius, turime juos paskirstyti skirtinguose prieinamumo rajonuose (AZ) esančiuose antriniuose tinkluose ir subalansuoti apkrovą per elastingą apkrovos balansavimą.
WallixŠiam iššūkiui sukursime:
- Vienas apkrovos balansatorius paskirsto apkrovą tarp egzempliorių
- Du viešieji potinkliai, kuriuos reikia susieti su interneto apkrovos balansavimo įrenginiu
- Du privatūs potinkliai skirtinguose AZ (pvz., Us-east-1a, us-east-1e), kuriuose talpinamos bylos
- Viena automatinio mastelio keitimo grupė, skirta valdyti „WordPress“ egzempliorių mastelį
- Vienas NAT šliuzas viename viešajame potinklyje, kad įgalintų išeinančius skambučius egzempliorių parengimui
- Vienas viešasis fiksuotas IP (elastinis IP) NAT šliuzui
- Vienas RDS, skirtas „MariaDB“ egzemplioriui, automatiškai pakartojamas privačiuose potinkliuose
Šią infrastruktūrą sukursime vykdydami „Awless“ šablonus. Pirmasis šablonas sukuria potinklius ir maršrutą. {skylė}
žymėjimas leidžia dinamiškai užpildyti parametrus vykdant šabloną. $ nuoroda
žymėjimas įgalina atgalines sukurtų išteklių nuorodas.