Linux Kung Fu Style: Sinkronisasi Pengaturan

Salah satu kualitas terbaik Linux dan sistem operasi serupa adalah penyesuaiannya yang mendalam. Jika Anda tidak menyukai sesuatu, kemungkinan besar Anda dapat dengan mudah mengubahnya dengan mengubah beberapa file. Misalnya, pertimbangkan bash, shell perintah yang populer dengan ukuran apa pun. Jika Anda perlu mengubah prompt baris perintah, ini cukup mungkin. Jika Anda menginginkan kunci Tab



untuk memungkinkan pelengkapan otomatis nama file yang tidak peka huruf besar / kecil, itu juga bukan masalah. Biasanya, pengaturan ini dilakukan di salah satu yang disebut "file profil", yang .bashrc



terletak di direktori home pengguna. Jika seseorang bekerja di satu komputer, maka dia tidak memiliki masalah dengan pengaturannya. Ini berkontribusi ke file







.bashrc



, dan di file serupa lainnya, perubahan yang diperlukan, menyesuaikan sistem untuk dirinya sendiri, dan bekerja di lingkungan yang berperilaku seperti yang dia inginkan. Masalah muncul ketika seseorang harus menggunakan banyak komputer. Mungkin kita berbicara tentang server web, komputer desktop, mesin yang berperan sebagai firewall, dan beberapa lusin Raspberry Pi. Bagaimana Anda mengkonfigurasi semua sistem ini agar sama? Dan bagaimana, setelah semuanya dikonfigurasi dengan cara yang sama, apakah Anda tetap memperbarui pengaturan?



Beberapa opsi untuk pengaturan sinkronisasi



Sebenarnya, ada beberapa cara untuk melakukan sinkronisasi pengaturan pada sistem Linux. Karena pengaturan ini biasanya disimpan dalam beberapa jenis file, hampir semua mekanisme sinkronisasi dapat digunakan untuk menyelesaikan masalah kami. Ini akan memakan waktu, tetapi sebagai hasilnya Anda dapat mencapai apa yang Anda inginkan. Misalkan Anda dapat meletakkan semua file konfigurasi dalam satu direktori, dan kemudian meletakkan tautan simbolik ke file-file ini di tempat yang tepat di direktori home Anda. Selanjutnya, Anda dapat, menggunakan rsync



, menyinkronkan folder ini di antara sistem yang berbeda.



Jika Anda sudah familiar dengan Git, maka Anda sudah bisa menebak tentang opsi lain untuk menyelesaikan masalah ini. Di sini, selain kemampuan untuk menyinkronkan pengaturan, Anda juga akan memiliki kesempatan untuk mengetahui apa dan kapan diubah dalam file konfigurasi Anda. Bahkan, aku di bahan cara yang tidak biasa untuk menggunakan Git, telah berbicara tentang hal itu, menunjukkan saya sistem pengaturan sinkronisasi, berdasarkan Git. Namun baru-baru ini, saya menemukan bahwa ada sistem yang disebut chezmoi , yang ditulis dalam Go, dan menggunakan pendekatan untuk menyinkronkan pengaturan yang sama sekali berbeda dari milik saya.



Fitur Chezmoi



Menurut data dari repositori proyek, ia chezmoi



menawarkan opsi berikut kepada pengguna:



  • Deskripsi deklaratif tentang status yang diinginkan dari file direktori home.
  • Menggunakan template untuk membuat file.
  • Keamanan kerja dipastikan dengan integrasi dengan Bitwarden, dengan LastPass dan dengan beberapa program untuk penyimpanan lokal kunci.
  • Dukungan untuk penanganan pembaruan atom. Ini melindungi sistem agar tidak jatuh ke kondisi "perantara".
  • Dukungan untuk berbagai sistem operasi.
  • Pengguna diberitahu tentang tindakan yang direncanakan untuk dilakukan, mode "uji coba" didukung.
  • Kecepatan kerja tinggi, kemampuan untuk memilih yang digunakan dalam hubungannya dengan chezmoi



    sistem kontrol versi.


Semuanya terlihat sangat menarik. Prosedur untuk menginstal utilitas di sistem operasi yang berbeda memiliki kekhasannya sendiri, instruksi yang sesuai dapat ditemukan di repositori proyek.



Menggunakan chezmoi



File yang dapat dieksekusi yang memberikan akses ke kapabilitas chezmoi



, tidak mengherankan, mengulangi nama proyek. Ini mendukung beberapa perintah, di antaranya saya ingin mencatat yang berikut:



  • add



    - menambahkan file ke file yang dikelola oleh sistem.
  • edit



    - pengeditan file.
  • diff



    - mencari tahu perubahan apa, jika ada, yang menunggu penyertaan dalam versi file yang berfungsi.
  • apply



    - penyertaan perubahan menunggu persetujuan dalam versi kerja file.


Ketika file baru ditambahkan ke sistem, salinannya ditempatkan di direktori ~/.local/share/chezmoi



. Untuk kompatibilitas dengan sistem kontrol versi, chezmoi



abaikan file dalam direktori ini yang namanya diawali dengan titik. Oleh karena itu, jika Anda menambahkan, misalnya, file ke sistem .bashrc



, maka secara otomatis akan diubah namanya menjadi dot_bashrc



.



Jika saja kemungkinannya chezmoi



terbatas pada ini, maka tidak akan ada yang luar biasa dalam utilitas ini. Yang paling menarik di sini adalah sinkronisasi salinan file. Untuk mengatasi masalah ini, ini chezmoi



menggunakan sistem kontrol versi eksternal. Tetapi apa yang terjadi jika beberapa komputer yang pengaturannya sedang disinkronkan memerlukan beberapa pengaturan khusus?



Dukungan untuk pengaturan khusus



Misalnya, di komputer desktop, Anda perlu menggunakan prompt baris perintah kustom. Dan di server, di firewall, dan di komputer Raspberry Pi, Anda akan puas dengan undangan biasa. Ini berarti bahwa pada setiap komputer, dalam file tersebut .bashrc



, nilai parameter khusus harus ada PS1



.



Ini dapat dilakukan dengan menambahkan entri yang sesuai ke bagian data



file chezmoi.yaml



. Nyatanya, Anda dapat menggunakan berbagai format di sini, khususnya - JSON



dan TOML



. File ini unik untuk setiap komputer. Ini memungkinkan Anda untuk membuat perubahan pada file template. Misalnya, chezmoi.yaml



komputer desktop mungkin berisi entri tentangPS1String



, yang menjelaskan pengaturan kompleks untuk prompt baris perintah, dan dalam file yang sama untuk Raspberry Pi, entri serupa sudah akan diatur dengan lebih mudah.



Untuk menambahkan file tertentu ke sistem yang akan digunakan sebagai templat (misalnya, file .bashrc



), Anda perlu menggunakan opsi -T



perintah add



. File template berdasarkan .bashrc



akan memiliki nama dot_bashrc.tmpl



. Mekanisme pembuatan template Go standar memberi pengguna chezmoi



berbagai opsi. Selain itu, chezmoi



ini memungkinkan Anda untuk menggunakan variabel, yang, misalnya, memungkinkan Anda bekerja dengan nama dan nama pengguna komputer, dengan pengenal OS dan arsitektur.



Berkat kemampuan yang digunakan dalamchezmoi



bahasa template, pengguna memiliki lebih banyak kebebasan daripada hanya menggunakan variabel. Di template, khususnya, Anda bisa menggunakan kondisional. Misalnya, akan terlihat seperti ini:



#  
export EDITOR=vi
 
# ,    
{{- if eq .chezmoi.hostname "work-laptop" }}
#     ~/<code>.bashrc</code>  work-laptop
{{- end }}

      
      





Keamanan



Chezmoi



mengenali file pribadi dan memprosesnya sesuai dengan itu. Jadi, direktori bersifat pribadi chezmoi



, sistem menggunakan awalan private_



saat memberikan nama ke file pribadi (misalnya, nama file tersebut mungkin terlihat seperti itu private_dot_bashrc



).



Diasumsikan bahwa beberapa sistem kontrol versi akan digunakan untuk mengatur sinkronisasi file. Dengan kata lain, saat menyiapkan komputer baru atau memperbarui setelan mesin tertentu, Anda menyinkronkan konten direktori chezmoi



dengan salinan setelan yang disimpan di sistem kontrol versi. Kemudian semua yang perlu dikonfigurasi dalam file konfigurasi dan perubahan diterapkan, mungkin dengan pemeriksaan awal perubahan mana yang akan diterapkan.



Ini berarti, tentu saja, file yang disimpan akan menjadi "privat" seperti yang diizinkan oleh sistem kontrol versi. Jika Anda menerbitkan file konfigurasi Anda ke sistem publik, itu berarti tidak ada lagi pertanyaan tentang "privasi". Salah satu cara untuk mengatasi masalah ini adalah dengan menggunakan sistem template, dan tidak memproses file konfigurasi dengan sistem kontrol versi. Dan itu, karena unik untuk setiap komputer, dalam hal apapun tidak boleh diproses menggunakan sistem kontrol versi. Artinya, antara lain, harus disimpan secara berbeda dari file lain.



Misalkan Anda memiliki entri seperti ini di file konfigurasi Anda:



hackaday:

   password: 0xdeadbeef

      
      





Kata sandi harus dirahasiakan. Dan dalam file publik, konstruksi berikut dapat digunakan:



password = {{ .hackaday.password }}

      
      





Saat bekerja dengan chezmoi



, Anda masih dapat menggunakan file konfigurasi yang dienkripsi dengan gpg



.



Sistem kontrol versi



Jika kita berbicara tentang sistem kontrol versi, maka chezmoi



ada perintah untuk mengirim materi ke sistem kontrol versi yang didukung dan, karenanya, perintah untuk memuat data. Defaultnya digunakan git



, tetapi ada opsi lain, seperti hg



. Pengaturan terkait dibuat di file konfigurasi.



Ada juga perintah yang memungkinkan Anda mendapatkan satu set lengkap file konfigurasi atau mengekspor konfigurasi. Anda dapat membaca tentang perintah ini di repositori proyek. Secara default, semua pekerjaan dilakukan di direktori home, tetapi jika perlu, Anda dapat mengkonfigurasi program untuk bekerja dengan direktori target yang berbeda.



Hasil



Secara keseluruhan, dapat dicatat bahwa chezmoi



ini tampak seperti proyek yang dipikirkan dengan matang. Tetapi saya tidak melihat apa pun di sini yang akan memaksa saya untuk beralih chezmoi



dari sistem sinkronisasi pengaturan saya. Jika saya tersandung chezmoi



ketika saya baru saja memikirkan tentang bagaimana menyelesaikan masalah tersebut, maka saya mungkin akan menggunakan proyek khusus ini, dan bukan membuat sendiri. Saya tidak membantah bahwa sistem template chezmoi



sangat bagus, tetapi sistem saya mencapai efek yang sama dengan memilih file yang berbeda bergantung pada lingkungan.



File pengaturan unikchezmoi



sulit ditangani dengan kontrol versi. Ya, biasanya pengguna cenderung tidak melakukan ini. Jika repositori yang digunakan untuk menyimpan pengaturan bersifat pribadi, atau jika informasi pribadi tidak disertakan dalam file konfigurasi, Anda dapat meletakkan opsi untuk file pengaturan ke dalam sistem ini chezmoi



(misalnya, mungkin ada versi file ini untuk Raspberry Pi dan untuk komputer biasa). Kemudian, saat Anda pertama kali menyiapkan komputer, Anda dapat mengganti nama file yang sesuai. Tetapi kemungkinan besar file konfigurasi sistem akan disalin begitu saja. Pendekatan yang sesuai dengan file konfigurasichezmoi



tidak ditangani oleh kontrol versi, ada keuntungannya jika semuanya dikonfigurasi dengan benar, Anda dapat dengan aman menggunakan repositori publik untuk menyimpan data.



Dan untuk pengoperasian sistem saya, sangat penting untuk menggunakan repositori pribadi - jika hanya orang yang menggunakannya tidak peduli tentang memasukkan file konfigurasinya ke domain publik. Namun, semua file diproses menggunakan sistem kontrol versi. Sistem ini memungkinkan Anda mengikuti semua perubahan tanpa perlu menggunakan template, yang membutuhkan waktu untuk menguasainya. Anda hanya perlu menempatkan pengaturan di file yang sesuai. Satu-satunya fitur yang dapat saya tambahkan ke sistem saya, terinspirasi olehchezmoi



, ini adalah kemampuan untuk menambahkan file baru ke dalamnya, yang dipantau. Meskipun sistem saya memungkinkan Anda untuk menyinkronkan pengaturan, sekarang Anda perlu menambahkan file ke dalamnya secara manual. File tersebut dipindahkan ke direktori khusus, setelah itu entri file ditambahkan ke sistem dan tautan simbolis dibuat.



Tapi inilah gunanya Linux. Ada banyak cara untuk mengatasi masalah yang sama. Jika Anda tidak menyukai satu hal, Anda dapat menemukan yang lain. Dan jika Anda tidak menyukai apa pun, Anda dapat membuatnya sendiri tanpa banyak kesulitan. Ini, bagaimanapun, menciptakan masalah tertentu ketika menggunakan Linux oleh banyak orang awam yang tidak terbiasa dengan ini. Mereka tidak berusaha untuk memilih dari banyak pilihan, mereka menginginkan solusi kerja yang sederhana dan jelas. Dan di komunitas Linux, sebaliknya, adalah kebiasaan untuk terus membandingkan segala sesuatu dengan segala sesuatu dan berdebat dengan semangat tentang mana yang lebih baik - emacs



baik vi



C atau Python.



Bagaimana Anda menyinkronkan pengaturan di berbagai mesin Linux?










All Articles