{"id":1414,"date":"2023-02-21T10:27:15","date_gmt":"2023-02-21T09:27:15","guid":{"rendered":"https:\/\/virtualguru.cz\/?p=1414"},"modified":"2024-11-27T17:08:09","modified_gmt":"2024-11-27T16:08:09","slug":"configstore-cli","status":"publish","type":"post","link":"https:\/\/virtualguru.cz\/en\/2023\/02\/21\/configstore-cli\/","title":{"rendered":"Configstore CLI"},"content":{"rendered":"<p>Tak jsem se musel pustit do hloubkov\u00e9 &#8222;kontroly&#8220; ESX hosta verze 8. Jeliko\u017e jsem p\u0159ipravoval Lab na \u0161kolen\u00ed vSphere Whats New 8, tak jsem si pomohl vyklonov\u00e1n\u00edm nainstalovan\u00fdch nested host\u016f. Probl\u00e9m nastal s n\u011bkter\u00fdmi konfiguracemi, kter\u00e9 byly stejn\u00e9, resp. stejn\u011b \u0161patn\u00e9. V grafice to vid\u011bt nebylo, ale kdy\u017e jsem zkou\u0161el pou\u017e\u00edt novinku ve verzi 8, co\u017e je Cluster Desired State Configuration, projevilo se to. Je to d\u00e1no t\u00edm, \u017ee konfigurace ji\u017e nejsou ulo\u017eeny v pouh\u00fdch souborech (\/etc\/vmware\/esx.conf), ale od verze 7.0U2 jsou ulo\u017eeny v ConfigStore viz. <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere\/7.0\/rn\/vsphere-esxi-702-release-notes.html\">vSphere Release notes<\/a>.<\/p>\n<p>Probl\u00e9m nast\u00e1v\u00e1, pokud chcete n\u011bco z toho zm\u011bnit. Nen\u00ed to nemo\u017en\u00e9, akor\u00e1t to chce trochu upravit syst\u00e9m my\u0161len\u00ed a p\u0159ej\u00edt z klasick\u00e9ho Linuxov\u00e9ho, kdy ve\u0161ker\u00e9 konfigurace jsou v souborech, do &#8222;program\u00e1torsk\u00e9ho&#8220; kdy se upravuj\u00ed konfigurace p\u0159es API a JSON.<!--more--><\/p>\n<p>Klasick\u00fd p\u0159\u00edstup p\u0159es esxcli tuto zm\u011bnu reflektuje, ale jsou n\u011bkter\u00e9 v\u011bci, kter\u00e9 i tak p\u0159es ESXCLI vid\u011bt nejsou. Konkr\u00e9tn\u00ed p\u0159\u00edklad, kter\u00fd mne potkal, se t\u00fdkal ulo\u017een\u00e9 konfigurace standardn\u00edch switch\u016f a jejich vazby na fyzick\u00e9 uplinky. Pokud ale ty uplinky v serveru u\u017e neexistovaly, tak ESXCLI je nezobrazovalo. Pokud jsem se ale pod\u00edval do ConfigStore, tak tam st\u00e1le je\u0161t\u011b byly zm\u00edn\u011bny a pak to d\u011blalo probl\u00e9my.<\/p>\n<p>Jak toto vy\u0159e\u0161it? William Lam u\u017e o tom napsal nejeden <a href=\"https:\/\/williamlam.com\/2021\/07\/introduction-to-the-new-esxi-configuration-store-cli-configstorecli.html\">blogpost<\/a>. Stejn\u011b tak i Duncan Epping <a href=\"https:\/\/www.yellow-bricks.com\/2021\/06\/14\/how-do-i-change-the-name-of-a-vswitch-with-vsphere-7-0-u2-and-higher\/\">zde<\/a>. Poj\u010fme se ale pod\u00edvat na konkr\u00e9tn\u00ed p\u0159\u00edklad a proj\u00edt si, jak to po\u0159e\u0161it.<\/p>\n<p>Nejprve se mus\u00edme pod\u00edvat na strukturu ConfigStore. Ten je rozd\u011blen na sekce CurrentConfig, DesiredState, Default.<\/p>\n<p>Jedin\u00e1 \u010d\u00e1st, ve kter\u00e9 m\u016f\u017eete d\u011blat zm\u011bny je current.<\/p>\n<p>Pro p\u0159\u00edstup do configStore je p\u0159\u00edmo na ESXi hostu p\u0159\u00edkaz <strong>configstorecli<\/strong><\/p>\n<p>Nejprve je t\u0159eba pochopit jak se s p\u0159\u00edkazem configstorecli pracuje. Nejjednodu\u0161\u0161\u00ed je pou\u017e\u00edt n\u00e1pov\u011bdu za ka\u017edou \u010d\u00e1st\u00ed p\u0159\u00edkazu &#8222;-h&#8220; nebo &#8222;&#8211;help&#8220;<\/p>\n<p><a href=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1722.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1417\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1722-300x66.png\" alt=\"\" width=\"300\" height=\"66\" srcset=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1722-300x66.png 300w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1722-768x169.png 768w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1722.png 934w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1418\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723-300x83.png\" alt=\"\" width=\"300\" height=\"83\" srcset=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723-300x83.png 300w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723-1024x282.png 1024w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723-768x211.png 768w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723-1536x422.png 1536w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1723.png 1589w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Jak je vid\u011bt ze screenshotu, tak pro konfiguraci m\u00e1me mo\u017enost pou\u017e\u00edt &#8222;get&#8220;,&#8220;set&#8220;,&#8220;update&#8220;,&#8220;delete&#8220;.<\/p>\n<p>Rozd\u00edl mezi Update a Set je zejm\u00e9na v nevyjmenovan\u00fdch \u010d\u00e1stech konfigurac\u00ed. Pokud pou\u017eiji Update, tak nevyjmenovan\u00e9 \u010d\u00e1sti se nezm\u011bn\u00ed, pokud Set, tak se sma\u017eou, resp p\u0159evedou do n\u011bjak\u00e9ho default nastaven\u00ed.<\/p>\n<p>Pro v\u0161echny ale pot\u0159ebujeme zn\u00e1t konkr\u00e9tn\u00ed \u010d\u00e1st (adresu) kterou budeme cht\u00edt upravovat, m\u011bnit, vytv\u00e1\u0159et apod. Toto n\u00e1m umo\u017en\u00ed adresace pomoc\u00ed -c (component) -g (group) a -k (key). Zjistit to nejjednodu\u0161eji m\u016f\u017eeme pomoc\u00ed v\u00fdpisu sch\u00e9matu. Op\u011bt pomoc\u00ed configstorecli.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">configstorecli schema list<\/pre>\n<p>Je\u0161t\u011b l\u00e9pe<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">configstorecli schema list &gt; \/vmfs\/volumes\/DatastoreName\/configstore-schema.json<\/pre>\n<p>Proto\u017ee pak si m\u016f\u017eete vygenerovan\u00fd JSON soubor st\u00e1hnout z datastore a zobrazit si jej v lok\u00e1ln\u00edm textov\u00e9m editoru, kter\u00fd um\u00ed i zv\u00fdraz\u0148ov\u00e1n\u00ed JSON syntaxe.<\/p>\n<p><a href=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1724.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1419\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1724-256x300.png\" alt=\"\" width=\"256\" height=\"300\" srcset=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1724-256x300.png 256w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1724.png 670w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a><\/p>\n<p>Kdy\u017e u\u017e v\u00edme, jak m\u00e1me adresovat jednotliv\u00e9 konfigurace, tak si je m\u016f\u017eeme nechat vypsat.<\/p>\n<p>Nap\u0159\u00edklad:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">configstorecli config current get -c esx -g network_vss -k switches &gt; \/vmfs\/volumes\/DatastoreName\/netconfig.json<\/pre>\n<p><a href=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1726.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1420\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1726-300x269.png\" alt=\"\" width=\"300\" height=\"269\" srcset=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1726-300x269.png 300w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1726-768x687.png 768w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1726.png 820w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Pokud bychom v tom cht\u011bli d\u011blat n\u011bjak\u00e9 zm\u011bny, tak samoz\u0159ejm\u011b op\u011bt p\u0159esm\u011brovat v\u00fdstup do souboru a ten upravovat.<\/p>\n<p>Jedna z v\u011bc\u00ed, na kter\u00e9 je t\u0159eba si d\u00e1t pozor, aby na konci \u0159\u00e1dku nebyly zbyte\u010dn\u00e9 \u010d\u00e1rky, pokud nen\u00e1sleduje dal\u0161\u00ed polo\u017eka, a aby soubor neza\u010d\u00ednal a nekon\u010dil symboly &#8222;[&#8222;, &#8222;]&#8220; pokud na vstupu nen\u00ed konfigurace pole objekt\u016f.<\/p>\n<p>P\u0159\u00edklad souboru k \u00faprav\u011b:<\/p>\n<p><a href=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1728.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1423\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1728-253x300.png\" alt=\"\" width=\"253\" height=\"300\" srcset=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1728-253x300.png 253w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1728.png 749w\" sizes=\"auto, (max-width: 253px) 100vw, 253px\" \/><\/a><\/p>\n<p>Jakmile m\u00e1me upraveno, tak pot\u0159ebujeme tuto konfiguraci nahr\u00e1t do ESXi hosta. K tomu n\u00e1m op\u011bt poslou\u017e\u00ed configstorecli, tentokr\u00e1t s p\u0159\u00edkazem &#8222;set&#8220;, nebo &#8222;update&#8220;. Rozd\u00edl viz v\u00fd\u0161e.<\/p>\n<p>P\u0159\u00edklad:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">configstorecli config current set -c esx -g network_vss -k switches -infile \/vmfs\/volumes\/DatastoreName\/netconfig.json<\/pre>\n<p><a href=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1727.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1421\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1727-300x10.png\" alt=\"\" width=\"300\" height=\"10\" srcset=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1727-300x10.png 300w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1727-1024x33.png 1024w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1727-768x25.png 768w, https:\/\/virtualguru.cz\/wp-content\/uploads\/2023\/02\/obrazek-1727.png 1296w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Tak snad V\u00e1m to do budoucna pom\u016f\u017ee, pokud budete n\u011bkdy hledat probl\u00e9my v konfigurac\u00edch a n\u00e1sledn\u011b se je sna\u017eit opravit.<\/p>","protected":false},"excerpt":{"rendered":"<p>Tak jsem se musel pustit do hloubkov\u00e9 &#8222;kontroly&#8220; ESX hosta verze 8. Jeliko\u017e jsem p\u0159ipravoval Lab na \u0161kolen\u00ed vSphere Whats New 8, tak jsem si<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/virtualguru.cz\/en\/2023\/02\/21\/configstore-cli\/\">Continue Reading<span class=\"screen-reader-text\">Configstore CLI<\/span> <i class=\"fas fa-angle-right\"><\/i><\/a><\/div>","protected":false},"author":4,"featured_media":1417,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"iawp_total_views":14,"footnotes":""},"categories":[18,3],"tags":[47,58,32,6,11,9],"class_list":["post-1414","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatizace","category-vsphere","tag-api","tag-configstore","tag-esxcli","tag-esxi","tag-troubleshooting","tag-vsphere","entry"],"_links":{"self":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts\/1414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/comments?post=1414"}],"version-history":[{"count":12,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts\/1414\/revisions"}],"predecessor-version":[{"id":1658,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts\/1414\/revisions\/1658"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/media\/1417"}],"wp:attachment":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/media?parent=1414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/categories?post=1414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/tags?post=1414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}