Otomatisasi jaringan. Kasus kehidupan

Halo, Habr!

Pada artikel ini kami ingin berbicara tentang otomatisasi infrastruktur jaringan. Diagram jaringan kerja akan disajikan, yang beroperasi di satu perusahaan kecil tapi sangat bangga. Semua kecocokan dengan perangkat keras jaringan nyata adalah acak. Kami akan mempertimbangkan kasus yang terjadi di jaringan ini, yang dapat menyebabkan penutupan bisnis untuk waktu yang lama dan kerugian finansial yang serius. Solusi dari kasus ini sangat cocok dengan konsep "Otomasi infrastruktur jaringan." Menggunakan alat otomatisasi, kami akan menunjukkan bagaimana Anda dapat secara efektif menyelesaikan masalah yang kompleks dalam waktu singkat, dan merefleksikan topik mengapa tugas ini lebih menjanjikan untuk diselesaikan dengan cara ini dan bukan sebaliknya (melalui konsol) .

Penolakan

Alat otomatisasi utama kami adalah Ansible (sebagai sarana otomatisasi) dan Git (sebagai tempat penyimpanan buku pedoman Ansible). Saya segera ingin membuat reservasi bahwa ini bukan artikel pengantar di mana kita berbicara tentang logika Ansible atau Git, dan menjelaskan hal-hal dasar (misalnya, apa peran \ tugas \ modul \ file inventaris \ variabel dalam Kemungkinan, atau apa yang terjadi ketika Anda memasukkan perintah git push atau git commit). Kisah ini bukan tentang bagaimana Anda dapat berlatih di Ansible, mengkonfigurasinya pada peralatan NTP atau SMTP. Ini adalah kisah tentang bagaimana Anda dapat dengan cepat dan lebih disukai tanpa kesalahan menyelesaikan masalah jaringan. Juga diinginkan untuk memiliki gagasan yang baik tentang bagaimana jaringan bekerja, khususnya, apa itu tumpukan protokol TCP / IP, OSPF, BGP. Pilihan Ansible dan Git juga keluar dari pertanyaan. Jika Anda masih memiliki pilihan solusi tertentu,kami sangat merekomendasikan membaca buku Programmability dan Otomasi Jaringan. Keterampilan untuk Insinyur Jaringan Generasi Selanjutnya ”oleh Jason Edelman, Scott S. Lowe, dan Matt Oswalt.


Sekarang to the point.

Perumusan masalah


Bayangkan sebuah situasi: jam 3 pagi, Anda tidur nyenyak dan bermimpi. Panggilan ke telepon. Direktur teknis menelepon:

- Ya?
- ###, ####, #####, gugusan firewall telah jatuh dan tidak naik !!!
Anda menggosok mata, mencoba menyadari apa yang terjadi dan membayangkan bagaimana hal seperti itu bisa terjadi. Dalam tabung Anda dapat mendengar rambut merobek kepala direktur, dan dia meminta untuk memanggil kembali, karena jenderal memanggilnya di baris kedua.

Setelah setengah jam, Anda mengumpulkan catatan pengantar pertama dari shift bertugas, membangunkan semua orang yang bisa Anda bangun. Akibatnya, direktur teknis tidak berbohong, semuanya demikian, gugusan utama firewall telah jatuh, dan tidak ada gerakan dasar yang membuatnya sadar. Semua layanan yang ditawarkan perusahaan tidak berfungsi.

Pilih masalah untuk selera Anda, semua orang akan mengingat sesuatu yang berbeda. Misalnya, setelah pembaruan semalam, tanpa adanya beban yang berat, semuanya bekerja dengan baik, dan semua puas pergi tidur. Lalu lintas pergi, dan buffer antarmuka mulai meluap karena bug pada driver kartu jaringan.

Situasi ini dapat menggambarkan Jackie Chan dengan baik.



Terima kasih, Jackie.

Situasinya tidak terlalu menyenangkan, bukan?

Mari kita pergi untuk waktu bro jaringan kami dengan pikiran sedihnya.

Kami akan membahas bagaimana acara akan berkembang lebih lanjut.

Kami menawarkan urutan penyajian materi sebagai berikut

  1. Pertimbangkan diagram jaringan dan analisis 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 umum.

Diagram jaringan dan deskripsinya


Skema





Pertimbangkan logika organisasi kami. Kami tidak akan menyebut nama produsen peralatan tertentu, ini tidak masalah di dalam artikel (Pembaca yang penuh perhatian akan menebak jenis peralatan apa yang digunakan) . Ini hanyalah salah satu keuntungan bekerja dengan Ansible, ketika mengatur, secara umum, kami tidak peduli jenis peralatan apa itu. Hanya untuk memahami, peralatan ini adalah vendor terkenal seperti Cisco, Juniper, Check Point, Fortinet, Palo Alto ... Anda dapat mengganti versi Anda sendiri.

Kami memiliki dua tugas utama untuk memindahkan lalu lintas:

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

Mari kita mulai dengan elemen dasar:

  1. Dua router perbatasan (BRD-01, BRD-02);
  2. Firewall Cluster (FW-CLUSTER);
  3. Kernel Switch (L3-CORE);
  4. Router yang akan menjadi penyelamat (dalam proses penyelesaian masalah, kami akan mentransfer pengaturan jaringan dari FW-CLUSTER ke DARURAT) (DARURAT);
  5. Switch untuk mengelola infrastruktur jaringan (L2-MGMT);
  6. Mesin virtual dengan Git dan Ansible (VM-AUTOMATION);
  7. Laptop yang menguji dan mengembangkan buku pedoman untuk Ansible (Laptop-Automation).

Protokol perutean OSPF dinamis dikonfigurasi pada jaringan dengan bidang-bidang berikut:

  • Area 0 - area di mana router yang bertanggung jawab untuk pergerakan lalu lintas di zona EXCHANGE disertakan;
  • Area 1 - area di mana router yang bertanggung jawab atas pekerjaan layanan perusahaan dimasukkan;
  • Area 2 - area di mana router yang bertanggung jawab untuk mengarahkan lalu lintas manajemen disertakan;
  • Area N - area jaringan cabang.

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

Jaringan manajemen menggunakan sakelar khusus dan merupakan jaringan khusus fisik. Jaringan manajemen juga dibagi menjadi zona keamanan.
Router DARURAT secara fisik dan logis menduplikasi FW-CLUSTER. Semua antarmuka dinonaktifkan di atasnya kecuali yang terlihat di jaringan manajemen.

Otomasi dan deskripsinya


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

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

  • Kami menyertakan antarmuka pada DARURAT;
  • Mengkonfigurasi alamat ip eksternal (untuk NAT), yang berada di FW-Cluster;
  • Kami menghasilkan permintaan gARP sehingga dalam tabel arp L3-CORE alamat poppy berubah dari FW-Cluster menjadi DARURAT;
  • BRD-01, BRD-02;
  • NAT;
  • EMERGENCY OSPF Area 1;
  • EMERGENCY OSPF Area 2;
  • Area 1 10;
  • Area 1 10;
  • ip-, L2-MGMT ( , FW-CLUSTER);
  • gARP , arp- L2-MGMT - FW-CLUSTER EMERGENCY.

Sekali lagi, kita kembali ke rumusan masalah semula. Tiga di pagi hari, stres besar, kesalahan pada tahap apa pun dapat menyebabkan masalah baru. Siap mengetik perintah melalui CLI? Iya? Ok, pergi setidaknya bilas wajah Anda, minum kopi dan kumpulkan keinginan Anda.
Bruce, tolong bantu teman-teman.



Yah, kami terus memotong otomatisasi kami.
Di bawah ini adalah diagram buku kerja dalam hal Ansible. Diagram ini mencerminkan apa yang kami jelaskan di atas, hanya implementasi konkret di Ansible.


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

Penyimpangan kecil lainnya. Kemudahan narasi seharusnya tidak menyesatkan Anda. Proses penulisan buku pedoman itu tidak sesederhana dan secepat kelihatannya. Pengujian memakan waktu cukup lama, virtual stand dibuat, solusinya bergulir berkali-kali, sekitar 100 tes dilakukan.

Kita mulai ... Ada perasaan bahwa segala sesuatu terjadi sangat lambat, di suatu tempat ada kesalahan, sesuatu tidak akan berhasil pada akhirnya. Perasaan melompat parasut, dan parasut tidak mau membuka sekaligus ... itu normal.

Selanjutnya, kami membaca hasil operasi buku pedoman yang dimungkinkan (kami mengganti alamat IP untuk tujuan konspirasi):

[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, itu tidak cukup siap, jangan lupa tentang konvergensi protokol routing dinamis dan pemuatan sejumlah besar rute di FIB. Kami tidak dapat memengaruhi ini dengan cara apa pun. Kami menunggu. Itu datang bersamaan. Sekarang sudah siap.

Dan di desa Vilabaggio (yang tidak ingin mengotomatisasi pengaturan jaringan), mereka terus mencuci piring. Bruce (walaupun sudah berbeda, tetapi tidak kalah keren) sedang mencoba mencari tahu berapa banyak lagi untuk mengkonfigurasi ulang peralatan secara manual.



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

Merasa ingin mulai membakar di networkers? Direktur teknis akan mendengar ribuan argumen mengapa ini tidak perlu, mengapa bisa dilakukan nanti. Sayangnya, ini adalah bagaimana jaringan bekerja dari banyak tambalan, potongan-potongan, sisa-sisa bekas mewah. Ternyata selimut. Tugas kita secara keseluruhan, bukan dalam situasi khusus ini, tetapi secara umum, pada prinsipnya, sebagai spesialis IT, adalah untuk membawa jaringan ke kata Inggris yang indah "konsistensi", sangat beragam, dapat diterjemahkan sebagai: konsistensi, konsistensi, konsistensi, konsistensi, koherensi, konsistensi, komparabilitas, konektivitas. Ini semua tentang dia. Hanya dalam keadaan ini jaringan dapat dikelola, kami memahami dengan jelas apa dan bagaimana cara kerjanya, kami dengan jelas memahami apa yang perlu diubah, jika perlu, kami jelas tahu ke mana harus mencari jika ada masalah.Dan hanya dalam jaringan seperti itu Anda dapat melakukan trik seperti yang baru saja kami jelaskan.

Sebenarnya, buku pedoman lain disiapkan, yang mengembalikan pengaturan ke keadaan semula. Logikanya karyanya sama (penting untuk diingat bahwa urutan tugasnya sangat penting), agar tidak memperpanjang artikel yang sudah lama, kami memutuskan untuk tidak memposting daftar playbook. Setelah melakukan latihan seperti itu, Anda akan merasa jauh lebih tenang dan lebih percaya diri di masa depan, di samping itu, kruk yang Anda tumpuk di sana akan segera menemukan diri mereka sendiri.

Semua orang dapat menulis kepada kami dan mendapatkan kode sumber dari semua kode tertulis, bersama dengan semua buku panduan. Kontak di profil.

temuan


Menurut pendapat kami, proses yang dapat diotomatisasi belum mengkristal. Berdasarkan apa yang kami temui dan apa yang kolega Barat bicarakan, topik berikut masih terlihat:

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

Jika ada minat, kami dapat melanjutkan diskusi pada salah satu topik yang diberikan.

Saya juga ingin berspekulasi sedikit tentang otomatisasi. Apa yang seharusnya dalam pemahaman kita:

  • Sistem harus hidup tanpa laki-laki, sementara meningkatkan manusia. Sistem seharusnya tidak tergantung pada orang tersebut;
  • Operasi harus ahli. Tidak ada kelas spesialis yang melakukan tugas rutin. Ada ahli yang telah mengotomatisasi seluruh rutinitas, dan hanya menyelesaikan masalah yang rumit;
  • Rutin \ tugas standar dilakukan secara otomatis "dengan tombol", sumber daya tidak terbuang. Hasil dari tugas-tugas seperti itu selalu dapat diprediksi dan dimengerti.


Dan apa yang harus mengarah pada poin-poin ini:

  • Transparansi infrastruktur TI (Lebih sedikit risiko operasi, modernisasi, implementasi. Kurang downtime per tahun);
  • Kemampuan untuk merencanakan sumber daya TI (sistem perencanaan kapasitas - Anda dapat melihat berapa banyak yang dikonsumsi, berapa banyak sumber daya yang dibutuhkan dalam satu sistem, dan tidak melalui surat dan kunjungan ke departemen atas);
  • Kemampuan untuk mengurangi jumlah staf TI.

Penulis artikel: Alexander Manov (CCIE RS, CCIE SP) dan Pavel Kirillov. Kami tertarik untuk mendiskusikan dan mengusulkan solusi pada topik otomatisasi infrastruktur TI.

All Articles