Перш чым пісаць задачу Ansible, адкажыце на драбнейшае пытанне: што менавіта лічыцца? Наладжаны партнёр, сеанс IKE, асацыяцыя бяспекі IPsec і запіс стану тунеля пад наглядам — гэта чатыры розныя адзінкі, а перападача ключоў або некалькі абароненых сетак прымушаюць іх сумы разыходзіцца. Калі панэль і playbook разыходзяцца, яны звычайна лічаць розныя рэчы, а не адзін з іх памыляецца.

Чатыры рэчы, якія людзі называюць актыўнымі

Наладжаны партнёр — гэта аб’ект тапалогіі: ён існуе, бо нехта яго вызначыў. Сеанс IKE — гэта сувязь плоскасці кіравання, якая можа быць усталяванай, пакуль трафік не ідзе. SA IPsec — гэта асацыяцыя плоскасці даных для пэўнай пары селектараў, і адзін тунель можа несці некалькі такіх. Стан тунеля пад наглядам — гэта ўласны аперацыйны вердыкт платформы, які звычайна бліжэй за ўсё да таго, што аператар мае на ўвазе, кажучы, што тунель усталяваны.

Толькі апошняя — разумная аснова для аперацыйнага падліку. Першая — гэта інвентар канфігурацыі, і паведамляць яе як актыўную — гэта як панэль паказвае зялёны колер для партнёра, які не працуе з аўторка. Вырашыце, якая адзінка патрэбна спажыўцу ліку, затым пазначце метрыку гэтай адзінкай у яе назве.

Рашэнне першае: якая плоскасць кіравання?

Калі прыладай кіруе FDM, адпаведная паверхня — гэта FTD REST API. Калі ёй кіруе FMC, то гэты API не з’яўляецца ўзаемазаменным, і аб’екты знаходзяцца за ўласным API FMC. Пацвердзіце гэта, перш чым напісаць хоць адзін запыт, бо няправільная плоскасць вяртае праўдападобную памылку, якая выглядае як праблема з правамі.

Для флоту адказ таксама вызначае, дзе месціцца падлік: на прыладу праз FDM або на дамен праз FMC. Гэта розныя абсягі, і яны даюць розныя лікі для аднаго і таго ж флоту.

Рашэнне другое: які рэсурс адказвае?

Для прыкладу, прывязанага да версіі: даведнік аб’ектаў FMC 7.3 API апісвае рэсурсы GET пад шляхам health:

/api/fmc_config/v1/domain/{domainUUID}/health/tunnelstatuses
/api/fmc_config/v1/domain/{domainUUID}/health/tunnelsummaries

Рэсурс стану тунеля падтрымлівае фільтры прылады і стану, уключаючы TUNNEL_UP. Гэта дае вам сапраўдны аперацыйны рэсурс для праверкі для гэтага выпуску, а не здагадку пра назву поля.

Пацвердзіце даступнасць, правы, параметры запыту і схему адказу ў API Explorer разгорнутага FMC, перш чым рэалізоўваць парсер. Дакументацыя аднаго выпуску — гэта пункт адліку, а не дамова для таго, які вы запускаеце.

Напішыце дамову падліку

Сфармулюйце метрыку адным сказам: унікальныя аперацыйныя запісы тунеляў для адной прызначанай прылады і дамена, чый заяўлены стан — TUNNEL_UP. Затым апішыце, як прадстаўляюцца рэзервовыя прылады і некалькі запісаў для аднаго лагічнага сайта, бо гэтыя два выпадкі вырашаюць, ці супадзе ваш лік з тым, што на нарадзе.

Не мяняйце ціха адзінку з запісу тунеля на аддалены сайт. Калі бізнэс хоча сайты, суаднясіце запісы з сайтамі відавочна і апублікуйце гэтае суаднясенне. Падлік, які ціха пераазначае сябе, горш за адсутнасць падліку, бо ніхто не можа сказаць, калі ён змяніўся.

Стаўцеся да рэсурсу зводкі як да зручнасці толькі пасля таго, як пацвердзіце, што ён зводзіць. Ён можа агрэгаваць менавіта тое, што вам трэба, а можа адказваць на тонка іншае пытанне. Прачытайце яго схему адзін раз, запішыце розніцу і выкарыстоўвайце рэсурс стану, калі зводку немагчыма патлумачыць. Зводка, якую вы не разумееце, — гэта лік, які вы не зможаце абараніць на разглядзе.

Няхай працэс захоўвае няпэўнасць

Выкарыстоўвайце зацверджаны HTTPS API, правярайце сертыфікат, трымайце токены па-за вывадам задачы і атрымлівайце абсяг з дапамогай фільтра і пагінацыі, якія падтрымлівае выпуск. Затым праверце схему, перш чым нешта вылічваць.

fetch intended domain/device runtime records
validate response, completeness and freshness
deduplicate by the documented tunnel identity
count records matching the approved up-state definition
report count with scope, timestamp and metric unit

Гэта псеўдакод працэсу, а не пратэставаны playbook. Бярыце фактычныя назвы палёў з усталяванага API замест таго, каб выдумляць ключ JSON з назвай active.

Галоўнае правіла — паводзіны пры збоі: памылка аўтарызацыі, непадтрыманы рэсурс, састарэлы ўзор або няпоўны набор старонак мусяць даваць unknown або error, ніколі не паспяховы нуль. Нуль, які азначае «я не змог запытаць», — самы дарагі від памылкі.

Праверце супраць уласнага выгляду платформы

Параўнайце першы вынік з прадстаўленнем маніторынгу VPN гэтага выпуску для той жа прылады і моманту. Калі яны розныя, высветліце, якую адзінку выкарыстоўвае кожнае, перш чым змяняць playbook.

Захоўвайце не-сакрэтны кантэкст для кожнага запуску: абсяг, пазнаку часу, адзінку метрыкі і колькасць запісаў. Даведнік аб’ектаў FMC 7.3 API — крыніца шляхоў рэсурсаў вышэй, а API Explorer на вашым уласным разгортванні — крыніца ўсяго астатняга.

Падобныя артыкулы