Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Ini adalah transkrip pidatonya DevopsConf 2019-10-01 ΠΈ SPbLUG 2019-09-25.

Ini adalah kisah tentang proyek yang menggunakan sistem manajemen konfigurasi yang ditulis sendiri dan mengapa perpindahan ke Ansible memakan waktu 18 bulan.

Hari No. -Π₯Π₯Π₯ : Sebelum permulaan

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Awalnya, infrastruktur terdiri dari banyak host terpisah yang menjalankan Hyper-V. Membuat mesin virtual memerlukan banyak langkah: meletakkan disk di tempat yang tepat, mendaftarkan DNS, memesan DHCP, meletakkan konfigurasi VM di repositori git. Proses ini sebagian dilakukan secara mekanis, tetapi misalnya, VM didistribusikan antar host dengan tangan. Namun, misalnya, pengembang dapat memperbaiki konfigurasi VM di git dan menerapkannya dengan me-reboot VM.

Solusi Manajemen Konfigurasi Kustom

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Ide awalnya, saya kira, dikandung sebagai IaC: banyak VM tanpa kewarganegaraan yang menyetel ulang statusnya ke nol saat di-boot ulang. Apa yang dimaksud dengan manajemen konfigurasi VM? Secara skematis terlihat sederhana:

  1. MAC statis telah dipasang untuk VM.
  2. ISO dengan CoreOS dan boot disk terhubung ke VM.
  3. CoreOS meluncurkan skrip penyesuaian dengan mengunduhnya dari server WEB berdasarkan IP-nya.
  4. Skrip mengunduh konfigurasi VM melalui SCP berdasarkan alamat IP.
  5. Footcloth dari file unit systemd dan footcloth dari skrip bash diluncurkan.

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Solusi ini jelas memiliki banyak masalah:

  1. CoreOS ISO sudah tidak digunakan lagi.
  2. Banyak tindakan dan keajaiban otomatis yang kompleks saat memigrasi/membuat VM.
  3. Kesulitan dalam memperbarui dan kapan versi perangkat lunak tertentu diperlukan. Lebih menyenangkan lagi dengan modul kernel.
  4. VM tidak diperoleh tanpa data, mis. VM muncul dengan disk dengan data pengguna tambahan terpasang.
  5. Seseorang terus-menerus mengacaukan dependensi unit systemd dan CoreOS akan terhenti saat melakukan boot ulang. Sulit untuk mengetahui hal ini menggunakan alat yang tersedia di CoreOS.
  6. Manajemen rahasia.
  7. Tidak ada CM. Ada konfigurasi bash dan YML untuk CoreOS.

Untuk menerapkan konfigurasi VM, Anda perlu melakukan boot ulang, tetapi mungkin tidak melakukan boot ulang. Sepertinya masalah yang jelas, tetapi tidak ada disk persisten - tidak ada tempat untuk menyimpan log. Baiklah, mari kita coba menambahkan opsi pemuatan kernel agar log dapat dikirim. Tapi tidak, betapa rumitnya semua ini.

Hari #0: Kenali masalahnya

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Itu adalah infrastruktur pengembangan biasa: jenkins, lingkungan pengujian, pemantauan, registri. CoreOS dirancang untuk menghosting cluster k8s, mis. masalahnya adalah bagaimana CoreOS digunakan. Langkah pertama adalah memilih tumpukan. Kami memutuskan:

  1. CentOS sebagai distribusi dasar, karena Ini adalah distribusi yang paling dekat dengan lingkungan produksi.
  2. Mungkin untuk manajemen konfigurasi, karena ada pemeriksaan ekstensif terhadapnya.
  3. Jenkins sebagai kerangka untuk mengotomatisasi proses yang ada, karena itu telah digunakan secara aktif untuk proses pembangunan
  4. Hyper-V sebagai platform virtualisasi. Ada sejumlah alasan yang melampaui cakupan cerita, namun singkatnya - kita tidak bisa menggunakan cloud, kita harus menggunakan perangkat keras kita sendiri.

Hari No. 30: Memperbaiki perjanjian yang ada - Perjanjian sebagai Kode

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Ketika tumpukan sudah bersih, persiapan untuk perpindahan dimulai. Memperbaiki perjanjian-perjanjian yang sudah ada dalam bentuk kode (Perjanjian sebagai Kode!). Transisi kerja manual -> mekanisasi -> otomatisasi.

1. Konfigurasikan VM

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Ansible melakukan pekerjaan ini dengan baik. Dengan gerakan tubuh minimal, Anda dapat mengontrol konfigurasi VM:

  1. Buat repositori git.
  2. Kami menempatkan daftar VM di inventaris, konfigurasi di buku pedoman, dan peran.
  3. Kami sedang menyiapkan budak jenkins khusus tempat Anda dapat menjalankan Ansible.
  4. Kami membuat pekerjaan dan mengkonfigurasi Jenkins.

Proses pertama sudah siap. Perjanjiannya sudah pasti.

2. Buat VM baru

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Segala sesuatu di sini sangat tidak nyaman. Sangat tidak nyaman membuat VM di Hyper-V dari Linux. Salah satu upaya untuk memekanisasi proses ini adalah:

  1. Ansbile terhubung melalui WinRM ke host windows.
  2. Ansible menjalankan skrip PowerShell.
  3. Skrip Powershell membuat VM baru.
  4. Menggunakan Hyper-V/ScVMM, saat membuat VM di OS tamu, nama host dikonfigurasi.
  5. Saat memperbarui sewa DHCP, VM mengirimkan nama hostnya.
  6. Integrasi ddns & dhcp standar di sisi Pengontrol Domain mengonfigurasi catatan DNS.
  7. Anda dapat menambahkan VM ke inventaris Anda dan mengonfigurasinya dengan Ansible.

3.Buat templat VM

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Mereka tidak menemukan apa pun di sini - mereka mengambil sebuah pengepakan.

  1. Tambahkan pengemas, mulai konfigurasi ke repositori git.
  2. Menyiapkan budak jenkins khusus dengan hyper-v dan Packer.
  3. Kami membuat pekerjaan dan mengkonfigurasi Jenkins.

Cara kerja tautan ini:

  1. Packer membuat VM kosong dan mengambil ISO.
  2. VM melakukan booting, Packer memasukkan perintah ke dalam bootloader untuk menggunakan file kickstart kami dari floppy disk atau http.
  3. Anaconda diluncurkan dengan konfigurasi kami, dan konfigurasi OS awal selesai.
  4. Packer menunggu VM tersedia.
  5. Pengemas di dalam VM dapat dijalankan dalam mode lokal.
  6. Ansible menggunakan peran yang persis sama dengan yang berfungsi pada langkah #1.
  7. Packer mengekspor templat VM.

Hari #75: Perbaiki perjanjian tanpa melanggar = Uji kemungkinan + Uji dapur

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Menangkap konvensi dalam kode mungkin tidak cukup. Lagi pula, jika dalam seluk beluk proses Anda ingin mengubah sesuatu, Anda bisa merusak sesuatu. Oleh karena itu, dalam kasus infrastruktur, pengujian terhadap infrastruktur ini muncul. Untuk menyinkronkan pengetahuan dalam tim, kami mulai menguji peran yang mungkin. Saya tidak akan membahasnya secara mendalam karena... ada artikel yang menjelaskan peristiwa pada saat itu Uji saya apakah Anda bisa atau apakah pemrogram YML bermimpi untuk menguji Ansible?(spoiler ini bukan versi final dan kemudian semuanya menjadi lebih rumit Bagaimana memulai pengujian Ansible, memfaktorkan ulang proyek dalam setahun dan tidak menjadi gila).

Hari #130: Mungkin CentOS+ansible tidak diperlukan? mungkin shift terbuka?

Kita harus memahami bahwa proses pengenalan infrastruktur bukanlah satu-satunya proses dan ada subproyek sampingan. Misalnya, datang permintaan untuk meluncurkan aplikasi kita secara openshift dan ini menghasilkan penelitian selama lebih dari satu minggu Kami meluncurkan aplikasi di Openshift dan membandingkan alat yang ada yang memperlambat proses perpindahan. Hasilnya ternyata openshift tidak mencakup semua kebutuhan; Anda memerlukan perangkat keras nyata, atau setidaknya kemampuan untuk bermain-main dengan kernel.

Hari #170: Openshift tidak cocok, mari kita coba dengan Windows Azure Pack?

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Hyper-V tidak terlalu ramah, SCVMM tidak membuatnya lebih baik. Namun ada yang namanya Windows Azure Pack, yang merupakan tambahan pada SCVMM dan meniru Azure. Namun kenyataannya, produk tersebut terlihat terbengkalai: dokumentasinya memiliki tautan yang rusak dan sangat jarang. Namun sebagai bagian dari studi tentang opsi untuk menyederhanakan kehidupan cloud kami, mereka juga mempertimbangkannya.

Hari #250: Paket Windows Azure tidak terlalu bagus. Kami tetap di SCVMM

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Windows Azure Pack tampak menjanjikan, namun diputuskan untuk tidak membawa WAP dengan kompleksitasnya ke dalam sistem demi fitur yang tidak perlu dan tetap menggunakan SCVMM.

Hari #360: Memakan gajah sepotong demi sepotong

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Hanya setahun kemudian platform untuk pindah sudah siap dan proses pindahan pun dimulai. Untuk tujuan ini, tugas SMART telah ditetapkan. Kami memeriksa semua VM dan mulai mencari tahu konfigurasinya satu per satu, mendeskripsikannya di Ansible, dan menutupinya dengan pengujian.

Hari #450: Sistem seperti apa yang Anda dapatkan?

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Prosesnya sendiri tidak menarik. Hal ini rutin, dapat dicatat bahwa sebagian besar konfigurasi relatif sederhana atau isomorfik dan menurut prinsip Pareto, 80% konfigurasi VM memerlukan 20% waktu. Dengan prinsip yang sama, 80% waktu dihabiskan untuk mempersiapkan perpindahan dan hanya 20% untuk perpindahan itu sendiri.

Hari #540: Terakhir

Kemungkinan: Migrasi konfigurasi 120 VM dari CoreOS ke CentOS dalam 18 bulan

Apa yang terjadi dalam 18 bulan?

  1. Perjanjian tersebut menjadi sebuah kode.
  2. Kerja manual -> Mekanisasi -> Otomasi.

Sumber: www.habr.com

Tambah komentar