Tak jsem se musel pustit do hloubkové „kontroly“ ESX hosta verze 8. Jelikož jsem připravoval Lab na školení vSphere Whats New 8, tak jsem si pomohl vyklonováním nainstalovaných nested hostů. Problém nastal s některými konfiguracemi, které byly stejné, resp. stejně špatné. V grafice to vidět nebylo, ale když jsem zkoušel použít novinku ve verzi 8, což je Cluster Desired State Configuration, projevilo se to. Je to dáno tím, že konfigurace již nejsou uloženy v pouhých souborech (/etc/vmware/esx.conf), ale od verze 7.0U2 jsou uloženy v ConfigStore viz. vSphere Release notes.
Problém nastává, pokud chcete něco z toho změnit. Není to nemožné, akorát to chce trochu upravit systém myšlení a přejít z klasického Linuxového, kdy veškeré konfigurace jsou v souborech, do „programátorského“ kdy se upravují konfigurace přes API a JSON.
Klasický přístup přes esxcli tuto změnu reflektuje, ale jsou některé věci, které i tak přes ESXCLI vidět nejsou. Konkrétní příklad, který mne potkal, se týkal uložené konfigurace standardních switchů a jejich vazby na fyzické uplinky. Pokud ale ty uplinky v serveru už neexistovaly, tak ESXCLI je nezobrazovalo. Pokud jsem se ale podíval do ConfigStore, tak tam stále ještě byly zmíněny a pak to dělalo problémy.
Jak toto vyřešit? William Lam už o tom napsal nejeden blogpost. Stejně tak i Duncan Epping zde. Pojďme se ale podívat na konkrétní příklad a projít si, jak to pořešit.
Nejprve se musíme podívat na strukturu ConfigStore. Ten je rozdělen na sekce CurrentConfig, DesiredState, Default.
Jediná část, ve které můžete dělat změny je current.
Pro přístup do configStore je přímo na ESXi hostu příkaz configstorecli
Nejprve je třeba pochopit jak se s příkazem configstorecli pracuje. Nejjednodušší je použít nápovědu za každou částí příkazu „-h“ nebo „–help“
Jak je vidět ze screenshotu, tak pro konfiguraci máme možnost použít „get“,“set“,“update“,“delete“.
Rozdíl mezi Update a Set je zejména v nevyjmenovaných částech konfigurací. Pokud použiji Update, tak nevyjmenované části se nezmění, pokud Set, tak se smažou, resp převedou do nějakého default nastavení.
Pro všechny ale potřebujeme znát konkrétní část (adresu) kterou budeme chtít upravovat, měnit, vytvářet apod. Toto nám umožní adresace pomocí -c (component) -g (group) a -k (key). Zjistit to nejjednodušeji můžeme pomocí výpisu schématu. Opět pomocí configstorecli.
configstorecli schema list
Ještě lépe
configstorecli schema list > /vmfs/volumes/DatastoreName/configstore-schema.json
Protože pak si můžete vygenerovaný JSON soubor stáhnout z datastore a zobrazit si jej v lokálním textovém editoru, který umí i zvýrazňování JSON syntaxe.
Když už víme, jak máme adresovat jednotlivé konfigurace, tak si je můžeme nechat vypsat.
Například:
configstorecli config current get -c esx -g network_vss -k switches
Pokud bychom v tom chtěli dělat nějaké změny, tak samozřejmě opět přesměrovat výstup do souboru a ten upravovat.
Jedna z věcí, na které je třeba si dát pozor, aby na konci řádku nebyly zbytečné čárky, pokud nenásleduje další položka, a aby soubor nezačínal a nekončil symboly „[„, „]“ pokud na vstupu není konfigurace pole objektů.
Příklad souboru k úpravě:
Jakmile máme upraveno, tak potřebujeme tuto konfiguraci nahrát do ESXi hosta. K tomu nám opět poslouží configstorecli, tentokrát s příkazem „set“, nebo „update“. Rozdíl viz výše.
Příklad:
configstorecli config current update -c esx -g network_vss -k switches -infile /vmfs/volumes/DatastoreName/netconfig.json
Tak snad Vám to do budoucna pomůže, pokud budete někdy hledat problémy v konfiguracích a následně se je snažit opravit.