Úvod
V dnešním článku si jen krátce ukážeme spojení DevOps principů s generickou správou sítě.
Cílem je poskytnout celkem dvě služby koncovým klientům:
- Automatizované aktualizování strojů v síti.
- Automatizované zálohování strojů pomocí textových výpisů s možností verzování souborů v čase.
Pro oba dané procesy jsme použili standardizovanou sadu nástrojů v ekosystému Azure Devops spolu s orchestračním nástrojem Ansiblem. Pojďme se na ni podívat detalněji.
Automatizované zálohování
Začínáme nasazování Jednoduchého exekutoru pro ansiblovské role – Ansible semaphore. V krátkosti – jedná se o náhradu za AWX. Je to jednoduché klikátko, snadné na instalaci a celkem rychlé pro práci. Vhodné svým GUI pro techniky, kteří na jedno kliknutí něco spustí a magie se stane. přesně to potřebujeme. Alternativou by mohli být Azure Devops pipelines pro docílení toho stejného a možná se to do budoucna i takto zkonvertí.
Instalaci volíme z historických důvodů manuální. Má mnoho drobností k řešení, ale máme rádi pocit pochopení co je pod kapotou. Pro slabé nátury je dostupná instalace pomocí snap a je také možnost službu běžet v kontejneru. Z interních důvodů jsme kontejner nezvolili, buď byl původně volba na prvním místě k nasazení.
Po nasazení Semaphore je potřeba napsat soustavu několika rolí, které umožní orchestrace záloh:
- Linuxových strojů
- MikroTiků.
Proces zálohování Linuxových strojů je opravdu triviální, nemá smysl se jím zabývat do detailu. Mnohem zajímavější totiž jsou Tiky. Proces jejich zálohování zde vyobrazen zde:
U MikroTiků se na chvíli zastavíme. Spolu s Ansiblem dobře funguje toto napojení, které umí s Tiky interagovat přes SSH.
Zde se totiž nejvíce trápíme nad tím, jak stáhnout textový export Tiku na Ansible controller.
Samotný Fetch modul nefunguje a jak je popsáno zde na tomto fóru je potřeba použít modul netcommon, mít nainstalovaný modul paramiko
a scp
.
- name: "test"
ansible.netcommon.net_get:
src: "test1.rsc.backup"
dest: "./test1.rsc.backup"
Po trošce bolístek se pak trápíme chvíli, jak zajistit verzování souborů v čase v gitu, ale nakonec je hotovo a celé řešení spouštíme v Semaphore. Zde je výsledek snažení:
Vše funguje na první dobrou. Mají-li Tiky RoS7+ a není-li jejich hardware slabý, šlape řešení jako hodinky.
Automatické aktualizace
Pro aktualizace a upgrade Linuxových strojů jsou playbooky opravdu snadné, například:
---
- name: Debian | Update the system
ansible.builtin.apt:
update_cache: true
become: true
- name: Debian | Upgrade the system
ansible.builtin.apt:
upgrade: true
update_cache: true
autoclean: true
become: true
Mnohem větší výzva jsou aktualizace Windowsů.
V případě MikroTiků stačí jednoduše:
- name: RouterOS | Check version
routeros_command:
commands:
- /system package update check-for-updates
- name: RouterOS | Check if an update is needed
routeros_command:
commands:
- "[:put ([/system package update check-for-updates])]"
- name: RouterOS | Run upgrade if new version is available
routeros_command:
commands:
- /system package update install
Vše ukládáme opět do Semaphore a výsledek snažení je pak popsán na tomto obrázku jednoduše.
A je to, ani to nebolelo, a řešení bude sloužit dlouhá léta.