{"id":539,"date":"2021-01-23T09:39:47","date_gmt":"2021-01-23T08:39:47","guid":{"rendered":"https:\/\/nine30.info\/?p=539"},"modified":"2021-01-23T09:39:47","modified_gmt":"2021-01-23T08:39:47","slug":"vra-config-aka-saltstack-architecture","status":"publish","type":"post","link":"https:\/\/nine30.nxt70.com\/index.php\/2021\/01\/23\/vra-config-aka-saltstack-architecture\/","title":{"rendered":"vRA SaltStack Config &#8211; Architecture"},"content":{"rendered":"\n<p>In October 2020 VMware acquired SaltStack that is the company behind Salt: a leading open source project on GitHub with 3K+ members, 10K+ users. The model adopted by SaltStack was based on building adjacent products to the Salt OSS, they provided 3 commercial offerings around Salt: SaltStack Enterprise, SaltStack Comply and SaltStack Protect covering three key use cases: SW Config Management, Network Automation (NetAuto) and Security Operations (SecOps). This commercial offerings is now merged into VMware vRealize Automation with the name vRealize Automation (vRA) SaltStack Config.<\/p>\n\n\n\n<p>But I am not here to talk about merger &amp; acquisition, this is the first entry of a series of posts aimed to share my adventure with vRA SaltStack Config and Salt with anyone interested. This issue is about Salt OSS and vRA SaltStack Config architecture. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Salt OSS Architecture<\/h2>\n\n\n\n<p>Salt uses a publisher-subscriber model. The master publishes jobs that need to be executed and minions subscribe to those jobs. When a specific job applies to that minion, it will execute the job. In the Salt ecosystem, the Salt Master is a server that is running the&nbsp;<code>salt-master<\/code>&nbsp;service. It issues commands to one or more Salt Minions, which are servers under management running the&nbsp;<code>salt-minion<\/code>&nbsp;service and that are registered with that particular Salt Master. When a minion finishes executing a job, it sends job return data back to the master.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-id=\"546\" src=\"https:\/\/nine30.info\/wp-content\/uploads\/2021\/01\/1.salt-oss-architecture-2.jpg\" alt=\"\" class=\"wp-image-546\"\/><\/figure>\n<\/figure>\n\n\n\n<p>Salt has two ports used by default for the Minions to communicate with their master(s). These ports work in concert to receive and deliver data to the Message Bus. Salt\u2019s message bus is <a rel=\"noreferrer noopener\" href=\"https:\/\/zeromq.org\/\" target=\"_blank\">ZeroMQ<\/a>, which creates an asynchronous network topology to provide the fastest communication possible. <strong>Minions always initiates the connection to the Masters<\/strong>, they communicate to master&#8217;s default on ports 4505 and 4506 and these ports can be modified through configuration.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-id=\"545\" src=\"https:\/\/nine30.info\/wp-content\/uploads\/2021\/01\/2.salt-oss-ports-1.png\" alt=\"\" class=\"wp-image-545\"\/><\/figure>\n<\/figure>\n\n\n\n<p>In addition of having the&nbsp;<code>salt-minion<\/code>&nbsp;service on the managed machines, Minions can be agentless managed through SSH\/WinRM protocols and managed through a Proxy Agent.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-id=\"553\" src=\"https:\/\/nine30.info\/wp-content\/uploads\/2021\/01\/4.salt-flexible.jpg\" alt=\"\" class=\"wp-image-553\"\/><\/figure>\n<\/figure>\n\n\n\n<p>Salt OSS can be installed on a variety of operating systems and yes, it supports Windows Minions. <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.saltproject.io\/en\/latest\/topics\/installation\/index.html#platform-specific-installation-instructions\" target=\"_blank\">Here<\/a> you can find the list of supported platforms.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vRA SaltStack Config Architecture<\/h2>\n\n\n\n<p>vRA SaltStack Config is made up of the components in the list below:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>RaaS (Returner as a Service)<\/strong>: it is the central component in vRA SaltStack Config. It provides RPC endpoints to receive management commands from the vRA SaltStack Config user interface, as well as RPC control endpoints to interface with connected masters. All communication is sent using RPC API calls over WebSockets or HTTP(s).<\/li><li><strong>Enterprise Console<\/strong>: is a web application that provides the graphical user interface front end for RaaS. Though vRA SaltStack Config is API-first, the user interface interfaces directly with the API (RaaS) to enable simple management of all systems in your environment. The great news for VMware customers is that the UI is already based on our beloved <a rel=\"noreferrer noopener\" href=\"https:\/\/clarity.design\/\" target=\"_blank\">Clarity<\/a>.<\/li><li><strong>PostgreSQL Database<\/strong>: RaaS uses a PostgreSQL database to store minion data, job returns, event data, files and pillar data, local user accounts, as well as additional settings for the user interface.<\/li><li><strong>Redis Database<\/strong>: RaaS uses a Redis database to store certain types of data in temporary storage, such as cached data. It also uses temporary data storage to distribute queued work to background workers.<\/li><li><strong>Master Plugin<\/strong>: You can connect more than one Salt Master to vRA SaltStack Config. Each Master that connects to vRA SaltStack Config needs to have the Master Plugin installed. It allows the Master to communicate with the vRA SaltStack Config backend server, the RaaS node. <\/li><\/ul>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-id=\"548\" src=\"https:\/\/nine30.info\/wp-content\/uploads\/2021\/01\/3.vra-config-architecture-scaled.jpg\" alt=\"\" class=\"wp-image-548\"\/><\/figure>\n<\/figure>\n\n\n\n<p>In small\/evaluation environments (less than 1000 Minions) all vRA SaltStack Config components can be installed on a single server (single-node installation scenario), while in large\/productive environments they can be distributed on multiple servers (multiple-nodes installation scenario). The following table shows the network connectivity requirements.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-d0b3c9c8 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"--col-width:100%;flex-basis:100%\">\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>Target<\/strong><\/td><td><strong>Port<\/strong><\/td><td><strong>Source<\/strong><\/td><td><strong>Purpose<\/strong><\/td><\/tr><tr><td>vRA Config Server<\/td><td>22,443<\/td><td>Users<\/td><td>SSH, UI Access<\/td><\/tr><tr><td>Master<\/td><td>22<\/td><td>Administrators<\/td><td>SSH Access<\/td><\/tr><tr><td>vRA Config Server<\/td><td>443<\/td><td>Master<\/td><td>Info Exchange<\/td><\/tr><tr><td>vRA Config, Master<\/td><td>4505, 4506<\/td><td>Minions<\/td><td>ZeroMQ<\/td><\/tr><tr><td>repo.saltstack.com<\/td><td>443<\/td><td>All Servers<\/td><td>Access to repo of packages for<br>installation<\/td><\/tr><tr><td>training.saltstack.com<\/td><td>443<\/td><td>vRA Config, Master<\/td><td>Location of downloadable installation media for vRA Config<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Supported Operating Systems for vRA SaltStack Config are:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>RHEL 7.4 or higher (recommended)<\/li><li>CentOS 7 (recommended)<\/li><li>Oracle Linux 7<\/li><li>SLES 12, 15<\/li><\/ul>\n\n\n\n<p>You can find capacity requirements (CPU, Memory and Disk Space) for both single-node and multiple-node installations in <a rel=\"noreferrer noopener\" href=\"https:\/\/enterprise.saltstack.com\/en\/latest\/docs\/pre-installation.html\" target=\"_blank\">this<\/a> section of the documentation.<\/p>\n\n\n\n<p>To wrap up: Salt architecture is super simple and super scalable (and people love it). vRA SaltStack Config architecture is sound and lays its foundation on proven open source bits. In the next post I&#8217;ll go through the installation process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In October 2020 VMware acquired SaltStack that is the company behind Salt: a leading open source project on GitHub with 3K+ members, 10K+ users. The model adopted by SaltStack was based on building adjacent products to the Salt OSS, they provided 3 commercial offerings around Salt: SaltStack Enterprise, SaltStack Comply and SaltStack Protect covering three&hellip; <a class=\"more-link\" href=\"https:\/\/nine30.nxt70.com\/index.php\/2021\/01\/23\/vra-config-aka-saltstack-architecture\/\">Continue reading <span class=\"screen-reader-text\">vRA SaltStack Config &#8211; Architecture<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":215,"comment_status":"open","ping_status":"open","sticky":false,"template":"templates\/template-cover.php","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[17,23,40,53,54,88,99,122,126,143,145,178,185,186],"class_list":["post-539","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-architecture","tag-automation","tag-configuration","tag-deployment","tag-design","tag-iac","tag-linux","tag-opensource","tag-oss","tag-salt","tag-saltstack","tag-vmware","tag-vrealize","tag-vrealizeautomation","entry"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/posts\/539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/comments?post=539"}],"version-history":[{"count":0,"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/posts\/539\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/media?parent=539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/categories?post=539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nine30.nxt70.com\/index.php\/wp-json\/wp\/v2\/tags?post=539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}