Ngisolasi lingkungan pangembangan kanthi wadhah LXD

Aku bakal ngomong babagan pendekatan kanggo ngatur lingkungan pangembangan terisolasi lokal ing workstation. Pendekatan kasebut dikembangake kanthi pengaruh faktor ing ngisor iki:

  • Basa sing beda-beda mbutuhake IDE lan rantai alat sing beda;
  • Proyek sing beda-beda bisa nggunakake macem-macem versi toolchain lan perpustakaan.

Pendekatan kasebut yaiku ngembangake kontaner LXD sing mlaku sacara lokal ing laptop utawa workstation kanthi output grafis sing dialihake menyang host.

Conto konfigurasi Ubuntu 20.04.

Refleksi babagan pilihan lan alasan diwenehi ing pungkasan artikel.

1. Instalasi LXD

Π’ Ubuntu 20.04 LXD ora kasedhiya kanggo instalasi minangka paket deb, mung liwat snap:

$ snap install lxd

Sawise instalasi sampeyan kudu nindakake initialization:

$ lxd init

Parameter mung aku ganti storage bakend - Aku nggunakake dir minangka sing paling prasaja. Awit aku ora nggunakake gambar lan salinan, bebaya ing dokumentasi Dheweke ora medeni aku:

Kajaba iku, backend direktori kudu dianggep minangka pilihan pungkasan.
Nanging ndhukung kabeh fitur LXD utama, nanging banget alon lan ora efisien amarga ora bisa nindakake
salinan cepet utawa jepretan lan perlu kanggo nyalin kabeh saka panyimpenan Kayata saben wektu.

2. Persiyapan profil LXD

Profil ing LXD - iki minangka set paramèter sing ditrapake kanggo sawetara kontaner. Kanggo kabutuhanku, siji-sijine profil sing digawe kanthi standar cukup kanggo aku default kanthi owah-owahan ing ngisor iki:

  • $ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 - supaya aplikasi ing kontaner bisa sesambungan karo host X11 server;
  • $ lxc profile set default environment.DISPLAY :0 - supaya variabel lingkungan DISPLAY dipasang kanthi bener ing wadhah;
  • $ lxc profile set default raw.idmap "both 1000 1000" - kanggo bener pemetaan pengenal.

3. Nggawe lan nyetel wadhah

Nggawe wadhah adhedhasar gambar images:ubuntu/20.04:

$ lxc launch images:ubuntu/20.04 dev1

Aku luwih seneng gambar saka gudang https://images.linuxcontainers.org, amarga padha duwe kurang piranti lunak sing wis diinstal. Mulane aku nambahake prefiks images: menyang jeneng gambar. Nggawe wadhah adhedhasar gambar saka repositori Ubuntu bisa ditindakake kaya ing ngisor iki: $ lxc launch ubuntu/20.04 dev1.

Akses menyang cangkang ROOT saka wadhah:

$ lxc exec dev1 -- bash

Aku bakal nginstal Firefox lan VS Code (saka repositori miturut instruksi):

$ 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 code

Aku bakal kalebu wadhah kanggo gamblang.

poweroff

Bonus! Iku cukup gampang uncalan GPU menyang wadhah supaya aplikasi mlaku ing bisa nggunakake kertu grafis. Kanggo nindakake iki sampeyan kudu:

  • nambah piranti $ lxc config device add dev1 mygpu gpu;
  • nginstal driver kertu video ing wadhah - sing padha sing diinstal ing inang.

4. Nggunakake wadhah

Yen wadhah durung mlaku, sampeyan kudu miwiti:

lxc start dev1

Mlaku VS Code minangka pangguna non-root ubuntu:

lxc exec dev1 -- sudo --login --user ubuntu code

Bukak Firefox:

lxc exec dev1 -- sudo --login --user ubuntu firefox

Jendhela aplikasi bakal ditampilake ing host, nanging bakal dieksekusi ing wadhah - padha karo grafis sing diterusake nggunakake ssh.

Aku ora mateni kontaner sing mlaku kanthi manual, amarga aku ora weruh akeh titik - aku matesi dhewe kanggo nutup jendhela aplikasi sing mlaku.

5. Kesimpulan

Aku luwih seneng ora nggunakake OS host kanggo pangembangan, amarga iki mbutuhake nginstal alat pangembangan, versi debug perpustakaan, konfigurasi komponen sistem kanthi cara tartamtu, lan manipulasi liyane. Kabeh iki bisa nyebabake prilaku sing ora dikarepke ing piranti lunak non-pembangunan liyane, utawa malah kabeh OS. Contone, owah-owahan ing konfigurasi OpenSSL bisa nyebabake OS mandheg miwiti kanthi bener.

Aku wis nyoba macem-macem alat kanggo ngisolasi lingkungan pangembangan:

  • mesin virtual (KVM, VirtualBox, etc.) iku pilihan sing paling ketok, nanging padha nggunakake sumber daya Ngartekno luwih, sanajan ora ana opsi liyane kanggo pembangunan ing Windows (yen inang Linux);
  • alat pangembangan maya sing mlaku ing mesin lokal (Cloud9 ing wadhah utawa mesin virtual, Eclipse Che, lan sapiturute) - ora dikembangake kanggo mode operasi iki, mbutuhake konfigurasi lan pangopΓ¨nan tambahan, luwih becik digunakake kanggo tujuane. waΓ© - ing mΓ©ga;
  • Wadah Docker maneh dimaksudake kanggo liya; miturut pendapatku, dheweke ora trep kanggo nggawe prototipe kanthi cepet nggunakake piranti lunak sing durung dibungkus ing wadhah sing kapisah.

Pendekatan sing dipilih nggumunake aku kanthi kesederhanaan lan alangan sing kurang kanggo mlebu. Ing wadhah kasebut, sampeyan bisa nggunakake pendekatan khusus proyek: nginstal lan ngatur kabeh kanthi manual, utawa nggunakake otomatisasi (Wayang, Ansible, lsp.), malah nyebar. Infrastruktur basis Docker. Aku uga nggunakake wadhah LXD kanggo mbukak piranti lunak tartamtu sing mbutuhake nginstal akeh dependensi utawa versi OS sing beda - ing kasus iki sampeyan bisa nggawe wadhah nganggo versi OS sing dikarepake, contone. $ lxc launch images:ubuntu/16.04 dev16.

Penting kanggo elinga yen ing babagan isolasi, containerization nduweni permukaan serangan sing luwih gedhe dibandhingake karo virtualisasi - host lan wadah nuduhake inti siji, kerentanan sing bisa ngidini malware uwal saka wadhah kasebut. Nalika nyobi piranti lunak sing ragu-ragu, luwih becik nggunakake mekanisme isolasi sing luwih cocog.

link migunani

Source: www.habr.com

Add a comment