Cara menggunakan lingkungan boneka di linux untuk memperbarui agen dengan aman

Cara menggunakan lingkungan boneka di linux untuk memperbarui agen dengan aman

Objektif

Buat dan gunakan lingkungan boneka untuk menguji konfigurasi baru sebelum memperbarui sistem produksi langsung.

Sistem Operasi dan Versi Perangkat Lunak

  • Sistem operasi: Distribusi linux utama apa pun e.G. Ubuntu, Debian, Centos
  • Perangkat lunak: Boneka dan Puppet-Master

Persyaratan

Akses istimewa ke server master boneka dan node klien boneka.

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa

Perkenalan

Sebagian besar instalasi boneka mulai hidup sebagai server master yang menjalankan cabang tunggal. Master berisi semua manifes dan konfigurasi lainnya untuk semua agen boneka yang disinkronkan. Ini adalah tempat yang bagus untuk memulai tetapi akan segera tiba saat pembaruan perlu mendorong yang berpotensi merusak server produksi. Berharap yang terbaik bukanlah cara terbaik untuk melanjutkan.

Boneka menyediakan alat untuk memisahkan seluruh cabang konfigurasi. Ini disebut lingkungan. Lingkungan boneka adalah cara untuk memasok kelompok node agen yang terisolasi dengan konfigurasi khusus mereka sendiri. Setiap lingkungan berisi seluruh pohon konfigurasi boneka dan dapat dianggap sebagai server master boneka terpisah.

Bagaimana lingkungan boneka digunakan?

Skenario khas untuk lingkungan, dan merupakan yang kami jelajahi dalam panduan ini, adalah untuk menciptakan lingkungan pengujian, di samping lingkungan produksi, di mana konfigurasi boneka baru dibuat.

Salah satu cara untuk menguji konfigurasi baru di lingkungan pengujian adalah dengan memperbarui salinan server produksi, seperti snapshot VM. Masalah apa pun akan diamati pada mesin uji dan konfigurasi boneka dimodifikasi untuk memperbaikinya. Namun, tidak selalu mungkin memiliki server uji untuk memeriksa perubahan di lingkungan pengujian.

Metode lain dan yang akan kami jelajahi di sini adalah menjalankan agen boneka secara manual di server produksi tetapi menggunakan beberapa opsi yang akan menyebabkan agen boneka disinkronkan ke lingkungan pengujian tetapi hanya menunjukkan apa yang akan terjadi tanpa membuat perubahan aktual. Ini akan menyoroti kesalahan apa pun yang akan terjadi dalam pembaruan lengkap tanpa benar -benar menyebabkan downtime apapun.

Menciptakan lingkungan boneka

Dalam panduan ini, kami akan membuat instance boneka yang sangat sederhana dengan master boneka dan node agen boneka. Server Master Wayang akan dikonfigurasi untuk memiliki dua lingkungan; Pengujian dan Pengembangan.

Panduan ini mengasumsikan bahwa Anda memiliki server master boneka dan node agen boneka yang dapat terhubung ke master boneka.

Kami akan membuat dua lingkungan di master boneka dan di dalam lingkungan ini kami akan membuat manifes boneka yang sangat sederhana yang membuat file teks pada node agen.

Lokasi default untuk perubahan konfigurasi boneka tergantung pada distribusi yang Anda gunakan. Di Ubuntu 18.04LTS, versi yang akan digunakan dalam panduan ini, lokasi ada di /etc/boneka. Distribusi lain (dan dokumentasi resmi) dapat menempatkannya di /etc/puppetlabs/. Namun, begitu Anda berada di direktori konfigurasi boneka utama, semua sub-direktori adalah sama untuk semua distribusi.

Instruksi

Buat direktori lingkungan

Lingkungan dan konfigurasinya semuanya ada di bawah /etc/boneka/kode/ direktori. Di Ubuntu 18.04 Direktori ini kosong saat menginstal sehingga kita harus terlebih dahulu membuat dua direktori lingkungan tingkat atas dengan dua perintah berikut:

# mkdir -p/etc/boneka/kode/lingkungan/pengujian # mkdir -p/etc/puppet/kode/lingkungan/pengembangan 

Setiap node agen baru akan secara otomatis terhubung ke perkembangan lingkungan kecuali lingkungan Variabel diatur ke alternatif di [agen] bagian dari wayang.conf file di node agen.



Membuat dua situs sederhana.pp manifes

Itu lokasi.pp File adalah manifes utama dari mana agen boneka mulai membangun katalog keadaan mesin yang diinginkan. Kami akan membuat dua yang sangat sederhana lokasi.pp file di dua lingkungan yang membuat file yang sama di node agen. Satu -satunya perbedaan adalah mereka memasukkan teks yang berbeda ke dalam file.

Pertama lokasi.pp File akan menjadi lingkungan produksi di:

/etc/boneka/kode/lingkungan/pengembangan/manifes/situs.pp

File ini seharusnya memiliki konten berikut:

file '/tmp/contoh.txt ': pastikan => present, mode => "0644", content => "dari lingkungan pengembangan \ n", 
Menyalin

Gunakan editor teks favorit Anda untuk membuat dan mengisi file ini.

Manifes ini memastikan bahwa ada file /TMP/contoh.txt dan berisi teks "dari lingkungan pengembangan" ("\ n" menambahkan baris baru di akhir file yang merupakan praktik yang baik dan menghentikan boneka yang menunjukkan pesan peringatan saat tidak ada).

Manifes kedua akan berada di bawah lingkungan pengujian di:

/etc/boneka/kode/lingkungan/pengujian/manifes/situs.pp

File ini berisi yang berikut:

file '/tmp/contoh.txt ': pastikan => present, mode => "0644", content => "dari lingkungan pengujian \ n", 
Menyalin

Ini hampir identik dengan file di lingkungan pengembangan dengan satu -satunya perbedaan adalah bahwa teks dalam file menunjukkan bahwa itu berasal dari lingkungan pengujian.

Mengevaluasi konfigurasi boneka baru dari lingkungan pengujian

Node agen secara default hanya akan disinkronkan ke lingkungan pengembangan. Pertama -tama kita akan menginstruksikan agen boneka secara manual untuk disinkronkan dengan server master boneka dan membuat dan menerapkan lokasi.pp yang kami buat di lingkungan pengembangan.

Ini dilakukan dengan perintah berikut:

# agen boneka --environment = produksi - -test 

Itu --tes Opsi membuat agen boneka melakukan katalog berjalan di latar depan dengan logging verbose. Pembaruan atau perubahan apa pun akan diterapkan ke node.

Itu --lingkungan = produksi opsi ada untuk memperjelas bahwa kami menyinkronkan dari lingkungan produksi. Biasanya, ini akan dikonfigurasi dalam konfigurasi agen boneka utama dan tidak perlu dimasukkan dalam perintah.

Ketika perintah di atas dijalankan, kami mendapatkan output berikut:

 Info: Menggunakan Info 'Produksi' Lingkungan yang Dikonfigurasi: Mengambil PluginFacts Info: Mengambil Info Plugin: Mengambil Lokal Info: Memuat Fakta Info: Caching Catalog untuk Digital-2.Info bersih: Menerapkan Versi Konfigurasi '1527680694' PEMBERITAHUAN:/Tahap [main]/main/file [/tmp/contoh.txt]/Pastikan: konten yang ditentukan sebagai 'md5 59f9ce1d4aad5fd15db7ccc2478a93b' Pemberitahuan: Katalog Terapan di 0.02 detik 

Output ini menunjukkan file itu /TMP/contoh.txt tidak hadir sehingga agen boneka membuatnya seperti yang diinstruksikan dalam lokasi.pp tampak. Lari berikutnya tidak akan memiliki Melihat: garis sebagai /TMP/contoh.txt file ada dengan konten yang benar.

Sekarang negara node agen setuju dengan manifes lingkungan pembangunan kita dapat menguji apa yang akan terjadi jika kita menerapkan manifes alternatif dari lingkungan pengujian.

Untuk menguji dan tidak melakukan konfigurasi baru, kita perlu menjalankan perintah berikut:

# agen boneka --environment = pengujian - -test -noop 

Seperti yang Anda lihat --lingkungan Opsi telah diubah menjadi pengujian dan kami telah memasukkan opsi tambahan --NOOP. Opsi ini membuat agen melakukan kering. Ini berarti bahwa agen boneka tidak akan membuat perubahan aktual pada node agen tetapi akan menghasilkan semua output seolah -olah sudah.

Ini memungkinkan kami untuk mengevaluasi apa yang akan terjadi jika konfigurasi baru diterapkan ke server. Dalam hal ini output dari perintah di atas terlihat seperti:

 Info: Menggunakan Info 'Pengujian' Lingkungan yang Dikonfigurasi: Mengambil PluginFacts Info: Mengambil Info Plugin: Mengambil Lokal Info: Memuat Fakta Info: Menerapkan Versi Konfigurasi '1527683748' Pemberitahuan:/Tahap [Utama]/Utama/File [/TMP/Contoh.txt]/konten: ---/tmp/contoh.TXT 2018-05-30 12:19:16.205774048 +0000 +++ /TMP /puppet-file20180530-21610-8IPZUR 2018-05-30 12:35:48.740982652 +0000 @@ -1 +1 @@ -dari lingkungan pengembangan +dari lingkungan pengujian Pemberitahuan:/Tahap [main]/main/file [/tmp/contoh.txt]/content: current_value 'md559f9ce1d4aad5fd155db7ccc2478a93b', should be 'md5abbb8f68df144a5673d 62ae6c4a036ed' (noop) Notice: Class[Main]: Would have triggered 'refresh' from 1 event Notice: Stage[main]: Would have dipicu 'refresh' dari 1 pemberitahuan peristiwa: katalog terapan dalam 0.04 detik 

Baris yang paling menarik di sini adalah berikut ini:

 -Dari lingkungan pengembangan +dari lingkungan pengujian 

Ini menunjukkan dengan simbol minus ( -) apa yang sedang diubah dari dan dengan simbol plus ( +) apa yang sedang diubah. Dalam contoh ini adalah teks dalam file.

Semua output ini menunjukkan bahwa konfigurasi baru akan berhasil diterapkan dan isi /TMP/contoh.txt akan dimodifikasi. Jika ini adalah keadaan yang diinginkan dari server produksi maka perubahan pada lokasi.pp File dapat dibuat dengan aman di lingkungan produksi.



Mengidentifikasi kesalahan

Konfigurasi boneka baru tidak selalu diterapkan tanpa kesalahan dan itulah alasan mengapa itu harus selalu diuji sebelum diterapkan pada sistem produksi. Kami akan memaksakan kesalahan dalam situasi ini dengan membuat kesalahan yang disengaja dalam pengujian lokasi.pp mengajukan. Kami akan mencoba mengatur izin file ke 0944 yang bukan izin yang valid dan akan menyebabkan kesalahan.

Sekarang, saat kita menjalankan:

 # agen boneka --environment = pengujian - -test -noop 

Kami akan melihat output berikut:

 Info: Menggunakan Info 'Pengujian' Lingkungan yang Dikonfigurasi: Mengambil PluginFacts Info: Mengambil Info Plugin: Mengambil Lokal Info: Memuat Fakta Kesalahan: Gagal Menerapkan Katalog: Mode Parameter Gagal pada File [/TMP/Contoh.txt]: Spesifikasi mode file tidak valid: "0944" (file:/etc/puppetcode/lingkungan/pengujian/manifes/situs.pp, baris: 1) 

Penangkapan layar berikut menunjukkan output ini karena akan disajikan pada baris perintah:

Boneka akan menunjukkan kesalahan dengan mencetaknya dengan warna merah.

Warna segera memberi tahu kami bahwa akan ada kesalahan dalam mencoba menggunakan konfigurasi boneka baru dari lingkungan pengujian. Namun, saat kami menggunakan --NOOP Opsi Tidak ada kesalahan yang dilakukan ke server produksi.

Kesimpulan

Saat menjalankan sistem produksi yang dikelola oleh boneka, selalu penting untuk menguji konfigurasi baru sebelum diterapkan. Menggunakan alat boneka yang disediakan untuk menciptakan lingkungan alternatif di mana konfigurasi baru dapat dibuat dengan aman dan dievaluasi terhadap sistem produksi akan berarti lebih sedikit kesalahan dan lebih sedikit waktu henti.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Unduh Live CD/DVD Linux
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Unduh Linux
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Cara Dual Boot Kali Linux dan Windows 10
  • Cara memperbarui firefox di linux