Manuel CLI yerine YANG model-tabanlı yönetim (RESTCONF/NETCONF) kullanmak; hata riskini düşürür, otomasyonu hızlandırır ve ölçek kazandırır. IOS-XE’de RESTCONF; HTTPS üzerinden YANG-tanımlı config + state verisine erişmenizi sağlar.
1) RESTCONF’i etkinleştir (minimum konfig)
Cisco dokümantasyonundaki minimum adımlar: restconf + ip http secure-server.
conf t
restconf
ip http secure-server
end
Üretim notu: AAA/rol bazlı yetkilendirme, TLS sertifikası, management VRF ve ACL kısıtlarını ekleyin. Cisco, RESTCONF hazır olma durumunu nginx/DMI süreçleri ve NETCONF/RESTCONF session komutlarıyla doğrulamayı önerir.
2) “Çalışıyor mu?” doğrula (2 komut)
show platform software yang-management process
show netconf-yang sessions
yang-management processçıktısında nginx ve DMI süreçlerinin running olması beklenir.show netconf-yang sessionsile RESTCONF/NETCONF oturumlarını görürsünüz.
3) GET ile veri çek (curl)
Cisco örneklerinde JSON için Accept: application/yang-data+json kullanılıyor.
curl -k -u "<USER>:<PASS>" \
-H "Accept: application/yang-data+json" \
"https://<DEVICE-IP>/restconf/data/ietf-interfaces:interfaces"
İpucu: Interface adı içinde
/varsa URL’de encode gerekir (örn.GigabitEthernet1%2F0%2F1). Aksi halde 404 alabilirsiniz.
4) Değişiklik yap (PUT yerine PATCH daha güvenli)
Cisco dokümanında RESTCONF’un HTTP method eşlemesi var ve PUT “create/replace”, PATCH “update” mantığında.
Bu yüzden tek bir leaf güncellemek için PATCH genelde daha güvenlidir (PUT tüm node’u replace edebilir).
✅ PATCH ile sadece “description” güncelle (önerilen)
curl -k -u "<USER>:<PASS>" \
-H "Accept: application/yang-data+json" \
-H "Content-Type: application/yang-data+json" \
-X PATCH \
-d '{
"ietf-interfaces:interface": {
"name": "GigabitEthernet1",
"description": "Managed-by-RESTCONF"
}
}' \
"https://<DEVICE-IP>/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1"
🟡 PUT ile replace (dikkat!)
curl -k -u "<USER>:<PASS>" \
-H "Accept: application/yang-data+json" \
-H "Content-Type: application/yang-data+json" \
-X PUT \
-d '{
"ietf-interfaces:interface": {
"name": "GigabitEthernet1",
"description": "Managed-by-RESTCONF"
}
}' \
"https://<DEVICE-IP>/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1"
Hangi method’lar izinli? Hızlı kontrol için Cisco örneğindeki gibi
OPTIONSçağrısı atabilirsiniz (Allow/Accept-Patch header’larını döner).
5) Python ile 10 satırda çek (requests)
import os
import requests
from requests.auth import HTTPBasicAuth
DEV = os.environ.get("IOSXE_URL", "https://10.1.1.1")
USER = os.environ["IOSXE_USER"]
PASS = os.environ["IOSXE_PASS"]
headers = {"Accept": "application/yang-data+json"}
url = f"{DEV}/restconf/data/ietf-interfaces:interfaces"
r = requests.get(url, auth=HTTPBasicAuth(USER, PASS), headers=headers, timeout=10, verify=False)
r.raise_for_status()
data = r.json()
for intf in data.get("ietf-interfaces:interfaces", {}).get("interface", []):
print(intf["name"], intf.get("description", ""))
Üretimde:
verify=True+ kurumsal CA (verify="/path/ca.pem"), parolaları Vault/Secrets Manager’da tutun, rate-limit/timeouts ekleyin.
Operasyonel “best practice” (kısa)
- YANG-first düşün: CLI parsing yerine YANG path + JSON schema. RESTCONF’un YANG ile config/state/RPC erişimi sağladığı Cisco dokümanında net.
- TLS/mTLS & sertifika yönetimi:
-ksadece lab içindir. - Yetkilendirme & RBAC: TACACS+/AAA, role-based erişim; API kullanıcılarını ayrı yönet.
- Canary & rollback: önce 1–2 cihaz; “commit sonrası doğrulama” (GET ile state validate).
- Hata ayıklama hızlılığı:
show platform software yang-management process+show netconf-yang sessionsilk bakacağın yerler.
Cem Kemal Erbaş sitesinden daha fazla şey keşfedin
Subscribe to get the latest posts sent to your email.
Cem Kemal Erbaş Network, Siber Güvenlik ve Teknik Rehberler