{"id":915,"date":"2022-02-10T18:42:18","date_gmt":"2022-02-10T17:42:18","guid":{"rendered":"http:\/\/thomas-kopton.de\/vblog\/?p=915"},"modified":"2022-02-10T19:28:22","modified_gmt":"2022-02-10T18:28:22","slug":"salt-extension-modules-for-vmware-quick-how-to","status":"publish","type":"post","link":"https:\/\/thomas-kopton.de\/vblog\/?p=915","title":{"rendered":"Salt Extension Modules for VMware &#8211; Quick How-To"},"content":{"rendered":"\n<p id=\"my-fellow-colleague-vincent-riccio-described-here-in-his-blog-post-the-open-source-saltstack-modules-that-provide-hooks-into-components-such-as-vmware-cloud-on-aws-nsx-t-and-vsphere-these-modules-are-a-fantastic-way-to-implement-configuration-management-and-more-a\">My fellow colleague Vincent Riccio described<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\"> <a href=\"https:\/\/blogs.vmware.com\/management\/2021\/10\/introducing-saltstack-sddc-modules.html\">here<\/a> <\/mark>in his blog post the open-source <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">SaltStack<\/mark> Modules that provide hooks into components such as <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">VMware Cloud on AWS<\/mark>, <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">NSX-T<\/mark>, and <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">vSphere<\/mark>.<br>These modules are a fantastic way to implement prescriptive configuration management across various VMware infrastructure components using the same solution as you should use for software and configuration management of your operating systems and applications &#8211;<a href=\"https:\/\/www.vmware.com\/products\/vrealize-automation\/saltstack-config.html\"> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">vRealize Automation SaltStack Config<\/mark><\/a>.<\/p>\n\n\n\n<p>In this blog post, I will show you how easy it is to install and use the Salt Extension Modules for VMware using the vSphere vCenter module as an example.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"pre-requisites\">Pre-Requisites<\/h4>\n\n\n\n<p>I have modified the following <a href=\"https:\/\/docs.saltproject.io\/salt\/extensions\/salt-ext-modules-vmware\/en\/latest\/quickstart.html#quickstart\">Quickstart<\/a> to fit into my SaltStack setup.<\/p>\n\n\n\n<p>The components running in my lab for this quick demo are:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>vRealize Automation SaltStack Config instance<\/li><li>SaltStack minion on a Linux VM<\/li><\/ul>\n\n\n\n<p>The next picture shows my Salt minion running in a CentOS 8 Linux. This minion will be the dedicated minion I will use to execute the VMware modules.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"285\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01-1024x285.png\" alt=\"\" class=\"wp-image-926\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01-1024x285.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01-300x84.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01-768x214.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01-1536x428.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure01-2048x570.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 1: Salt minion for the extension modules.<\/em><\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"configuration-steps\">Configuration Steps<\/h4>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 1:<\/mark><\/strong> We need to provide basic information to let SaltStack connect to the vCenter Server. Usually, we use Salt pillars to specify such configuration variables. In the next picture, you see the pillar I have created for my vCenter instance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure02.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure02.png\" alt=\"\" class=\"wp-image-935\" width=\"465\" height=\"271\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure02.png 930w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure02-300x175.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure02-768x448.png 768w\" sizes=\"auto, (max-width: 465px) 100vw, 465px\" \/><\/a><figcaption><em>Figure 2: Salt pillar containg vCenter login information.<\/em><\/figcaption><\/figure>\n\n\n\n<p>Please be aware that the user name is case sensitive.<\/p>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 2:<\/mark><\/strong> Update the target, in my use case the dedicated minion, to include the data in this pillar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure03.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure03-1024x916.png\" alt=\"\" class=\"wp-image-938\" width=\"512\" height=\"458\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure03-1024x916.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure03-300x268.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure03-768x687.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure03.png 1120w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><figcaption><em>Figure 3: Updating the target with the pillar data.<\/em><\/figcaption><\/figure>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 3:<\/mark><\/strong> With the following command executed on the target Salt minion we can check if the pillar has been applied and the minion has all the needed information.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@tk-lin-131 ~]# salt-call pillar.items\nlocal:\n    ----------\n    vmware_config:\n        ----------\n        host:\n            vc-demo.xxx.xxx\n        password:\n            xxxxxxx\n        user:\n            Administrator@demo.local<\/pre>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 4:<\/mark><\/strong> Install the Salt Extension Modules for VMware on the minion with the following command as described in the <a href=\"https:\/\/docs.saltproject.io\/salt\/extensions\/salt-ext-modules-vmware\/en\/latest\/quickstart.html#quickstart\">Quickstart<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ salt-call pip.install saltext.vmware<\/pre>\n\n\n\n<p>In case you receive an error pointing to an outdated pip version, simply run pip upgrade on the minion:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python3 -m pip install --upgrade pip<\/pre>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 5:<\/mark><\/strong> Check if the modules are available on your minion (the output is truncated to display only the relevant modules):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@tk-lin-131 ~]# salt-call --local sys.list_modules\nlocal:\n    - nsxt_compute_manager\n    - nsxt_ip_blocks\n    - nsxt_ip_pools\n    - nsxt_license\n    - nsxt_manager\n    - nsxt_policy_segment\n    - nsxt_policy_tier0\n    - nsxt_policy_tier1\n    - nsxt_transport_node\n    - nsxt_transport_node_profiles\n    - nsxt_transport_zone\n    - nsxt_uplink_profiles\n    - vmc_dhcp_profiles\n    - vmc_direct_connect\n    - vmc_distributed_firewall_rules\n    - vmc_dns_forwarder\n    - vmc_nat_rules\n    - vmc_networks\n    - vmc_public_ip\n    - vmc_sddc\n    - vmc_sddc_host\n    - vmc_security_groups\n    - vmc_security_rules\n    - vmc_vpn_statistics\n    - vmware_cluster\n    - vmware_cluster_drs\n    - vmware_cluster_ha\n    - vmware_datacenter\n    - vmware_datastore\n    - vmware_dvswitch\n    - vmware_esxi\n    - vmware_folder\n    - vmware_license_mgr\n    - vmware_tag\n    - vmware_vm<\/pre>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 6:<\/mark> <\/strong>Check if the minion is successfully connecting to the vCenter specified in the pillar and if the modules are working as expected (output truncated for visibility):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@tk-lin-131 ~\n]# salt-call vmware_datacenter.list\nlocal:\n    - Demo-Datacenter\n[root@tk-lin-131 ~\n]# salt-call vmware_cluster.get cluster_name=HP-Cluster datacenter_name=Demo-Datacenter\nlocal:\n    ----------\n    drs:\n        ----------\n        advanced_settings:\n            ----------\n        default_vm_behavior:\n            fullyAutomated\n        enable_vm_behavior_overrides:\n            True\n        enabled:\n            True\n        vmotion_rate: 3\n    drs_enabled:\n        True <\/pre>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 7:<\/mark><\/strong> Now we can start creating Salt state files which will be integral and prescriptive part of our configuration management.<\/p>\n\n\n\n<p>The following state file is just a very simple example. It configures few security settings on all my ESXi hosts in the vCenter we have specified in the pillar in step 1.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">set_sec_config_max_days:\n  module.run:\n    - name: vmware_esxi.get_advanced_config\n    - config_name: Security.PasswordMaxDays\n    - config_value: 99998\n\nset_sec_config_unlock_time:\n  module.run:\n    - name: vmware_esxi.get_advanced_config\n    - config_name: Security.AccountUnlockTime\n    - config_value: 899<\/pre>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 8:<\/mark><\/strong> We can apply this state file to our dedicated minion using e.g. a Salt job as shown in the next picture.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04-1024x926.png\" alt=\"\" class=\"wp-image-955\" width=\"512\" height=\"463\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04-1024x926.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04-300x271.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04-768x695.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04-1536x1389.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure04.png 1652w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><figcaption><em>Figure 4: Applying the state file as Salt job.<\/em><\/figcaption><\/figure>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Step 9:<\/mark><\/strong><\/mark><\/strong> In the last step we can finally check the outcome. We can use the corresponding get command on our minion or just review the settings in vCenter.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@tk-lin-131 ~]# salt-call vmware_esxi.get_advanced_config config_name=Security\nlocal:\n    ----------\n    hp-demo01.xxx.yyy:\n        ----------\n        Security.AccountLockFailures:\n            5\n        Security.AccountUnlockTime:\n            <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>899<\/strong><\/mark>\n        Security.PasswordHistory:\n            0\n        Security.PasswordMaxDays:\n            <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>99998<\/strong><\/mark>\n        Security.PasswordQualityControl:\n            retry=3 min=disabled,disabled,disabled,7,7<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure05.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure05-1024x558.png\" alt=\"\" class=\"wp-image-957\" width=\"768\" height=\"419\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure05-1024x558.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure05-300x163.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure05-768x418.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure05.png 1458w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption><em>Figure 5: Advanced configuration of an ESXi host in vCenter.<\/em><\/figcaption><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"some-final-notes\">Some final notes<\/h5>\n\n\n\n<p>Please note that after changing the state file it may take Salt a few seconds to reflect that change in the virtual file system. If you run a Salt job immediately after changing the state file, Salt may use the &#8220;old version&#8221;.<\/p>\n\n\n\n<p>In my example, I have used an execution module. Usually, you would use a state module to check a setting and only apply a configuration if there is a deviation. At the moment of writing this post, the ESXi state module does not support checking Advanced Configuration. Since this is an Open Source module anyone can try to implement it:-)<\/p>\n\n\n\n<p><strong><span style=\"color:#0579ab\" class=\"has-inline-color\">Stay safe<\/span><\/strong><\/p>\n\n\n\n<p>Thomas \u2013&nbsp;<a href=\"https:\/\/twitter.com\/ThomasKopton\">https:\/\/twitter.com\/<\/a><a href=\"https:\/\/twitter.com\/ThomasKopton\" data-type=\"URL\" data-id=\"https:\/\/twitter.com\/ThomasKopton\">ThomasKopton<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>My fellow colleague Vincent Riccio described here in his blog post the open-source SaltStack Modules that provide hooks into components such as VMware Cloud on AWS, NSX-T, and vSphere.These modules are a fantastic way to implement prescriptive configuration management across various VMware infrastructure components using the same solution as you should use for software and &#8230;<\/p>\n","protected":false},"author":1,"featured_media":961,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[54,55],"class_list":["post-915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-saltstack","tag-salt","tag-saltstack"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Salt Extension Modules for VMware - Quick How-To - TOMsOps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thomas-kopton.de\/vblog\/?p=915\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Salt Extension Modules for VMware - Quick How-To - TOMsOps\" \/>\n<meta property=\"og:description\" content=\"My fellow colleague Vincent Riccio described here in his blog post the open-source SaltStack Modules that provide hooks into components such as VMware Cloud on AWS, NSX-T, and vSphere.These modules are a fantastic way to implement prescriptive configuration management across various VMware infrastructure components using the same solution as you should use for software and ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomas-kopton.de\/vblog\/?p=915\" \/>\n<meta property=\"og:site_name\" content=\"TOMsOps\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-10T17:42:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-10T18:28:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1912\" \/>\n\t<meta property=\"og:image:height\" content=\"740\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thomas Kopton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Kopton\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#article\",\"isPartOf\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915\"},\"author\":{\"name\":\"Thomas Kopton\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"headline\":\"Salt Extension Modules for VMware &#8211; Quick How-To\",\"datePublished\":\"2022-02-10T17:42:18+00:00\",\"dateModified\":\"2022-02-10T18:28:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915\"},\"wordCount\":608,\"commentCount\":1,\"image\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png\",\"keywords\":[\"salt\",\"saltstack\"],\"articleSection\":[\"SaltStack\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/thomas-kopton.de\/vblog\/?p=915#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915\",\"name\":\"Salt Extension Modules for VMware - Quick How-To - TOMsOps\",\"isPartOf\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png\",\"datePublished\":\"2022-02-10T17:42:18+00:00\",\"dateModified\":\"2022-02-10T18:28:22+00:00\",\"author\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"breadcrumb\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thomas-kopton.de\/vblog\/?p=915\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png\",\"contentUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png\",\"width\":1912,\"height\":740},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=915#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/thomas-kopton.de\/vblog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Salt Extension Modules for VMware &#8211; Quick How-To\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#website\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/\",\"name\":\"TOMsOps\",\"description\":\"Just another VMware Cloud Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\",\"name\":\"Thomas Kopton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"caption\":\"Thomas Kopton\"},\"url\":\"https:\/\/thomas-kopton.de\/vblog\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Salt Extension Modules for VMware - Quick How-To - TOMsOps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thomas-kopton.de\/vblog\/?p=915","og_locale":"en_US","og_type":"article","og_title":"Salt Extension Modules for VMware - Quick How-To - TOMsOps","og_description":"My fellow colleague Vincent Riccio described here in his blog post the open-source SaltStack Modules that provide hooks into components such as VMware Cloud on AWS, NSX-T, and vSphere.These modules are a fantastic way to implement prescriptive configuration management across various VMware infrastructure components using the same solution as you should use for software and ...","og_url":"https:\/\/thomas-kopton.de\/vblog\/?p=915","og_site_name":"TOMsOps","article_published_time":"2022-02-10T17:42:18+00:00","article_modified_time":"2022-02-10T18:28:22+00:00","og_image":[{"width":1912,"height":740,"url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png","type":"image\/png"}],"author":"Thomas Kopton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Kopton","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#article","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915"},"author":{"name":"Thomas Kopton","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"headline":"Salt Extension Modules for VMware &#8211; Quick How-To","datePublished":"2022-02-10T17:42:18+00:00","dateModified":"2022-02-10T18:28:22+00:00","mainEntityOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915"},"wordCount":608,"commentCount":1,"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png","keywords":["salt","saltstack"],"articleSection":["SaltStack"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomas-kopton.de\/vblog\/?p=915#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915","url":"https:\/\/thomas-kopton.de\/vblog\/?p=915","name":"Salt Extension Modules for VMware - Quick How-To - TOMsOps","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage"},"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png","datePublished":"2022-02-10T17:42:18+00:00","dateModified":"2022-02-10T18:28:22+00:00","author":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"breadcrumb":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomas-kopton.de\/vblog\/?p=915"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#primaryimage","url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png","contentUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2022\/02\/figure06.png","width":1912,"height":740},{"@type":"BreadcrumbList","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=915#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomas-kopton.de\/vblog"},{"@type":"ListItem","position":2,"name":"Salt Extension Modules for VMware &#8211; Quick How-To"}]},{"@type":"WebSite","@id":"https:\/\/thomas-kopton.de\/vblog\/#website","url":"https:\/\/thomas-kopton.de\/vblog\/","name":"TOMsOps","description":"Just another VMware Cloud Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82","name":"Thomas Kopton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","caption":"Thomas Kopton"},"url":"https:\/\/thomas-kopton.de\/vblog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=915"}],"version-history":[{"count":40,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/915\/revisions"}],"predecessor-version":[{"id":963,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/915\/revisions\/963"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/media\/961"}],"wp:attachment":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}