- Thu thập inventory IOS XR bằng Ansible
how-to Dùng khi cần lấy nhanh phiên bản, serial, module của nhiều router IOS XR và xuất ra file YAML/CSV.
- Đẩy cấu hình IOS XR bằng Ansible
how-to Dùng khi cần đẩy config lên nhiều router IOS XR bằng iosxr_config hoặc resource module, chạy thử bằng check mode và giữ backup trước khi commit.
- Junos PyEZ cơ bản
how-to Dùng khi viết script Python thao tác Junos qua PyEZ - kết nối, đọc facts, gọi RPC, load config, commit confirmed và rollback.
- NETCONF với ncclient
how-to Dùng khi cần đọc/ghi config IOS XR hoặc Junos qua NETCONF bằng Python ncclient - get-config có filter, edit-config vào candidate, validate, commit và commit confirmed.
- Đẩy cấu hình Junos bằng Ansible
how-to Dùng khi cần đẩy config lên nhiều thiết bị Junos bằng junos_config hoặc resource module, có check mode, diff, commit confirmed và rollback.
- Nornir cơ bản - inventory, task, filter
how-to Dùng khi muốn chạy tác vụ song song trên nhiều router bằng Python thuần với Nornir, kết hợp plugin netmiko/napalm và xử lý kết quả.
- Đọc YANG bằng pyang và yanglint
how-to Dùng khi cần tải model YANG cho IOS XR/Junos/OpenConfig, xem cây bằng pyang -f tree, tìm path cho NETCONF/gNMI và validate dữ liệu bằng yanglint.
- NetBox REST API và pynetbox
how-to Dùng khi cần đọc/ghi NetBox (device, interface, IP) bằng REST API hoặc pynetbox để làm nguồn dữ liệu cho script automation.
- Ansible inventory động từ NetBox
how-to Dùng khi muốn Ansible lấy danh sách router trực tiếp từ NetBox bằng plugin netbox.netbox.nb_inventory, chia group theo site/role/platform và tự gán biến kết nối.
- Backup cấu hình router vào Git
how-to Dùng khi cần backup config IOS XR/Junos định kỳ bằng Oxidized hoặc Ansible, lưu vào Git để xem lịch sử và diff giữa các lần thay đổi.
- Kiểm tra trạng thái IOS XR sau thay đổi bằng Ansible
how-to Dùng khi cần chứng minh một thay đổi trên router IOS XR đã đạt kết quả mong muốn, bằng assert, ansible.utils.validate (JSON Schema) và fact_diff trước/sau.
- Telegraf inputs.gnmi – subscribe IOS XR và Junos
how-to Dùng khi cần lấy counter interface qua gNMI Subscribe bằng Telegraf và đẩy vào InfluxDB 2.x hoặc Prometheus.
- Model-Driven Telemetry trên IOS XR
how-to Dùng khi cần cấu hình MDT trên IOS XR (sensor-group, destination-group, subscription) theo kiểu dial-out hoặc dial-in.
- Dựng Akvorado thu thập flow
how-to Dùng khi cần dựng collector flow Akvorado bằng Docker Compose, cấu hình router export flow và enrichment SNMP/GeoIP.
- Grafana provisioning – datasource và dashboard as code
how-to Dùng khi muốn khai báo datasource, folder và dashboard Grafana bằng file trong Git rồi mount vào container.
- Prometheus snmp_exporter – generator, if_mib và SNMPv3
how-to Dùng khi cần poll counter interface qua SNMP bằng snmp_exporter, tự build snmp.yml bằng generator và scrape bằng Prometheus.
- Pipeline syslog thiết bị mạng bằng Vector – Loki và ClickHouse
how-to Dùng khi cần gom syslog từ router/switch qua Vector, tách mnemonic, gắn tên thiết bị/site rồi ghi đồng thời vào Loki và ClickHouse.
- Grafana – biến dashboard, repeat panel và transformations
how-to Dùng khi cần dropdown chọn thiết bị/interface (biến phụ thuộc nhau), tự nhân panel theo biến và xử lý kết quả query bằng transformations.
- Docker Compose – pattern hay dùng
how-to Dùng khi viết compose.yaml cho stack nhiều service cần healthcheck, thứ tự khởi động, profiles, biến môi trường và override theo môi trường.
- Cloudflare Tunnel – publish dịch vụ nội bộ không mở port
how-to Dùng khi cần đưa web/SSH nội bộ ra internet qua Cloudflare mà không mở port inbound, không cần IP public.
- Nginx reverse proxy với TLS, HTTP/2, WebSocket và rate limit
how-to Dùng khi đặt Nginx trước app nội bộ để terminate TLS, bật HTTP/2, proxy WebSocket, gắn header chuẩn và giới hạn tốc độ request.
- ingress-nginx + cert-manager + Let's Encrypt trên Kubernetes
how-to Dùng khi cần publish Service qua Ingress với chứng chỉ Let's Encrypt tự cấp và tự gia hạn bằng cert-manager ClusterIssuer.
- Giảm dung lượng Docker image
how-to Dùng khi image quá lớn, pull chậm hoặc nhiều CVE, cần chọn base slim/alpine/distroless, tách multi-stage và soi layer bằng dive, docker history.
- Kubernetes ConfigMap và Secret
how-to Dùng khi cần tạo ConfigMap/Secret, đưa vào Pod dưới dạng env hoặc file, và làm app nhận cấu hình mới khi giá trị thay đổi.
- Kubernetes RBAC – ServiceAccount, Role, RoleBinding
how-to Dùng khi cần cấp quyền tối thiểu cho ServiceAccount (CI, operator, app gọi API) hoặc người dùng, và kiểm tra quyền bằng kubectl auth can-i.
- Kubernetes NetworkPolicy – default deny và allow theo label
how-to Dùng khi cần cô lập namespace bằng NetworkPolicy, chặn mặc định rồi mở theo label Pod/namespace, kèm egress DNS để Pod vẫn phân giải tên.
- k3s single node – cài đặt, Traefik, local-path, gỡ bỏ
how-to Dùng khi cần một cluster Kubernetes nhẹ trên một máy (lab, edge, VPS) với k3s, có sẵn Traefik ingress, ServiceLB và local-path storage.
- Caddy reverse proxy với HTTPS tự động
how-to Dùng khi cần reverse proxy có HTTPS Let's Encrypt tự cấp và tự gia hạn chỉ với vài dòng Caddyfile, thay cho nginx + certbot.
- Argo CD – GitOps với Application, sync policy, App of Apps
how-to Dùng khi muốn Git là nguồn sự thật cho manifest Kubernetes, Argo CD tự đồng bộ cluster theo repo, và cần biết cách rollback an toàn.
- Viết MCP server bằng Python (FastMCP)
how-to Dùng khi cần tự viết MCP server Python cung cấp tool/resource chỉ đọc cho agent, test bằng MCP Inspector rồi gắn vào Claude Code.
- Claude Code: settings.json, permissions và hooks
how-to Dùng khi cần cho phép/chặn lệnh trong Claude Code bằng permissions allow/deny và chạy script tự động trước/sau khi tool chạy (PreToolUse/PostToolUse).
- Claude API – tool use loop bằng Python SDK
how-to Dùng khi cần tự viết agent loop gọi tool (ping, show) bằng Messages API và package anthropic, không qua framework.
- Dựng ReAct agent với LangGraph cho tool mạng
how-to Dùng khi cần dựng nhanh một agent hỏi-đáp vận hành mạng (ping, show) bằng LangGraph và Claude, có lưu hội thoại theo thread.
- Viết MCP server bằng TypeScript SDK
how-to Dùng khi cần viết MCP server bằng Node.js/TypeScript với @modelcontextprotocol/sdk, khai báo tool bằng zod schema, build rồi gắn vào Claude Code.
- Claude Code: subagent, skill và slash command tuỳ biến
how-to Dùng khi muốn đóng gói quy trình lặp lại (review playbook, đọc log, kiểm tra BGP) thành subagent, skill hoặc slash command riêng của project trong Claude Code.
- Prompt caching với Claude API
how-to Dùng khi agent gửi lặp lại system prompt, tool hoặc tài liệu dài (runbook, config mẫu) và muốn giảm chi phí, độ trễ bằng cache_control.
- Lấy JSON có cấu trúc từ Claude (tool use + pydantic)
how-to Dùng khi cần Claude trả dữ liệu đúng schema (phân loại alarm, trích xuất từ syslog, parse output show) để code xử lý tiếp, có validate bằng pydantic.
- Test MCP server (Inspector, pytest, Claude Code)
how-to Dùng khi đã viết MCP server và cần test tool ở 3 tầng - unit test hàm, test giao thức qua stdio bằng pytest, rồi thử tay bằng MCP Inspector và Claude Code.
- Ký commit Git bằng GPG
how-to Tạo khoá GPG, cấu hình Git ký mọi commit và hiển thị "Verified" trên GitHub/GitLab.
- Git rebase workflow – interactive, fixup, force-with-lease
how-to Dùng khi cần làm gọn lịch sử feature branch trước khi mở hoặc cập nhật PR, gồm rebase lên main, gộp commit fixup, giải conflict và push an toàn.
- FastAPI cơ bản – route, Pydantic model, dependency
how-to Dùng khi cần dựng nhanh một REST API nhỏ (vd inventory thiết bị mạng) bằng FastAPI + Pydantic v2, chạy bằng uvicorn và có OpenAPI tự sinh.
- pre-commit – chạy ruff, gitleaks trước mỗi commit và trong CI
how-to Dùng khi muốn tự động lint/format Python bằng ruff và chặn commit chứa secret bằng gitleaks, cả trên máy dev lẫn trong GitHub Actions.
- Git worktree và stash – làm song song nhiều branch
how-to Dùng khi đang code dở mà phải sửa gấp branch khác, review PR hoặc chạy test dài trên branch khác mà không muốn mất trạng thái làm việc.
- Cấu hình ruff và mypy trong pyproject.toml
how-to Dùng khi dựng chuẩn code cho project Python, gồm ruff để lint và format (thay flake8, isort, black) và mypy để kiểm tra kiểu, tất cả cấu hình trong pyproject.toml.
- FastAPI xác thực bằng JWT – OAuth2PasswordBearer, PyJWT, pwdlib
how-to Dùng khi API FastAPI cần đăng nhập bằng username/password, trả access token JWT và bảo vệ endpoint bằng dependency get_current_user.
- Triển khai FastAPI production – uvicorn workers, Docker, sau Nginx
how-to Dùng khi đưa API FastAPI lên server thật, gồm chọn số worker, đóng gói Docker bằng uv, đặt sau Nginx với proxy headers và chạy dưới URL prefix bằng root_path.
- VS Code Remote-SSH và Dev Containers
how-to Dùng khi muốn code trực tiếp trên jump host, server lab hoặc trong container có sẵn toolchain, với VS Code chạy trên laptop.
- Dev trong container (compose watch, bind mount, debug Python)
how-to Dùng khi muốn sửa code trên máy và chạy trong container với auto-sync bằng compose watch hoặc bind mount, kèm gắn debugger debugpy từ VS Code.
- Cấu hình IS-IS trên IOS XR và Junos
how-to Dựng IS-IS L2-only, wide metric, point-to-point giữa IOS XR và Junos rồi kiểm tra adjacency, LSDB và route.
- Bật SR-MPLS trên IS-IS (IOS XR và Junos)
how-to Bật Segment Routing MPLS trên IS-IS có sẵn, gán node SID, bật TI-LFA và kiểm tra label trên IOS XR và Junos.
- MPLS L3VPN – VRF, RD/RT, PE-CE eBGP trên IOS XR và Junos
how-to Cấu hình VRF, RD/RT, VPNv4 iBGP và PE-CE eBGP cho một khách hàng L3VPN trên IOS XR và Junos, kèm lệnh kiểm tra.
- BGP route policy – RPL trên IOS XR và policy-statement trên Junos
how-to Viết policy lọc prefix khách hàng, gắn community, đặt local-preference và chỉ quảng bá route khách lên upstream, bằng RPL và Junos policy-options.
- RPKI Route Origin Validation với Routinator, IOS XR và Junos
how-to Dựng Routinator làm RTR server, cấu hình router IOS XR và Junos lấy VRP, rồi drop route RPKI invalid trong import policy.
- Cấu hình OSPFv2 trên IOS XR và Junos
how-to Dựng OSPFv2 area 0 với link point-to-point, loopback passive, reference bandwidth, area stub/NSSA, rồi kiểm tra neighbor, LSDB và route trên IOS XR và Junos.
- Cấu hình QoS trên IOS XR (MQC) và Junos class-of-service
how-to Cấu hình policing ingress cho khách, marking EXP, hàng đợi priority/bandwidth trên link core và shaping cho khách bằng class-map/policy-map trên IOS XR và class-of-service trên Junos.
- VRRP trên IOS XR và Junos (so với HSRP)
how-to Dùng khi cần gateway dự phòng cho một subnet - cấu hình VRRP có priority, preempt, track interface trên IOS XR và Junos, kiểm tra master và so nhanh với HSRP.
- Viết systemd service và timer thay cron
how-to Dùng khi cần chạy một app/script như service tự khởi động lại, đọc env từ file, hoặc lập lịch bằng timer thay cron.
- SSH config – jump host, ControlMaster, agent, port forward
how-to Dùng khi phải SSH qua bastion tới router/server, muốn tái sử dụng kết nối cho Ansible, hoặc cần tunnel port.
- Netplan trên Ubuntu – static IP, bond, VLAN, bridge
how-to Dùng khi cấu hình mạng bền vững trên Ubuntu Server (IP tĩnh, LACP bond, VLAN, bridge cho VM) và áp dụng an toàn qua SSH.
- Policy routing và VRF trên Linux – ip rule, nhiều routing table
how-to Dùng khi máy có nhiều uplink/ISP cần trả lời đúng cổng theo source IP, hoặc cần tách mạng management bằng VRF trên Linux.
- Giả lập delay, loss, băng thông bằng tc netem và tbf
how-to Dùng khi cần thử app/automation trong điều kiện mạng xấu (WAN chậm, mất gói, băng thông thấp) ngay trên một máy Linux, và gỡ bỏ sạch sau khi thử.
- Cron và logrotate – lập lịch job và xoay vòng log
how-to Dùng khi cần đặt job định kỳ bằng crontab, debug job cron không chạy, hoặc cấu hình logrotate cho log ứng dụng và thử bằng logrotate -d.
- Let's Encrypt với certbot – http-01, dns-01, auto renew
how-to Dùng khi cần cert TLS miễn phí cho Nginx, cert wildcard qua DNS, và đảm bảo cert tự gia hạn không ai phải nhớ.
- SSH hardening – sshd_config, key-only, fail2ban
how-to Dùng khi dựng server Linux mới (jump host, collector, runner) và cần khoá SSH về key-only, giới hạn user, chặn brute-force mà không tự khoá mình ra ngoài.
- Mã hoá secret trong repo – SOPS + age và ansible-vault
how-to Dùng khi cần commit mật khẩu thiết bị, token API vào repo automation ở dạng mã hoá, chia quyền giải mã theo môi trường và dùng trực tiếp trong playbook.
- nftables firewall – ruleset cơ bản, set, NAT, persist
how-to Dùng khi cần viết firewall host cho server Linux (jump host, collector, gateway lab) bằng nftables, kèm NAT và cách lưu cấu hình qua reboot.
- Hardening thiết bị mạng – AAA/TACACS+, SSH, mgmt ACL, bảo vệ control-plane (IOS XR, Junos)
how-to Dùng khi đưa router IOS XR hoặc Junos vào vận hành và cần chuẩn hoá đăng nhập qua TACACS+, chỉ cho SSH/NETCONF từ dải quản trị, và lọc lưu lượng tới routing engine.
- WireGuard VPN – wg genkey, wg0.conf, wg-quick, AllowedIPs
how-to Dựng VPN WireGuard site-to-site hoặc cho laptop quản trị vào mạng lab, hiểu đúng AllowedIPs để định tuyến và lọc peer.
- HashiCorp Vault cơ bản – KV v2, policy, AppRole, vault CLI
how-to Dùng khi cần lưu credential thiết bị/DB trong Vault, cấp quyền đọc theo path cho người và cho automation (Ansible, CI) qua AppRole.
- SNMPv3 authPriv trên IOS XR và Junos
how-to Dùng khi thay community SNMPv2c bằng SNMPv3 có xác thực và mã hoá (authPriv) cho collector giám sát, và kiểm tra bằng snmpwalk.
- SSH certificate với CA – ssh-keygen -s, TrustedUserCAKeys, principals, host cert
how-to Dùng khi số server/người dùng lớn và không muốn phát tán authorized_keys hay known_hosts nữa, chuyển sang SSH certificate ngắn hạn do CA nội bộ ký.
- mTLS với nginx – CA nội bộ, ssl_verify_client, test bằng curl
how-to Dùng khi muốn chỉ client có cert do CA nội bộ cấp (collector, agent, script automation) mới gọi được API sau nginx.
- Audit logging trên Linux – auditd rules, ausearch, aureport, log tập trung
how-to Dùng khi cần ghi lại ai sửa file cấu hình, ai chạy lệnh với quyền root, đăng nhập thành công/thất bại, và đẩy log đó về server tập trung.
- fail2ban cho sshd/nginx và so sánh với CrowdSec
how-to Dùng khi cần tự động ban IP brute-force trên server Linux (sshd, nginx), viết filter riêng, và cân nhắc CrowdSec thay thế.