Trimming Threads: Bermigrasi dari Puppet Enterprise ke Ansible Tower. Bagian 2

Layanan Informasi Satelit Lingkungan Nasional (NESDIS) telah mengurangi biaya manajemen konfigurasi Red Hat Enterprise Linux (RHEL) sebesar 35% dengan pindah dari Puppet Enterprise ke Ansible Tower. Dalam video ini dari kategori "bagaimana kami melakukannya", insinyur sistem Michael Rau mendukung implementasi migrasi ini, berbagi tips dan pengalaman yang berguna yang didapat dari transisi dari satu SCM ke yang lain.

Dari video ini Anda akan belajar:

  • Bagaimana membenarkan manajemen kelayakan pindah dari Puppet Enterprise ke Ansible Tower;
  • strategi apa yang digunakan untuk transisi paling lancar;
  • kiat untuk menerjemahkan manifes PE di Playbook Ansible;
  • Praktik terbaik untuk memasang Ansible Tower.



Trimming Threads: Bermigrasi dari Puppet Enterprise ke Ansible Tower. Bagian 1



Saya memiliki tag untuk penggunaan awal yang dijalankan semua. Saya memiliki tag yang memeriksa perubahan 20% dari infrastruktur yang terjadi pada 80% waktu kerja. Situasi serupa dengan peran. Ada satu kode perawatan, kode kedua yang mengatur penyebaran, dan yang ketiga meluncurkan peralatan, katakanlah, sekali sehari. Peran memeriksa perubahan untuk semua peralatan yang akan digunakan, dan pemeriksaan dilakukan setiap dua jam untuk peralatan yang dapat berubah. Ini berlaku untuk firewall, beberapa hal administratif, dan sejenisnya.

Gunakan kebiasaan baik yang Anda peroleh saat menulis kode untuk Wayang, karena mereka akan berguna untuk Ansible. Misalnya, hal seperti idempotensi adalah properti dari suatu objek atau operasi ketika menerapkan operasi lagi ke objek untuk memberikan hasil yang sama dengan yang pertama. Dalam kasus kami, ini berarti bahwa ketika Anda menjalankan skrip playbook yang sama lagi, tidak ada yang berubah, dan sistem memberi tahu Anda bahwa tidak ada yang berubah. Jika perubahan dilakukan, itu berarti ada sesuatu yang salah dengan kode Anda. Artinya, idempotensi akan membantu Anda mendeteksi ketika ada masalah saat memulai operasi rutin yang sama.
Gunakan fakta dan pola, hindari data kode-keras. Ansible memungkinkan Anda melakukan ini dengan skrip, menangani set data secara fleksibel dan menangkap perubahan dengan cepat. Tidak ada yang seperti itu di Puppet, Anda harus meletakkan semua data penting di dalam kode sumber. Karena itu, gunakan peran, ini akan sangat memudahkan tugas Anda.

Gunakan pengendali acara yang disebabkan oleh perubahan konfigurasi. Hal yang baik adalah bahwa penangan dapat bekerja dengan urutan yang terlindungi. Dokumentasikan semua yang Anda lakukan. Saya benci ketika saya menemukan kode yang saya tulis enam bulan lalu, tanpa mendokumentasikan apa pun pada saat itu, dan saya tidak ingat mengapa saya menulisnya sama sekali. Karena itu, tugas apa pun harus memiliki deskripsi. Setiap peran dan skrip yang Anda tulis harus memiliki ReadMe sendiri, yang akan mencatat cara menggunakannya dan apa yang mereka lakukan. Percayalah, nanti ini akan sangat berguna bagi Anda.



Anda harus memanfaatkan kebebasan baru yang disediakan Ansible. Anda dapat memengaruhi file yang sama beberapa kali jika perlu. Misalnya, jika Anda perlu mengubah beberapa parameter file sshd_config dalam satu skrip yang berisi parameter penting untuk skrip lain, Anda bisa melakukan ini. Wayang tidak memungkinkan ini.
Dengan Ansible, Anda mendapatkan eksekusi program yang dapat diprediksi. Mereka bekerja persis seperti yang Anda harapkan dari mereka, dan Anda tidak perlu memonitor kesalahan eksekusi kode. Jika Anda bekerja dengan EXEC, ketahuilah bahwa penangan yang dimungkinkan lebih pintar dari penangan Wayang. Gunakan trik yang memungkinkan seperti fitur Delegasi favorit saya. Misalnya, Anda memulai buku pedoman untuk server A, tetapi bagian dari langkah-langkah dalam skrip ini harus dilakukan secara independen di server B. Saya menggunakan fungsi delegasi untuk bermigrasi dari boneka ke Ansible. Dengan fungsi ini, Anda dapat mengonfigurasi eksekusi tugas pada host yang berbeda, dan bukan pada yang dikonfigurasikan menggunakan kunci delegate_to. Modul masih akan dieksekusi satu kali untuk setiap mesin, tetapi alih-alih bekerja pada mesin target, itu akan bekerja pada host yang didelegasikan,Selain itu, semua fakta yang tersedia akan berlaku untuk tuan rumah saat ini. Ini secara signifikan akan mengurangi jumlah pengaturan sistem manual.

Data pustaka Puppet Hiera Anda dapat digunakan sebagai fakta yang dimungkinkan, yang merupakan informasi tentang node yang terhubung. Fakta - inilah yang dikumpulkan modul Gather fakta selama eksekusi: ruang disk, versi dan jenis sistem operasi, nama host, memori yang tersedia, arsitektur prosesor, alamat IP, antarmuka jaringan, dan statusnya. Saya tidak bermaksud informasi layanan tersembunyi jauh di dalam data - cukup gunakan skrip peralatan Anda untuk membentuk grup dan node variabel. Skrip perangkat keras saya memberi tahu sistem situs fisik mana yang dikandungnya. Kemudian saya menggunakan peran, misalnya, salah satu peran berisi fakta infrastruktur untuk setiap situs fisik, seperti sumber daya NTP, server DNS, alamat IP peralatan modular, pemindai Nessus, dan sejenisnya.Kumpulkan variabel umum ke dalam satu peran jika Anda menempatkannya di lebih dari satu tempat dan letakkan di host sebagai file /etc/ansible/facts.d/.

Jadi, kami akan mempertimbangkan proses migrasi yang sebenarnya. Saya ulangi - bagi saya butuh banyak waktu, tetapi Anda bisa menguranginya. Pertama-tama, Anda perlu membeli dan menggunakan Menara. Ini adalah proses yang sangat dimengerti, cukup ikuti dokumentasi instalasi.



Setelah menginstal Tower, Anda akan segera mendapatkan akses ke antarmuka web. Selanjutnya, Anda perlu menginstal skrip inventaris dan membuat daftar peralatan. Anda dapat menyalin dan menempelkan skrip yang ada ke Menara.

Selanjutnya, atur izin dan izin Git dengan memberikan Tower akses langsung ke repositori Git tempat Anda menyimpan buku pedoman. Dengan demikian, Anda akan memungkinkan Tower untuk langsung menerima informasi dari skrip tentang perubahan dan segera mengimplementasikannya. Anda tidak perlu memberi tahu Tower apa pun, itu hanya akan memeriksa status sistem dan menjalankan versi terbaru dari konfigurasi.

Instal akun Menara standar untuk SSH di host Anda. Saya menggunakan akses jarak jauh, jadi saya menggunakan akun standar dan program administrasi sistem SUDO untuk mengatur hak istimewa. Tentu saja, Tower memiliki kata sandi, sehingga Anda tidak mengambil risiko keamanan menggunakan kata sandi SUDO.

Konfigurasikan otentikasi Tower sesuai dengan struktur akses organisasi Anda. Tentukan akses untuk departemen, tim, distribusi akses ke peran, berurusan dengan izin khusus. Ini adalah tugas yang sangat berat, tergantung pada ukuran organisasi Anda, tetapi ingatlah bahwa dari sudut pandang mengelola Menara, berkat konfigurasi akses yang fleksibel, ini dapat sangat menyederhanakan hidup Anda.

Sekarang Anda memiliki repositori Git yang digunakan, instal dan konfigurasikan templat yang berfungsi untuk playbook. Uji kinerja semua yang Anda lakukan dengan Tower. Setelah Anda memverifikasi bahwa skrip Anda dalam urutan sempurna, Anda dapat melanjutkan dengan migrasi host. Gunakan Kemungkinan untuk menghapus agen Wayang dan โ€œbersihkanโ€ simpul dari server Wayang menggunakan skrip khusus. Ini sangat sederhana.



Saya membuat grup bernama Tower, menambahkannya ke skrip Ansible, dan mengirimkannya ke semua host. Setelah itu, buku pedoman ini menghentikan layanan Wayang, menghapus semua paket Perusahaan Wayang, dan membersihkan direktori. Dia juga menghapus pengguna Wayang - karena kita menghapus PE, maka kita juga menghapus pengguna PE.

Kami melihat fungsi Delegasi beraksi. Sekarang saya bisa masuk ke Master Wayang dan menggunakan 2-3 perintah untuk menghapus registri, dan kemudian mengambil screenshot yang menunjukkan bahwa SCM ini telah dihapus. Ini akan menjadi bukti dokumenter bahwa kita tidak lagi menggunakan PE.

Sekarang mari kita lihat apa yang harus diberi perhatian maksimal - kesalahan saya yang harus dihindari. Ini terutama berkaitan dengan ketergantungan skenario satu sama lain. Ada kemungkinan bahwa variabel-variabel dari satu buku pedoman bergantung pada variabel-variabel buku pedoman lain. Ingatlah bahwa Anda dapat memasukkan persyaratan ke dalam setiap skenario yang memungkinkan penggunaan skenario atau peran yang berbeda. Saya membuat peran untuk variabel semua situs kami, dan masing-masing peran ini berisi banyak variabel. Oleh karena itu, saya menggunakan file requirement.yml untuk memusatkan variabel umum. Ini memungkinkan Anda untuk menginstal beberapa koleksi konten yang Mungkin dengan satu tim.



Jika kami mengubah gateway default atau server NTP, perubahan ini akan segera tercermin di semua elemen infrastruktur.

Hindari menggunakan peran dan skrip yang besar dan besar. Skenario pendek dan peran untuk tugas tertentu lebih efisien dan andal, lebih mudah dikelola dan lebih mudah dilacak.

Perhatikan satu hal lagi - ketika Anda meluncurkan Tower dan membuka halamannya, Anda akan melihat tampilan banyak parameter berwarna merah. Warna ini adalah alarm, tapi inilah masalahnya. Anda memulai proses pada ratusan host, dan jika 99 dari mereka berhasil, dan satu tidak, Tower akan melaporkan kegagalan proses. Dia akan menempatkan penanda merah terang di layar yang menggambarkan karya ini. Jangan panik, tetapi cobalah mencari tahu mengapa simpul tunggal ini tidak berfungsi. Ketika Anda melihat layar Master Wayang dan melihat 99 lampu hijau dan satu merah, Anda berpikir bahwa semuanya beres, sistem berfungsi dengan baik. Tower lebih ketat, tetapi kurang informatif tentang pesan kesalahan. Mungkin di versi Ansible yang akan datang kekurangan ini akan dihilangkan, tetapi untuk sekarang coba cari tahu penyebab alarmnya, mengingatbahwa alarm semacam itu tidak dapat membawa sendiri sesuatu yang kritis - hanya dengan cara ini sistem melaporkan satu kegagalan pada satu host.

Hati-hati jika Anda memiliki host sementara yang tidak selalu online. Sebagai contoh, sistem saya memiliki beberapa laptop. Kami mengelola mereka menggunakan Ansible Tower dengan cara yang sama dengan host permanen, tetapi karena ini adalah perangkat seluler, mereka tidak selalu ada di jaringan. Jika Anda menggunakan host sementara ketika melakukan proses standar, tetapi Tower tidak mendeteksi mereka di jaringan ketika sistem dimulai, alarm dan pesan kegagalan proses akan segera muncul di layarnya. Tower tidak menyadari bahwa laptop ini sedang dimatikan. Tidak ada masalah dengan ini, perlu diingat bahwa situasi seperti itu dapat menyebabkan pesan alarm.

Ada cara yang baik untuk menggunakan Tower API. Ketika laptop boot sebagai bagian dari prosedur boot sistem standar, ia menggunakan API untuk memberi tahu Tower: "Hei, aku di sini, apakah ada pekerjaan untuk saya?", Setelah itu Tower memeriksa tugas-tugas untuk mesin khusus ini sekarang, karena tahu bahwa dia sedang online.

Hal lain yang awalnya bermasalah dengan kami adalah pelaksanaan operasi paralel. Secara default, Ansible menggunakan 5 host paralel untuk melakukan satu pekerjaan. Oleh karena itu, peluncuran pekerjaan terjadwal yang sama untuk 100 mesin memerlukan waktu hingga 20 menit per host dengan memeriksa parameter konfigurasi utama. Jadi, pertama kita mulai konfigurasi pada 5 host, lalu 5 lagi, 5 lagi dan seterusnya. Pada awalnya, keadaan ini membuat kami sangat gugup, karena penyebaran sistem pada 50 host berlangsung dalam waktu 2 jam. Solusi untuk masalah ini adalah sebagai berikut.
Hanya mengatur jumlah host paralel pada server Ansible Tower menjadi berbeda dari 5. Karena saya memiliki 150 host yang berjalan secara bersamaan, saya menetapkan nilai ini menjadi 25. Setelah itu, 6 tambalan, misalnya, dipasang dengan cukup cepat. Jika diinginkan, Anda dapat mengatur parameter ini sama dengan 50 - semuanya tergantung pada kekuatan komputasi apa dan berapa banyak RAM yang Anda miliki. Dengan cara ini, Tower memungkinkan Anda untuk menyesuaikan pelaksanaan proses paralel yang sesuai dengan kebutuhan Anda.



Jika Anda memiliki pertanyaan tentang topik laporan, jangan ragu untuk menghubungi kontak yang ditunjukkan. Anda melihat alamat email tempat Anda dapat mengirim email yang menjelaskan masalah yang terjadi saat beralih dari Wayang ke Ansible, dan saya akan mencoba menjawab Anda sesegera mungkin. Saya berterima kasih atas partisipasi Anda dan berharap Anda berhasil migrasi!

Sedikit iklan :)


Terima kasih untuk tetap bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikan kepada teman Anda, cloud VPS untuk pengembang mulai $ 4,99 , analog unik dari server entry-level yang diciptakan oleh kami untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps mulai dari $ 19 atau cara membagi server? (opsi tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).

Dell R730xd 2 kali lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya kami yang memiliki 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV dari $ 199 di Belanda!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - mulai dari $ 99! Baca tentang Cara Membangun Infrastruktur Bldg. kelas c menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?

All Articles