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):
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);
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.