Do të flas për qasjen në organizimin e mjediseve të izoluara lokale të zhvillimit në stacionin tim të punës. Qasja u formua nën ndikimin e faktorëve të mëposhtëm:
- për gjuhë të ndryshme nevojiten IDE dhe toolchains të ndryshme;
- në projekte të ndryshme mund të përdoren versione të ndryshme të toolchain-ëve dhe bibliotekave.
Qasja qëndron në zhvillimin brenda kontejnerëve LXD të drejtuar lokal në laptopin ose stacionin tim të punës, me ridrejtimin e daljes së grafikës në host.
Konfigurimi me një shembull Ubuntu 20.04.
Reflektimet mbi opsionet dhe arsyet janë prezentuar në fund të artikullit.
1. Instalimi i LXD
Në Ubuntu 20.04 LXD nuk është më i disponueshëm për instalim si paketë deb, vetëm përmes snap:
$ snap install lxdPas instalimit, duhet të kryejmë inicializimin:
$ lxd initParametri i vetĂ«m qĂ« ndryshoj Ă«shtĂ« storage backend â unĂ« pĂ«rdor dir si opsionin mĂ« tĂ« thjeshtĂ«. Duke qenĂ« se nuk pĂ«rdor snapshot dhe kopje, paralajmĂ«rimet nĂ« nuk mĂ« frikĂ«sojnĂ«:
Po ashtu, backend-i i drejtorisë duhet të merret në konsideratë si një opsion i fundit.
Mbështet të gjitha funksionalitetet kryesore të LXD, por është mjaft i ngadaltë dhe i pastrukturuar pasi nuk mund të kryejë
kopje të menjëhershme ose snapshot dhe kështu duhet të kopjojë gjithë hapësirën e ruajtjes së instancës çdo herë.
2. Konfigurimi i profilit LXD
janë grupe parametrash të aplikuara në disa kontejnerë. Për nevojat e mia, mjafton një profil i vetëm i krijuar në mënyrë të paracaktuar default me këto ndryshime:
$ lxc profile device add default X0 disk source=\/tmp\/.X11-unix\/X0 path=\/tmp\/.X11-unix\/X0â qĂ« aplikacionet nĂ« kontejnerĂ« tĂ« mund tĂ« ndĂ«rveprojnĂ« me serverin X11 tĂ« hostit;$ lxc profile set default environment.DISPLAY :0â qĂ« variabla e ambientitDISPLAYnĂ« kontejnerĂ« tĂ« jetĂ« e vendosur saktĂ«sisht;$ lxc profile set default raw.idmap "both 1000 1000"â pĂ«r mapimin e saktĂ« tĂ« identifikuesve .
Krijimi i kontejnerit nga imazhi
images:ubuntu\/20.04 $ lxc launch images:ubuntu\/20.04 dev1:
Unë preferoj imazhet nga repozitori, sepse kanë më pak soft të parainstaluar. Për këtë arsye, kam shtuar një prefiks në emrin e imazhit. Krijimi i një kontejneri nga një imazh në repozitorin Ubuntu mund të realizohet në këtë mënyrë: images: $ lxc launch ubuntu\/20.04 dev1 Qasja në shell-in e root-it të kontejnerit:.
$ lxc exec dev1 -- bash
Do të instaloj Firefox dhe VS Code (nga repozitorisip me udhëzimin ):
$ apt update
$ apt install curl gpg firefox
$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
$ install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list
$ apt update
$ apt install codeDo ta e aktivizoj kontejnerin për përshkrim vizual
ndezjeBonus! ĂshtĂ« mjaft e thjeshtĂ« tĂ« kalosh GPU nĂ« kontejner, nĂ« mĂ«nyrĂ« qĂ« aplikacionet e drejtuara atje tĂ« mund tĂ« pĂ«rdorin kartĂ«n grafike. PĂ«r kĂ«tĂ«, ke nevojĂ«:
- shto pajisjen
$ lxc config device add dev1 mygpu gpu; - instalo driverat e kartĂ«s grafike nĂ« kontejner â ato tĂ« njĂ«jtat qĂ« janĂ« instaluar nĂ« host.
4. Përdorimi i kontejnerit
Nëse kontejneri ende nuk është nisur, duhet ta nisesh atë:
lxc start dev1Nisja e VS Code me emrin e përdoruesit të pafavorizuar ubuntu:
lxc exec dev1 -- sudo --login --user ubuntu codeNisja e Firefox-it:
lxc exec dev1 -- sudo --login --user ubuntu firefoxDritaret e aplikacioneve do tĂ« shfaqen nĂ« host, por ato do tĂ« ekzekutohen brenda kontejnerit â ashtu si kalimi i grafikĂ«s me ssh.
Nuk i fik manualisht kontejnerĂ«t e nisur, pasi nuk shoh ndonjĂ« kuptim tĂ« veçantĂ« nĂ« kĂ«tĂ« â mjafton tĂ« mbyll dritaret e aplikacioneve tĂ« nisura.
5. Përfundim
Preferoj të mos përdor sistemin operativ të hostit për zhvillim, pasi do të kërkonte instalimin e paketave të zhvillimit, versioneve të gabueshme të biblioteka, konfigurimin e komponentëve të sistemit në një mënyrë specifike dhe manipulime të tjera. Të gjitha këto mund të çojnë në sjellje të papritur të softuerit tjetër që nuk ka të bëjë me zhvillimin, madje edhe të sistemit operativ tërësisht. Për shembull, ndryshimet në konfigurimin e OpenSSL mund të çojnë në atë që OS nuk nis më siç duhet.
Kam provuar mjete të ndryshme për izolimin e mjediseve të zhvillimit:
- makina virtuale (KVM, VirtualBox etj.) â opsioni mĂ« i dukshĂ«m, por konsumon shumĂ« mĂ« tepĂ«r burime, ndonĂ«se pĂ«r zhvillimin nĂ«n Windows (nĂ«se hosti Ă«shtĂ« Linux) nuk ka opsione tĂ« tjera;
- mjetet e zhvillimit tĂ« cloud-it tĂ« nisura nĂ« makinĂ«n lokale (Cloud9 nĂ« kontejner apo makinĂ« virtuale, Eclipse Che etj.) â ato nuk janĂ« zhvilluar pĂ«r njĂ« mod tĂ« tillĂ« pune, kĂ«rkojnĂ« konfigurim tĂ« mĂ«tejshĂ«m dhe mbĂ«shtetje, Ă«shtĂ« mĂ« mirĂ« t'i pĂ«rdorĂ«sh siç duhet â nĂ« cloud;
- kontainerĂ«t Docker â pĂ«rsĂ«ri janĂ« tĂ« destinuara pĂ«r diçka tjetĂ«r, sipas mendimit tim nuk janĂ« shumĂ« tĂ« pĂ«rshtatshme pĂ«r tĂ« prototipuar shpejt me programin qĂ« nuk Ă«shtĂ« paketuar ende nĂ« kontainerĂ« tĂ« veçantĂ«.
Qasja e zgjedhur mĂ« pĂ«lqen pĂ«r thjeshtĂ«sinĂ« dhe pragun e ulĂ«t tĂ« hyrjes. NĂ« vetĂ« kontainerĂ«t mund tĂ« aplikohet qasje specifike pĂ«r projekte: tĂ« instalosh dhe konfigurash gjithçka manualisht, ose tĂ« aplikosh automatizimin (Puppet, Ansible etj.), madje edhe tĂ« zhvillosh UnĂ« pĂ«rdor kontainerĂ«t LXD gjithashtu pĂ«r tĂ« drejtuar software specifik qĂ« ose kĂ«rkon instalimin e njĂ« numri tĂ« madh varĂ«sish, ose njĂ« version tjetĂ«r tĂ« OS â nĂ« kĂ«tĂ« rast, mund tĂ« krijosh njĂ« kontainer me versionin e nevojshĂ«m tĂ« sistemit operativ, pĂ«r shembull $ lxc launch images:ubuntu/16.04 dev16.
ĂshtĂ« e rĂ«ndĂ«sishme tĂ« mbahet mend se, nĂ« aspektin e izolimit, containerizimi ka njĂ« sipĂ«rfaqe tani mĂ« tĂ« madhe sulmi krahasuar me virtualizimin â hosti dhe kontaineri ndajnĂ« njĂ« bĂ«rthamĂ«, njĂ« dobĂ«si nĂ« tĂ« cilĂ«n mund tĂ« lejojĂ« softuerin e dĂ«mshĂ«m tĂ« shpĂ«tojĂ« nga konteneri. PĂ«r eksperimente me software tĂ« dyshimtĂ«, Ă«shtĂ« mĂ« mirĂ« tĂ« pĂ«rdoren mekanizma izolimi mĂ« tĂ« pĂ«rshtatshĂ«m.
Useful links
- Një artikull domethënës në Habr
- , Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« mos ngatĂ«rrohet LXD me LXC â kĂ«to janĂ« gjĂ«ra tĂ« ndryshme, por tĂ« lidhura.
- â nĂ« kĂ«tĂ« blog ka njĂ« mori informacioni tĂ« aplikueshĂ«m tĂ« dobishĂ«m pĂ«r LXD.
- â Microsoft periodikisht mbledh ndĂ«rtimet e reja dhe i shpĂ«rndan me njĂ« licencĂ« speciale.
Burimi: habr.com
