Otomatisasi jaringan. Sebuah kasus dari kehidupan seseorang

Hei Habr!

Pada artikel ini kami ingin berbicara tentang otomatisasi infrastruktur jaringan. Diagram kerja jaringan yang beroperasi di satu perusahaan kecil namun sangat membanggakan akan disajikan. Semua pertandingan dengan peralatan jaringan nyata bersifat acak. Kami akan melihat kasus yang terjadi di jaringan ini, yang dapat menyebabkan penutupan bisnis dalam waktu lama dan kerugian finansial yang serius. Solusi untuk kasus ini sangat cocok dengan konsep “Otomasi infrastruktur jaringan”. Dengan menggunakan alat otomatisasi, kami akan menunjukkan bagaimana Anda dapat memecahkan masalah kompleks secara efektif dalam waktu singkat, dan kami akan merenungkan mengapa masalah ini harus diselesaikan dengan cara ini dan bukan sebaliknya (melalui konsol).

Penolakan tanggung jawab

Alat utama kami untuk otomatisasi adalah Ansible (sebagai alat otomatisasi) dan Git (sebagai tempat penyimpanan buku pedoman Ansible). Saya ingin segera membuat reservasi bahwa ini bukan artikel pengantar, di mana kita berbicara tentang logika Ansible atau Git, dan menjelaskan hal-hal dasar (misalnya, apa itu roletaskimodules, file inventaris, variabel di Ansible, atau apa yang terjadi ketika Anda memasukkan perintah git push atau git commit). Cerita ini bukan tentang bagaimana Anda dapat mempraktikkan Ansible dan mengkonfigurasi NTP atau SMTP pada peralatan Anda. Ini adalah kisah tentang bagaimana Anda dapat dengan cepat dan efisien menyelesaikan masalah jaringan tanpa kesalahan. Disarankan juga untuk memiliki pemahaman yang baik tentang cara kerja jaringan, khususnya tumpukan protokol TCP/IP, OSPF, BGP. Kami juga akan menghilangkan pilihan Ansible dan Git. Jika Anda masih perlu memilih solusi spesifik, kami sangat menyarankan membaca buku “Pemrograman dan Otomatisasi Jaringan. Keterampilan untuk Insinyur Jaringan Generasi Berikutnya" oleh Jason Edelman, Scott S. Lowe, dan Matt Oswalt.

Sekarang langsung ke intinya.

Pernyataan masalah

Bayangkan sebuah situasi: jam 3 pagi, Anda tertidur lelap dan bermimpi. Panggilan telepon. Direktur teknis memanggil:

- Ya?
— ###, ####, #####, cluster firewall telah jatuh dan tidak naik!!!
Anda menggosok mata, mencoba memahami apa yang terjadi dan membayangkan bagaimana hal ini bisa terjadi. Di telepon Anda dapat mendengar rambut di kepala direktur robek, dan dia meminta untuk menelepon kembali karena sang jenderal meneleponnya di saluran kedua.

Setengah jam kemudian, Anda mengumpulkan catatan pengantar pertama dari shift tugas, membangunkan semua orang yang bisa dibangunkan. Hasilnya, direktur teknis tidak berbohong, semuanya apa adanya, kelompok utama firewall telah runtuh, dan tidak ada gerakan dasar tubuh yang menyadarkannya. Semua layanan yang ditawarkan perusahaan tidak berfungsi.

Pilih masalah sesuai selera Anda, setiap orang akan mengingat sesuatu yang berbeda. Misalnya, setelah pembaruan semalaman tanpa adanya beban berat, semuanya berjalan dengan baik, dan semua orang pergi tidur dengan gembira. Lalu lintas mulai mengalir, dan buffer antarmuka mulai meluap karena adanya bug pada driver kartu jaringan.

Jackie Chan bisa menggambarkan situasinya dengan baik.

Otomatisasi jaringan. Sebuah kasus dari kehidupan seseorang

Terima kasih, Jackie.

Bukan situasi yang menyenangkan, bukan?

Mari kita tinggalkan jaringan kita kawan dengan pikiran sedihnya untuk sementara waktu.

Mari kita bahas bagaimana peristiwa akan berkembang lebih jauh.

Kami menyarankan urutan penyajian materi sebagai berikut

  1. Mari kita lihat diagram jaringan dan lihat cara kerjanya;
  2. Kami akan menjelaskan bagaimana kami mentransfer pengaturan dari satu router ke router lainnya menggunakan Ansible;
  3. Mari kita bicara tentang otomatisasi infrastruktur TI secara keseluruhan.

Diagram dan deskripsi jaringan

Skema itu

Otomatisasi jaringan. Sebuah kasus dari kehidupan seseorang

Mari kita perhatikan diagram logis organisasi kita. Kami tidak akan menyebutkan nama produsen peralatan tertentu; untuk tujuan artikel ini, hal tersebut tidak menjadi masalah (Pembaca yang penuh perhatian akan menebak peralatan apa yang digunakan). Ini hanyalah salah satu keuntungan bekerja dengan Ansible; saat menyiapkan, biasanya kita tidak peduli jenis peralatannya. Sekadar maklum, ini perlengkapan dari vendor ternama seperti Cisco, Juniper, Check Point, Fortinet, Palo Alto...bisa diganti sendiri.

Kami memiliki dua tugas utama untuk menggerakkan lalu lintas:

  1. Memastikan publikasi layanan kami, yang merupakan bisnis perusahaan;
  2. Menyediakan komunikasi dengan cabang, pusat data jarak jauh dan organisasi pihak ketiga (mitra dan klien), serta akses cabang ke Internet melalui kantor pusat.

Mari kita mulai dengan elemen dasar:

  1. Dua router perbatasan (BRD-01, BRD-02);
  2. Kluster Firewall (FW-CLUSTER);
  3. Sakelar inti (L3-CORE);
  4. Router yang akan menjadi penyelamat (saat kami memecahkan masalah, kami akan mentransfer pengaturan jaringan dari FW-CLUSTER ke DARURAT) (DARURAT);
  5. Switch untuk manajemen infrastruktur jaringan (L2-MGMT);
  6. Mesin virtual dengan Git dan Ansible (VM-AUTOMATION);
  7. Laptop tempat pengujian dan pengembangan buku pedoman untuk Ansible (Laptop-Automation) dilakukan.

Jaringan dikonfigurasi dengan protokol perutean OSPF dinamis dengan area berikut:

  • Area 0 – area yang mencakup router yang bertanggung jawab untuk memindahkan lalu lintas di zona EXCHANGE;
  • Area 1 – area yang mencakup router yang bertanggung jawab atas pengoperasian layanan perusahaan;
  • Area 2 – area yang mencakup router yang bertanggung jawab untuk manajemen perutean lalu lintas;
  • Area N – area jaringan cabang.

Pada router perbatasan, router virtual (VRF-INTERNET) dibuat, di mana tampilan penuh eBGP diinstal dengan AS yang sesuai. iBGP dikonfigurasikan antar VRF. Perusahaan memiliki kumpulan alamat putih yang dipublikasikan di VRF-INTERNET ini. Beberapa alamat putih dirutekan langsung ke FW-CLUSTER (alamat tempat layanan perusahaan beroperasi), beberapa dirutekan melalui zona EXCHANGE (layanan internal perusahaan yang memerlukan alamat IP eksternal, dan alamat NAT eksternal untuk kantor). Selanjutnya, lalu lintas menuju ke router virtual yang dibuat pada L3-CORE dengan alamat putih dan abu-abu (zona keamanan).

Jaringan Manajemen menggunakan sakelar khusus dan mewakili jaringan khusus secara fisik. Jaringan manajemen juga dibagi menjadi zona keamanan.
Router DARURAT secara fisik dan logis menduplikasi FW-CLUSTER. Semua antarmuka di dalamnya dinonaktifkan kecuali antarmuka yang melihat ke jaringan manajemen.

Otomatisasi dan deskripsinya

Kami menemukan cara kerja jaringan. Sekarang mari kita lihat langkah demi langkah apa yang akan kita lakukan untuk mentransfer lalu lintas dari FW-CLUSTER ke DARURAT:

  1. Kami menonaktifkan antarmuka pada sakelar inti (L3-CORE) yang menghubungkannya ke FW-CLUSTER;
  2. Kami menonaktifkan antarmuka pada sakelar kernel L2-MGMT yang menghubungkannya ke FW-CLUSTER;
  3. Kami mengkonfigurasi router DARURAT (secara default, semua antarmuka dinonaktifkan, kecuali yang terkait dengan L2-MGMT):

  • Kami mengaktifkan antarmuka pada DARURAT;
  • Kami mengkonfigurasi alamat IP eksternal (untuk NAT) yang ada di FW-Cluster;
  • Kami membuat permintaan gARP sehingga alamat poppy di tabel arp L3-CORE diubah dari FW-Cluster ke DARURAT;
  • Kami mendaftarkan rute default sebagai statis ke BRD-01, BRD-02;
  • Buat aturan NAT;
  • Naikkan ke DARURAT OSPF Area 1;
  • Naikkan ke DARURAT OSPF Area 2;
  • Kami mengubah biaya rute di Area 1 menjadi 10;
  • Kami mengubah biaya rute default di Area 1 menjadi 10;
  • Kami mengubah alamat IP yang terkait dengan L2-MGMT (menjadi alamat yang ada di FW-CLUSTER);
  • Kami membuat permintaan gARP sehingga alamat poppy di tabel arp L2-MGMT diubah dari FW-CLUSTER ke DARURAT.

Sekali lagi, kita kembali ke rumusan masalah awal. Pukul tiga pagi, stres yang luar biasa, kesalahan pada tahap apa pun bisa menimbulkan masalah baru. Siap mengetikkan perintah melalui CLI? Ya? Oke, setidaknya bilas wajahmu, minum kopi, dan kumpulkan tekadmu.
Bruce, tolong bantu teman-teman.

Otomatisasi jaringan. Sebuah kasus dari kehidupan seseorang

Ya, kami terus meningkatkan otomatisasi kami.
Di bawah ini adalah diagram cara kerja buku pedoman dalam istilah Ansible. Skema ini mencerminkan apa yang kami jelaskan di atas, ini hanya implementasi spesifik di Ansible.
Otomatisasi jaringan. Sebuah kasus dari kehidupan seseorang

Pada tahap ini kami menyadari apa yang perlu dilakukan, mengembangkan pedoman, melakukan pengujian, dan sekarang kami siap meluncurkannya.

Penyimpangan liris kecil lainnya. Kemudahan ceritanya seharusnya tidak menyesatkan Anda. Proses penulisan buku pedoman tidaklah sesederhana dan secepat yang terlihat. Pengujian memakan waktu yang cukup lama, virtual stand dibuat, solusi diuji berkali-kali, sekitar 100 pengujian dilakukan.

Ayo luncurkan... Ada perasaan bahwa semuanya terjadi sangat lambat, ada kesalahan di suatu tempat, sesuatu pada akhirnya tidak berfungsi. Perasaan loncat pakai parasut, tapi parasutnya gak mau langsung terbuka...ini wajar.

Selanjutnya, kita membaca hasil operasi yang dilakukan dari buku pedoman Ansible (alamat IP diganti untuk tujuan kerahasiaan):

[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml 

PLAY [------->Emergency on VCF] ********************************************************

TASK [vcf_junos_emergency_on : Disable PROD interfaces to FW-CLUSTER] *********************
changed: [vcf]

PLAY [------->Emergency on MGMT-CORE] ************************************************

TASK [mgmt_junos_emergency_on : Disable MGMT interfaces to FW-CLUSTER] ******************
changed: [m9-03-sw-03-mgmt-core]

PLAY [------->Emergency on] ****************************************************

TASK [mk_routeros_emergency_on : Enable EXT-INTERNET interface] **************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Generate gARP for EXT-INTERNET interface] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable static default route to EXT-INTERNET] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change NAT rule to EXT-INTERNET interface] ****************
changed: [m9-04-r-04] => (item=12)
changed: [m9-04-r-04] => (item=14)
changed: [m9-04-r-04] => (item=15)
changed: [m9-04-r-04] => (item=16)
changed: [m9-04-r-04] => (item=17)

TASK [mk_routeros_emergency_on : Enable OSPF Area 1 PROD] ******************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable OSPF Area 2 MGMT] *****************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change OSPF Area 1 interfaces costs to 10] *****************
changed: [m9-04-r-04] => (item=VLAN-1001)
changed: [m9-04-r-04] => (item=VLAN-1002)
changed: [m9-04-r-04] => (item=VLAN-1003)
changed: [m9-04-r-04] => (item=VLAN-1004)
changed: [m9-04-r-04] => (item=VLAN-1005)
changed: [m9-04-r-04] => (item=VLAN-1006)
changed: [m9-04-r-04] => (item=VLAN-1007)
changed: [m9-04-r-04] => (item=VLAN-1008)
changed: [m9-04-r-04] => (item=VLAN-1009)
changed: [m9-04-r-04] => (item=VLAN-1010)
changed: [m9-04-r-04] => (item=VLAN-1011)
changed: [m9-04-r-04] => (item=VLAN-1012)
changed: [m9-04-r-04] => (item=VLAN-1013)
changed: [m9-04-r-04] => (item=VLAN-1100)

TASK [mk_routeros_emergency_on : Change OSPF area1 default cost for to 10] ******************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change MGMT interfaces ip addresses] ********************
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

TASK [mk_routeros_emergency_on : Generate gARPs for MGMT interfaces] *********************
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

PLAY RECAP ************************************************************************

Selesai!

Faktanya, ini belum cukup siap, jangan lupa tentang konvergensi protokol routing dinamis dan memuat sejumlah besar rute ke FIB. Kami tidak dapat mempengaruhi hal ini dengan cara apa pun. Kami tunggu. Itu berhasil. Sekarang sudah siap.

Dan di desa Vilabajo (yang tidak ingin mengotomatiskan pengaturan jaringan) mereka terus mencuci piring. Bruce (memang sudah berbeda, tetapi tidak kalah kerennya) sedang mencoba memahami seberapa banyak lagi konfigurasi ulang peralatan secara manual yang akan dilakukan.

Otomatisasi jaringan. Sebuah kasus dari kehidupan seseorang

Saya juga ingin membahas satu poin penting. Bagaimana kita bisa mendapatkan semuanya kembali? Setelah beberapa waktu, kami akan menghidupkan kembali FW-CLUSTER kami. Ini adalah peralatan utama, bukan cadangan, jaringan harus berjalan di atasnya.

Apakah Anda merasakan bagaimana para penggiat jejaring mulai kehabisan tenaga? Direktur teknis akan mendengar seribu argumen mengapa hal ini tidak boleh dilakukan, mengapa hal ini bisa dilakukan nanti. Sayangnya, begitulah cara jaringan bekerja dari sekumpulan tambalan, potongan, dan sisa-sisa kemewahan sebelumnya. Ternyata itu adalah selimut tambal sulam. Tugas kita secara umum, bukan dalam situasi khusus ini, tetapi secara umum pada prinsipnya, sebagai spesialis TI, adalah membawa kerja jaringan ke dalam kata bahasa Inggris yang indah “konsistensi”, yang sangat beragam, dapat diterjemahkan sebagai: koherensi , konsistensi, logika, koherensi, sistematika, komparabilitas, koherensi. Ini semua tentang dia. Hanya dalam keadaan ini jaringan dapat dikelola, kami memahami dengan jelas apa yang berhasil dan bagaimana caranya, kami memahami dengan jelas apa yang perlu diubah, jika perlu, kami dengan jelas mengetahui ke mana harus mencari jika timbul masalah. Dan hanya di jaringan seperti itu Anda dapat melakukan trik seperti yang baru saja kami jelaskan.

Sebenarnya, buku pedoman lain telah disiapkan, yang mengembalikan pengaturan ke keadaan semula. Logika pengoperasiannya sama (penting untuk diingat bahwa urutan tugas sangat penting), agar tidak memperpanjang artikel yang sudah agak panjang, kami memutuskan untuk tidak memposting daftar eksekusi pedoman. Setelah melakukan latihan seperti itu, Anda akan merasa jauh lebih tenang dan percaya diri di masa depan, selain itu, kruk apa pun yang Anda tumpuk di sana akan segera terlihat.

Siapapun dapat menulis kepada kami dan menerima sumber dari semua kode tertulis, beserta semua buku palybooknya. Kontak di profil.

Temuan

Menurut pendapat kami, proses yang dapat diotomatisasi belum terkristalisasi. Berdasarkan apa yang kami temui dan apa yang didiskusikan rekan-rekan kami di Barat, sejauh ini tema-tema berikut terlihat:

  • Penyediaan perangkat;
  • Pengumpulan data;
  • Pelaporan;
  • Penyelesaian masalah;
  • Pemenuhan.

Jika ada yang berminat, kita bisa melanjutkan pembahasan pada salah satu topik yang diberikan.

Saya juga ingin berbicara sedikit tentang otomatisasi. Apa yang seharusnya menjadi pemahaman kita:

  • Sistem harus hidup tanpa manusia, sambil diperbaiki oleh manusia. Sistem tidak boleh bergantung pada manusia;
  • Pengoperasiannya harus ahli. Tidak ada kelas spesialis yang melakukan tugas rutin. Ada para ahli yang telah mengotomatiskan seluruh rutinitas dan hanya memecahkan masalah yang rumit;
  • Tugas standar rutin dilakukan secara otomatis “dengan satu sentuhan tombol”, tidak ada sumber daya yang terbuang. Hasil dari tugas-tugas tersebut selalu dapat diprediksi dan dimengerti.

Dan poin-poin ini seharusnya mengarah pada apa:

  • Transparansi infrastruktur TI (Risiko pengoperasian, modernisasi, implementasi lebih sedikit. Downtime lebih sedikit per tahun);
  • Kemampuan untuk merencanakan sumber daya TI (Sistem perencanaan kapasitas - Anda dapat melihat berapa banyak yang dikonsumsi, Anda dapat melihat berapa banyak sumber daya yang dibutuhkan dalam satu sistem, dan bukan melalui surat dan kunjungan ke departemen puncak);
  • Kemungkinan untuk mengurangi jumlah staf TI.

Penulis artikel: Alexander Chelovekov (CCIE RS, CCIE SP) dan Pavel Kirillov. Kami tertarik untuk berdiskusi dan mengusulkan solusi pada topik otomasi infrastruktur TI.


Sumber: www.habr.com

Tambah komentar