From a668f80ec72d75226c2041e7dcb1c045c30260d8 Mon Sep 17 00:00:00 2001 From: Ervien Ismunandar S Date: Sun, 12 May 2024 20:02:20 +0700 Subject: [PATCH 1/6] translate(id): lxc contribue Signed-off-by: Ervien Ismunandar S --- content/lxc/contribute.id.md | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 content/lxc/contribute.id.md diff --git a/content/lxc/contribute.id.md b/content/lxc/contribute.id.md new file mode 100644 index 00000000..01de6f25 --- /dev/null +++ b/content/lxc/contribute.id.md @@ -0,0 +1,76 @@ + +# Sumber Kode + + +Versi development LXC saat ini dapat diclone dari Github dengan: + + git clone git://github.com/lxc/lxc + + +Sumber kode tarball dari berbagai rilis stabil juga tersedia di bagian [unduhan](/lxc/downloads/). + + +Patch yang dikirim ke hulu untuk ditinjau harus didasarkan pada git tree saat ini dan bukan pada rilis stabil, kecuali bug hanya memengaruhi rilis stabil. + + +# Proses Pengajuan Patch + + +Setiap pengajuan patch **harus** ditandatangani oleh author. + + +Cara yang mudah adalah dengan menggunakkan : `git commit -s` + + +dan jika Anda lupa "-s" pada commit sebelumnya : `git commit --amend -s` + + +## Cara mailing-list + + +Anda dapat berkontribusi ke LXC dengan mengirimkan patch atau patchset langsung ke [milis lxc-devel](https://lists.linuxcontainers.org/). + + +Anda dapat menggunakan `git format-patch` untuk membuat patch yang dapat dikirimkan. + + +Hati-hati terhadap "copy-paste" pada klien email karena dapat merusak tab dan baris (lihat `git send-email` atau `git imap-send`). + + +## Cara pull-request + + +Fork repositori, buat sebuah branch, commit pekerjaanmu (dengan -s !), dan push. + + +Lalu ikuti [dokumentasi GitHub](https://help.github.com/articles/creating-a-pull-request/). From 47fb769b1a61ac120b15c3bd425edb5ff16a9197 Mon Sep 17 00:00:00 2001 From: Ervien Ismunandar S Date: Sun, 12 May 2024 20:03:15 +0700 Subject: [PATCH 2/6] translate(id): lxc documentation Signed-off-by: Ervien Ismunandar S --- content/lxc/documentation.id.md | 240 ++++++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 content/lxc/documentation.id.md diff --git a/content/lxc/documentation.id.md b/content/lxc/documentation.id.md new file mode 100644 index 00000000..a0182301 --- /dev/null +++ b/content/lxc/documentation.id.md @@ -0,0 +1,240 @@ + +# Alat baris perintah + + +Untuk alat baris perintah, tolong merujuk ke [man pages.](/lxc/manpages/) + + +# API + + +LXC dikirimkan dengan C API yang stabil dan banyak bindings. API ini stabil dan diberikan versi yang baik. Kami mungkin membuat penambahan kedalam liblxcl API didalam rilis LXC namun tidak menghapus atau merubah symbol yang sudah ada tanpa memanggil ini liblxc2. + + +Versi pertama LXC untuk dikirim dengan stabil API adalah LXC 1.0.0. Hanya simbol yang terdaftar didalam [lxccontainer.h](https://github.com/lxc/lxc/blob/master/src/lxc/lxccontainer.h) adalah bagian dari API, selainnya adalah internal ke LXC dan dapat berubah kapan saja. + + +## C + + +Seperti yang disebutkan diatas, [lxccontainer.h](https://github.com/lxc/lxc/blob/master/src/lxc/lxccontainer.h) adalah C publik API kami. + + +Beberapa contoh terbaik penggunaan API adalah binding dan alat LXC itu sendiri. + + +Kami juga memiliki dokumentasi API terbaru untuk git master saat ini [disini.](/lxc/apidocs/) + + +Dan sekarang sebuah contoh sederhana terkait bagaimana untuk menggunakan API untuk create, start, stop dan destroy sebuah container. + + #!c + #include + + #include + + int main() { + struct lxc_container *c; + int ret = 1; + + /* Setup container struct */ + c = lxc_container_new("apicontainer", NULL); + if (!c) { + fprintf(stderr, "Failed to setup lxc_container struct\n"); + goto out; + } + + if (c->is_defined(c)) { + fprintf(stderr, "Container already exists\n"); + goto out; + } + + /* Create the container */ + if (!c->createl(c, "download", NULL, NULL, LXC_CREATE_QUIET, + "-d", "ubuntu", "-r", "trusty", "-a", "i386", NULL)) { + fprintf(stderr, "Failed to create container rootfs\n"); + goto out; + } + + /* Start the container */ + if (!c->start(c, 0, NULL)) { + fprintf(stderr, "Failed to start the container\n"); + goto out; + } + + /* Query some information */ + printf("Container state: %s\n", c->state(c)); + printf("Container PID: %d\n", c->init_pid(c)); + + /* Stop the container */ + if (!c->shutdown(c, 30)) { + printf("Failed to cleanly shutdown the container, forcing.\n"); + if (!c->stop(c)) { + fprintf(stderr, "Failed to kill the container.\n"); + goto out; + } + } + + /* Destroy the container */ + if (!c->destroy(c)) { + fprintf(stderr, "Failed to destroy the container.\n"); + goto out; + } + + ret = 0; + out: + lxc_container_put(c); + return ret; + } + + +## Python + + +Python binding biasanya sangat dekat dengan C API kecuali dalam bagian export properti object alih-alih structs. + + +Binding dibuat dalam 2 bagian, raw "\_lxc" ekstensi C dan "lxc" pyhton overlay yang menyediakan pengalaman pengguna yang lebih ditingkatkan. + + +Membuat sebuah container bernama "test" dapat dilakukkan dengan: + + #!python + import lxc + container = lxc.Container("test") + + +Untuk convenience, network dapat diakses sebagai list (dan dimodifikasi seperti itu juga): + + #!python + container.network[0].ipv4 = "10.0.3.50" + container.network[0].ipv4_gateway = "10.0.3.1" + + +Konfigurasi input Multi-value direpresentasikan sebagai list: + + #!python + container.get_config_item("lxc.cap.drop") + ['mac_admin', 'mac_override', 'sys_time', 'sys_module'] + + container.append_config_item("lxc.cap.drop", "net_admin") + True + + container.get_config_item("lxc.cap.drop") + ['mac_admin', 'mac_override', 'sys_time', 'sys_module', 'net_admin'] + + container.set_config_item("lxc.cap.drop", ["mac_admin", "mac_override"]) + True + + container.get_config_item("lxc.cap.drop") + ['mac_admin', 'mac_override']) + + +Dan sekarang untuk contoh end-to-end yang sudah selesai di C: + + #!/usr/bin/python3 + import lxc + import sys + + # Setup the container object + c = lxc.Container("apicontainer") + if c.defined: + print("Container already exists", file=sys.stderr) + sys.exit(1) + + # Create the container rootfs + if not c.create("download", lxc.LXC_CREATE_QUIET, {"dist": "ubuntu", + "release": "trusty", + "arch": "i386"}): + print("Failed to create the container rootfs", file=sys.stderr) + sys.exit(1) + + # Start the container + if not c.start(): + print("Failed to start the container", file=sys.stderr) + sys.exit(1) + + # Query some information + print("Container state: %s" % c.state) + print("Container PID: %s" % c.init_pid) + + # Stop the container + if not c.shutdown(30): + print("Failed to cleanly shutdown the container, forcing.") + if not c.stop(): + print("Failed to kill the container", file=sys.stderr) + sys.exit(1) + + # Destroy the container + if not c.destroy(): + print("Failed to destroy the container.", file=sys.stderr) + sys.exit(1) + + +Sebuah fitur yang bagus di python binding adalah kemampuan untuk menjalankan fungsi didalam container's context seperti pada contoh dibawah adalah script mengupdate semua container Anda: + + #!/usr/bin/python3 + import lxc + import sys + + for container in lxc.list_containers(as_object=True): + # Start the container (if not started) + started = False + if not container.running: + if not container.start(): + continue + started = True + + if not container.state == "RUNNING": + continue + + # Wait for connectivity + if not container.get_ips(timeout=30): + continue + + # Run the updates + container.attach_wait(lxc.attach_run_command, + ["apt-get", "update"]) + container.attach_wait(lxc.attach_run_command, + ["apt-get", "dist-upgrade", "-y"]) + + # Shutdown the container + if started: + if not container.shutdown(30): + container.stop() From fef1da366016a62a81065d7b5738e1b64f773e7c Mon Sep 17 00:00:00 2001 From: Ervien Ismunandar S Date: Sun, 12 May 2024 20:03:46 +0700 Subject: [PATCH 3/6] translate(id): lxc downloads Signed-off-by: Ervien Ismunandar S --- content/lxc/downloads.id.md | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 content/lxc/downloads.id.md diff --git a/content/lxc/downloads.id.md b/content/lxc/downloads.id.md new file mode 100644 index 00000000..1ca7d9fa --- /dev/null +++ b/content/lxc/downloads.id.md @@ -0,0 +1,55 @@ + +# Distribusi Paket + + +LXC disertakan di sebagian besar distribusi Linux. Dalam kebanyakan kasus, menginstalnya semudah memilihnya di manajer paket Anda. + + +Distribusi juga sering menyediakan backport versi LXC yang lebih baru untuk rilis stabilnya. Anda mungkin ingin mencarinya, terutama jika distribusi Anda tidak menyertakan LXC 5.0 atau 4.0. + + +Untuk lingkungan produksi, cobalah untuk tetap menggunakan LXC 5.0.x atau 4.0.x karena ini adalah rilis stabil jangka panjang yang akan kami dukung masing-masing hingga Juni 2027 (5.0.x) dan Juni 2025 (4.0.x). + + +# Versi pengembangan saat ini + + +LXC memiliki 3 cabang git aktif: + + + * **master**: Cabang pengembangan saat ini + * **stable-5.0**: Cabang pembaruan stabil untuk LXC 5.0.x + * **stable-4.0**: Cabang pembaruan stabil untuk LXC 4.0.x + + +Anda dapat melakukkan clone langsung dengan: + + git clone git://github.com/lxc/lxc -b + + +# Rilis tarball + + +Tarball rilis stabil tersedia untuk diunduh di bawah. Semua tarball adalah GPG yang ditandatangani oleh salah satu pengembang. From c6ff4a67dbeef925a80769fe829e2ec44282003f Mon Sep 17 00:00:00 2001 From: Ervien Ismunandar S Date: Sun, 12 May 2024 20:04:10 +0700 Subject: [PATCH 4/6] translate(id): lxc introduction Signed-off-by: Ervien Ismunandar S --- content/lxc/introduction.id.md | 122 +++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 content/lxc/introduction.id.md diff --git a/content/lxc/introduction.id.md b/content/lxc/introduction.id.md new file mode 100644 index 00000000..11dae318 --- /dev/null +++ b/content/lxc/introduction.id.md @@ -0,0 +1,122 @@ + +# Apa itu LXC? + + +LXC adalah antarmuka userspace untuk fitur containment Linux kernel. Melalui API yang kuat dan alat yang sederhana, ini memungkinkan pengguna Linux dengan mudah membuat dan mengelola sistem atau aplikasi container. + + +# Fitur - fitur + + +LXC saat ini menggunakan fitur kernel berikut untuk memuat proses: + + * Kernel namespaces (ipc, uts, mount, pid, network and user) + * Apparmor dan SELinux profiles + * Seccomp policies + * Chroots (using pivot\_root) + * Kernel capabilities + * CGroups (control groups) + + +Container LXC sering dianggap sebagai sesuatu di tengah-tengah antara chroot dan mesin virtual yang lengkap. Tujuan LXC adalah menciptakan lingkungan yang sedekat mungkin dengan instalasi Linux standar tetapi tanpa memerlukan kernel terpisah. + + +# Komponen + + +LXC saat ini dibuat dari beberapa komponen terpisah: + + + * Library liblxc + * Beberapa language bindings untuk API: + * [python3](https://github.com/lxc/python3-lxc) + * [lua](https://github.com/lxc/lua-lxc) + * [Go](https://github.com/lxc/go-lxc) + * [ruby](https://github.com/lxc/ruby-lxc) + * [Haskell](https://github.com/fizruk/lxc) + * Seperangkat alat standar untuk mengatur Container + * Distribusi template Container + + + +# Lisensi + + +LXC adalah perangkat lunak gratis, sebagian besar kode dirilis di bawah ketentuan lisensi GNU LGPLv2.1+, beberapa kompatibilitas Android dirilis di bawah lisensi 2-klausul BSD standar dan beberapa binari serta template dirilis di bawah lisensi GNU GPLv2. + + +Lisensi default untuk proyek ini adalah GNU LGPLv2.1+. + + +# Dukungan + + +Dukungan rilis stabil LXC bergantung pada distribusi Linux dan komitmen mereka untuk mendorong perbaikan stabil dan pembaruan keamanan. + + +Berdasarkan kebutuhan dan sumber daya yang tersedia dari berbagai distribusi, versi tertentu LXC dapat menikmati dukungan jangka panjang dengan pembaruan perbaikan bug yang sering dilakukan. + + +Rilis lainnya biasanya akan dipertahankan berdasarkan upaya terbaik yang biasanya berarti hingga rilis stabil berikutnya keluar. + + +## Dukungan yang diperluas + + +LXC 5.0 dan 4.0 adalah rilis dengan dukungan jangka panjang: + + +- LXC 5.0 didukung hingga 1 Juni 2027 +- LXC 4.0 didukung hingga 1 Juni 2025 From 884a7838eba38a246d3653cb1092e6e665409126 Mon Sep 17 00:00:00 2001 From: Ervien Ismunandar S Date: Sun, 12 May 2024 20:04:33 +0700 Subject: [PATCH 5/6] translate(id): lxc news Signed-off-by: Ervien Ismunandar S --- content/lxc/news.id.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 content/lxc/news.id.md diff --git a/content/lxc/news.id.md b/content/lxc/news.id.md new file mode 100644 index 00000000..b1585889 --- /dev/null +++ b/content/lxc/news.id.md @@ -0,0 +1 @@ +# Berita From 02fd975715ac416154e8ec63eb64687f1ce7d906 Mon Sep 17 00:00:00 2001 From: Ervien Ismunandar S Date: Sun, 12 May 2024 20:05:15 +0700 Subject: [PATCH 6/6] translate(id): update structure content for lxc pages Signed-off-by: Ervien Ismunandar S --- content/STRUCTURE.id.json | 42 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/content/STRUCTURE.id.json b/content/STRUCTURE.id.json index e04d44f6..84cd0fed 100644 --- a/content/STRUCTURE.id.json +++ b/content/STRUCTURE.id.json @@ -82,32 +82,32 @@ "meta": {"target": "/lxc/introduction/"}}, {"path": "/lxc/introduction/", - "title": "LXC - Introduction", - "menu": ["LXC", "Introduction"], + "title": "LXC - Pengenalan", + "menu": ["LXC", "Pengenalan"], "generator": "markdown", - "meta": {"input": "lxc/introduction.md"}}, + "meta": {"input": "lxc/introduction.id.md"}}, {"path": "/lxc/news/", - "title": "LXC - News", - "menu": ["LXC", "News"], + "title": "LXC - Berita", + "menu": ["LXC", "Berita"], "generator": "news", "meta": {"dir": "/content/lxc/news/", - "input": "lxc/news.md", + "input": "lxc/news.id.md", "toc_depth": "2-2", "str_older": "Older news", "str_back": "Back to the news overview"}}, {"path": "/lxc/getting-started/", - "title": "LXC - Getting started", - "menu": ["LXC", "Getting started"], + "title": "LXC - Memulai", + "menu": ["LXC", "Memulai"], "generator": "markdown", "meta": {"input": "lxc/getting-started.md"}}, {"path": "/lxc/documentation/", - "title": "LXC - Documentation", - "menu": ["LXC", "Documentation"], + "title": "LXC - Dokumentasi", + "menu": ["LXC", "Dokumentasi"], "generator": "markdown", - "meta": {"input": "lxc/documentation.md"}}, + "meta": {"input": "lxc/documentation.id.md"}}, {"path": "/lxc/apidoc/", "generator": "directory", @@ -120,30 +120,30 @@ "meta": {"dir": "/manpages/lxc"}}, {"path": "/lxc/contribute/", - "title": "LXC - Contribute", - "menu": ["LXC", "Contribute"], + "title": "LXC - Kontribusi", + "menu": ["LXC", "Kontribusi"], "generator": "markdown", - "meta": {"input": "lxc/contribute.md"}}, + "meta": {"input": "lxc/contribute.id.md"}}, {"path": "/lxc/security/", - "title": "LXC - Security", - "menu": ["LXC", "Security"], + "title": "LXC - Keamanan", + "menu": ["LXC", "Keamanan"], "generator": "markdown", "meta": {"input": "lxc/security.md"}}, {"path": "/lxc/downloads/", - "title": "LXC - Downloads", - "menu": ["LXC", "Downloads"], + "title": "LXC - Unduh", + "menu": ["LXC", "Unduh"], "generator": "downloads", "meta": {"dir": "/downloads/lxc", - "input": "lxc/downloads.md"}}, + "input": "lxc/downloads.id.md"}}, {"path": "/lxc/external-resources/", "menu": ["LXC", "External resources"]}, {"path": "/lxc/articles/", - "title": "LXC - Articles", - "menu": ["LXC", "Articles"], + "title": "LXC - Artikel", + "menu": ["LXC", "Artikel"], "generator": "markdown", "meta": {"input": "lxc/articles.md"}},