Ég mun tala um nálgun við að skipuleggja staðbundið einangrað þróunarumhverfi á vinnustöðinni minni. Aðferðin var þróuð undir áhrifum eftirfarandi þátta:
Mismunandi tungumál þurfa mismunandi IDE og verkfærakeðjur;
Mismunandi verkefni geta notað mismunandi útgáfur af verkfærakeðjum og bókasöfnum.
Aðferðin er að þróa inni í LXD gámum sem keyra á staðnum á fartölvu eða vinnustöð með grafíkúttak sem vísað er til hýsilsins.
Dæmi um uppsetningu ubuntu 20.04.
Hugleiðingar um valkosti og ástæður eru gefnar í lok greinarinnar.
1. LXD uppsetning
В ubuntu 20.04 LXD er ekki lengur fáanlegt fyrir uppsetningu sem deb pakki, aðeins í gegnum snap:
$ snap install lxd
Eftir uppsetningu þarftu að framkvæma frumstillingu:
$ lxd init
Eina færibreytan sem ég breyti er storage bakend - Ég nota dir sem einfaldasta. Þar sem ég nota ekki myndir og afrit eru viðvaranirnar í skjöl Þeir hræða mig ekki:
Að sama skapi á að líta á bakenda skráasafnsins sem síðasta úrræði.
Það styður alla helstu LXD eiginleika, en er hræðilega hægt og óhagkvæmt þar sem það getur ekki framkvæmt
skyndiafrit eða skyndimyndir og þarf því að afrita alla geymslu tilviksins í hvert skipti.
2. LXD prófíluppsetning
Snið í LXD — þetta eru sett af færibreytum sem notuð eru á nokkra ílát. Fyrir þarfir mínar er eini prófíllinn sem búinn er til sjálfgefið nóg fyrir mig default með eftirfarandi breytingum:
$ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 — svo að forrit í gámum geti haft samskipti við hýsil X11 miðlara;
$ lxc profile set default environment.DISPLAY :0 - þannig að umhverfisbreytan DISPLAY var sett upp rétt í gámum;
$ lxc profile set default raw.idmap "both 1000 1000" - fyrir hið rétta auðkenniskortlagning.
3. Búa til og setja upp gám
Að búa til ílát byggt á mynd images:ubuntu/20.04:
$ lxc launch images:ubuntu/20.04 dev1
Ég vil frekar myndir úr geymslunni https://images.linuxcontainers.org, þar sem þeir hafa minna foruppsettan hugbúnað. Af þessum sökum bætti ég við forskeytinu images: við nafn myndarinnar. Að búa til ílát byggt á mynd úr Ubuntu geymslunni er hægt að gera á eftirfarandi hátt: $ lxc launch ubuntu/20.04 dev1.
Forritsgluggar munu birtast á hýsingaraðilanum, en þeir verða keyrðir inni í gámnum - svipað og áframsendingargrafík með ssh.
Ég loka ekki hlaupandi gámum handvirkt, vegna þess að ég sé ekki mikinn tilgang í því - ég takmarka mig við að loka gluggum keyrandi forrita.
5. Niðurstaða
Ég kýs að nota ekki hýsilstýrikerfi fyrir þróun, þar sem þetta myndi krefjast uppsetningar þróunarverkfæra, kembiútgáfur af bókasöfnum, stilla kerfisíhluti á ákveðinn hátt og önnur meðhöndlun. Allt þetta getur leitt til óvæntar hegðunar í öðrum hugbúnaði sem ekki er í þróun, eða jafnvel öllu stýrikerfinu. Til dæmis geta breytingar á OpenSSL stillingum valdið því að stýrikerfið hættir að byrja rétt.
Ég hef prófað mismunandi verkfæri til að einangra þróunarumhverfi:
sýndarvélar (KVM, VirtualBox, o.s.frv.) eru augljósasti kosturinn, en þær eyða umtalsvert meira fjármagni, þó að það séu engir aðrir möguleikar til þróunar undir Windows (ef hýsillinn er Linux);
skýjaþróunarverkfæri sem keyra á staðbundinni vél (Cloud9 í gámi eða sýndarvél, Eclipse Che o.s.frv.) - þau eru ekki þróuð fyrir þennan aðgerðarmáta, þau þurfa frekari stillingar og viðhald, það er best að nota þau fyrir tilætluð tilgangur - í skýinu;
Docker gámar eru aftur ætlaðir fyrir eitthvað annað; að mínu mati eru þeir ekki mjög þægilegir fyrir fljótlega frumgerð með því að nota hugbúnað sem er ekki enn pakkaður í aðskilda ílát.
Valin nálgun heillar mig með einfaldleika sínum og litlum aðgangshindrunum. Í gámunum sjálfum er hægt að nota verksértækar aðferðir: setja upp og stilla allt handvirkt, eða nota sjálfvirkni (Puppet, Ansible, osfrv.), jafnvel dreifa Innviðir sem byggja á bryggju. Ég nota líka LXD gáma til að keyra sérstakan hugbúnað sem annað hvort krefst þess að setja upp mikinn fjölda ósjálfstæðra eða annarrar stýrikerfisútgáfu - í þessu tilviki geturðu búið til gám með viðkomandi stýrikerfisútgáfu, til dæmis $ lxc launch images:ubuntu/16.04 dev16.
Það er mikilvægt að muna að með tilliti til einangrunar hefur gámavæðing stærra árásarflöt samanborið við sýndarvæðingu - hýsilinn og gámurinn deila einum kjarna, varnarleysi þar sem getur leyft spilliforritum að sleppa úr gámnum. Þegar verið er að gera tilraunir með vafasaman hugbúnað er betra að nota viðeigandi einangrunaraðferðir.