Cisco Digital Network Architecture (DNA) Center merupakan platform yang digunakan untuk menyederhanakan manajemen dan operasi jaringan melalui penerapan intent-based network controller. Cisco DNA Center dapat menghemat waktu melalui penggunaan sebuah dashboard untuk memanajemen dan mengotomatisasi jaringan serta menerapkan kebijakan keamanan ke pengguna dan aplikasi. Bagi rekan-rekan yang tertarik mengujicoba Cisco DNA Center maka dapat memanfaatkan DevNet Sandbox Lab yang dapat diakses secara bebas di alamat berikut: https://devnetsandbox.cisco.com/. Pada DevNet Sandbox Lab Catalog Dashboard yang tampil, pilih Cisco DNA Center AO 2.1.2.5, seperti terlihat pada gambar berikut:
Selanjutnya akan diarahkan ke halaman yang memuat topologi dari Cisco DNA Center Sandbox Lab, seperti terlihat pada gambar berikut:
Terlihat terdapat 4 (empat) perangkat jaringan yang terlibat yaitu 1 unit Cisco Catalyst 3850, 2 unit Cisco Catalyst 9300 dan 1 unit Cisco WLAN Controller (WLC) 3504.
Mengakses Cisco DNA Center Sandbox
Cisco DNA Center Sandbox di desain untuk dapat diakses melalui Internet dan tanpa kebutuhan koneksi Virtual Private Network (VPN). Buka browser sebagai contoh Chrome dan pada address bar dari browser tersebut masukkan alamat https://sandboxdnac.cisco.com serta tekan Enter. Tampil halaman login dari Cisco DNA Center, seperti terlihat pada gambar berikut:
Login menggunakan username “devnetuser” dengan password “Cisco123!“. Apabila otentikasi sukses maka akan tampil halaman Dashboard dari Cisco DNAC, seperti terlihat pada gambar berikut:
Silakan rekan-rekan mengeksplorasi fitur-fitur yang ada pada Cisco DNA Center melalui antarmuka berbasis web. Namun pada tutorial ini akan dibahas lebih detail tentang pemrograman jaringan (network programmability) menggunakan Python yang mengakses Representational State Transfer (REST) Application Programming Interface (API) dari Cisco DNA Center. Dokumentasi lengkap dari Cisco DNA Center termasuk API-nya dapat diakses di alamat https://developer.cisco.com/docs/dna-center/.
Terdapat 5 (lima) file kode program Python yang dibuat untuk mengujicoba akses ke API dari Cisco DNAC, meliputi:
- Membuat File Informasi Konfigurasi Cisco DNAC.
- Memperoleh Token Otentikasi Cisco DNAC.
- Mengambil Data Perangkat Jaringan dengan Cisco DNAC.
- Memperoleh Jumlah Perangkat Jaringan.
- Menampilkan Informasi Perangkat Jaringan.
Membuat File Informasi Konfigurasi Cisco DNAC
File kode program Python pertama yang dibuat adalah config_dnac.py
yang didalamnya memuat deklarasi 3 (tiga) variable
terkait Cisco DNAC yang akan dikonfigurasi.
Baris pertama memuat deklarasi variable DNAC_IP yang menampung alamat dari Cisco DNAC yang akan dikonfigurasi yaitu sandboxdnac.cisco.com. Sedangkan baris kedua memuat deklarasi variable DNAC_USERNAME yang menampung username untuk login ke Cisco DNAC yaitu “devnetuser“. Terakhir baris ketiga memuat deklarasi variable DNAC_PASSWORD yang menampung sandi login dari user “devnetuser” yaitu “Cisco123!“.
Memperoleh Token Otentikasi Cisco DNAC
Cisco DNAC API menggunakan otentikasi berbasis token yang dihasilkan dari HTTPS Basic Authentication. Token tersebut nantinya digunakan untuk mengotorisasi permintaan berikutnya ke Cisco DNAC API.
Adapun penjelasan dari setiap baris kode program python kedua yang dibuat dengan nama dnac1.py
adalah sebagai berikut:
- Baris pertama sampai dengan kelima digunakan untuk melakukan import modul requests yang dibutuhkan mengirimkan permintaan API ke Cisco DNAC dan modul json digunakan untuk bekerja dengan data model JSON serta menonaktifkan peringatan sertifikat Secure Socket Layer (SSL).
- Baris ketujuh sampai dengan kesebelas memuat deklarasi pembuatan fungsi dengan nama
get_auth_token
. Fungsi tersebut digunakan untuk mengirimkan API request dengan method POST dengan parameter berupa url dari API untuk memperoleh token otentikasi Cisco DNAC yaituhttps://{DNAC_IP}/dna/system/api/v1/auth/token
. Selain itu parameter auth yang memuat username dan password untuk HTTPS Basic Authentication serta verify bernilai False sehingga menonaktifkan pengecekan sertifikat keamanan. - Baris ke empat belas digunakan untuk memanggil fungsi
get_auth_token
dan hasilnya disimpan pada variableresult
. - Baris ke limabelas digunakan untuk menampilkan isi dari variable
result
yang memuat Token menggunakan fungsiprint()
.
Eksekusi kode program tersebut dengan perintah python3 dnac1.py
, seperti terlihat pada gambar berikut:
Token otentikasi telah berhasil diperoleh.
Mengambil Data Perangkat Jaringan dengan Cisco DNAC
File kode program Python ketiga yang dibuat adalahdnac2.py
yang didalamnya memuat deklarasi fungsi get_network_device_list()
untuk mengambil data perangkat jaringan yang dikelola oleh Cisco DNAC.
Adapun penjelasan dari setiap baris kode program python dengan nama dnac2.py
tersebut adalah sebagai berikut:
- Baris pertama sampai dengan kelima digunakan untuk melakukan import modul requests yang dibutuhkan mengirimkan permintaan API ke Cisco DNAC dan modul json digunakan untuk bekerja dengan data model JSON serta menonaktifkan peringatan sertifikat SSL.
- Baris ketujuh sampai dengan kesebelas memuat deklarasi pembuatan fungsi dengan nama
get_auth_token
. - Baris ketigabelas sampai dengan ke duapuluh tiga memuat deklarasi pembuatan fungsi dengan nama
get_network_device_list
. - Baris ke empat belas digunakan untuk memanggil fungsi
get_auth_token
sehingga menghasilkan token otentikasi Cisco DNAC API dan hasilnya disimpan pada variabletoken
. - Baris ke limabelas memuat deklarasi variable url untuk mengambil data perangkat jaringan dari Cisco DNAC yaitu
https://{DNAC_IP}/dna/intent/api/v1/network-device
. - Baris ke enam belas sampai dengan dua puluh memuat deklarasi variable headers dengan 3 (tiga) key/value meliputi key x-auth-token yang memuat token untuk otentikasi Cisco DNAC, key Content-type bernilai application/json yang mengindikasikan format request body yang dikirim dari API Client yaitu JSON dan Accept bernilai application/json yang mengatur jenis luaran yang diminta sebagai balasan dari API Server yaitu JSON.
- Baris ke duapuluh satu digunakan untuk mengirimkan API request dengan method GET dengan parameter berupa url dan headers serta hasilnya disimpan pada variable
response
. - Baris ke duapuluh dua digunakan untuk mengembalikan objek JSON dari nilai yang terkandung di dalam variable
response
dan hasilnya disimpan pada variablenetdev_list
. - Baris ke duapuluh tiga digunakan untuk mengatur nilai variable
netdev_list
sebagai nilai balik dari pemanggilan fungsiget_network_device_list.
- Baris ke duapuluh lima digunakan untuk memanggil fungsi
get_network_device_list
dan hasilnya disimpan pada variableresult
. - Baris ke duapuluh enam digunakan untuk menampilkan isi dari variable
result
yang memuat hasil dari permintaan API terkait daftar perangkat jaringan menggunakan fungsiprint()
.
Eksekusi kode program tersebut dengan perintah python3 dnac2.py
maka hasilnya akan terlihat seperti berikut:
Memperoleh Jumlah Perangkat Jaringan
File kode program Python ke-empat yang dibuat adalahdnac3.py
yang didalamnya memuat kode program untuk memperoleh jumlah perangkat jaringan.
Terlihat kode program mulai baris pertama sampai dengan baris ke duapuluh tujuh masih sama dengan yang terdapat pada file dnac2.py
. Namun kode program pada baris ke duapuluh tujuh diawali dengan tanda # sehingga berfungsi sebagai komentar dan tidak akan dieksekusi ketika program python tersebut dijalankan.
Terdapat penambahan kode program yaitu mulai baris ke 28 (duapuluh delapan) yang memuat instruksi untuk mengambil jumlah perangkat jaringan yang terdapat pada variable result['response']
dengan menggunakan bantuan fungsi len()
dan hasilnya disimpan pada variable devices
. Sedangkan kode program pada baris ke 29 (duapuluh sembilan) digunakan untuk menampilkan isi dari variable devices
. Namun terlebih dahulu dilakukan konversi tipe data dari nilai yang terkandung pada variable devices
ke string menggunakan fungsi str()
sehingga dapat ditampilkan menggunakan fungsi print()
.
Eksekusi kode program tersebut dengan perintah python3 dnac3.py
, seperti terlihat pada gambar berikut:
Berdasarkan output dari eksekusi kode program tersebut maka diperoleh informasi bahwa terdapat 4 (empat) perangkat jaringan.
Menampilkan Informasi Daftar Perangkat Jaringan
File kode program Python kelima yang dibuat adalahdnac4.py
dimana isinya sama seperti file dnac3.py
mulai dari baris pertama sampai dengan baris ke duapuluh sembilan. Penambahan kode program dilakukan di bagian akhir dari file agar dapat menampilkan informasi daftar perangkat jaringan.
Kode program dari baris ke 30 (tigapuluh) sampai dengan 38 (tigapuluh delapan) digunakan untuk menampilkan informasi daftar perangkat jaringan yang telah diambil sebelumnya melalui Cisco DNAC REST API dan tersimpan pada variable result['response']
. Terlihat pada baris ke 34-37 dilakukan perulangan menggunakan for
untuk menampilkan informasi dari setiap perangkat jaringan meliputi Hostname, Management IP Address, Platform ID dan Uptime.
Eksekusi kode program tersebut dengan perintah python3 dnac4.py
, seperti terlihat pada gambar berikut:
Selamat, rekan-rekan telah berhasil membuat kode program untuk mengakses Cisco DNAC melalui REST API dengan bahasa pemrograman Python. Apabila terdapat pertanyaan, silakan mengomentari posting ini atau mengirimkan melalui email ke admin[at]iputuhariyadi.net. Semoga bermanfaat. Terimakasih.