{"id":414,"date":"2020-09-05T19:58:44","date_gmt":"2020-09-05T18:58:44","guid":{"rendered":"http:\/\/thomas-kopton.de\/vblog\/?p=414"},"modified":"2021-04-04T16:10:24","modified_gmt":"2021-04-04T15:10:24","slug":"self-healing-with-vrealize-operations-and-vrealize-orchestrator","status":"publish","type":"post","link":"https:\/\/thomas-kopton.de\/vblog\/?p=414","title":{"rendered":"Self-Healing with vRealize Operations and vRealize Orchestrator"},"content":{"rendered":"\n<p>The <strong><span style=\"color:#1488cb\" class=\"has-inline-color\">vRealize Operations Management Pack for vRealize Orchestrator<\/span> <\/strong>provides the ability to execute vRO workflows as part of the alerting and remediation process in vROps.<\/p>\n\n\n\n<p>The vRO workflows can be executed manually or automatically.<\/p>\n\n\n\n<p>With this solution it is easy to implement sophisticated <strong><span style=\"color:#1488cb\" class=\"has-inline-color\">self-healing workflows<\/span><\/strong> for your vROps managed environment.<\/p>\n\n\n\n<p>In this blog post I will show you step by step how to get from a use case to auto-remediation with vRealize Operations and vRealize Orchestrator Management Pack.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Infrastructure Components<\/h3>\n\n\n\n<p>To start with your own self-healing capabilities, you will need:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><span style=\"color:#1488cb\" class=\"has-inline-color\">vRealize Orchestrator<\/span><\/strong> instance. You can use a stand alone vRealize Orchestrator or the vRO instance deployed as part of the vRealize Automation deployment. For this post I am using the vRA internal vRO 8.1.<\/li><li><span style=\"color:#1488cb\" class=\"has-inline-color\"><strong>vRealize Operations<\/strong>,<\/span> for this post I am using vROps 8.1.1<\/li><li><strong><span style=\"color:#1488cb\" class=\"has-inline-color\">vRealize Operations Management Pack for vRealize Orchestrator <\/span><\/strong>installed and configured.  I am using the latest version 3.1.1 which can be downloaded from the VMware Solution Exchange for free:<\/li><\/ul>\n\n\n\n<p><a href=\"https:\/\/marketplace.vmware.com\/vsx\/solutions\/management-pack-for-vrealize-orchestrator\">https:\/\/marketplace.vmware.com\/vsx\/solutions\/management-pack-for-<\/a><a href=\"https:\/\/marketplace.vmware.com\/vsx\/solutions\/management-pack-for-vrealize-orchestrator\" target=\"_blank\" rel=\"noreferrer noopener\">vrealize-orchestrator<\/a><\/p>\n\n\n\n<p>In this post I am not describing the actual installation and initial configuration of the MP. The process is straight forward and described in the official documentation:<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.vmware.com\/en\/Management-Packs-for-vRealize-Operations-Manager\/3.1.1\/vrealize-orchestrator\/GUID-0096BB63-D347-4777-AAC2-CE0119A53B95.html\" target=\"_blank\">https:\/\/docs.vmware.com\/en\/Management-Packs-for-vRealize-Operations-Manager\/3.1.1\/vrealize-orchestrator\/GUID-0096BB63-D347-4777-AAC2-CE0119A53B95.html<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use case<\/h3>\n\n\n\n<p>The story begins with a use case. Since I am focusing on the actual generic procedure my use case is very simple and there are for sure already other ways to remediate the issue.<\/p>\n\n\n\n<p>My use case is:<\/p>\n\n\n\n<p><span class=\"has-inline-color has-vivid-cyan-blue-color\"><strong>&#8220;If a VM (the OS) crashes I will reset that VM in vCenter&#8221;<\/strong><\/span><\/p>\n\n\n\n<p>As \u201cseems to be crashed\u201d or the exact description how to determine if a VM really crashed is not object of this post. We assume we have appropriate symptom and alert definitions in place.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Generic Recipe<\/h3>\n\n\n\n<p>The procedure from use case to auto-remediation is always the same:<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li><strong>Create a vRO workflow for your use case<\/strong><\/li><li><strong>Create or modify a vRO package<\/strong><\/li><li><strong>Discover or re-discover vRO package and included workflows in vROps<\/strong><\/li><li><strong>Optional &#8211; Configure workflow in vROps &#8211; in our case it is mandatory<\/strong><\/li><li><strong>Create or edit vROps recommendation<\/strong><\/li><li><strong>Add vROps recommendation to an alert definition<\/strong><\/li><li><strong>Optional \u2013 Manual remediation<\/strong><\/li><li><strong>Optional &#8211; Enable automatic remediation<\/strong><\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Create Workflow<\/h3>\n\n\n\n<p>I am not going to describe the content of the workflow itself or how to code in vRO in this post.<\/p>\n\n\n\n<p>The focus is how to integrate any given workflow in vROps and let it execute manually and automatically as part of the alert remediation.<\/p>\n\n\n\n<p>For our use case the vRO workflow needs at least one input parameter to pass the vCenter VM object reference from vROps to vRO. In the following picture you see a second input string parameter, <code>vrops_alert_id<\/code>. If this parameter is available, vROps will pass the internal alert ID to vRO. This ID can be used for callbacks to retrieve more information from vROps.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-1.png\" alt=\"\" class=\"wp-image-425\" width=\"723\" height=\"143\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-1.png 964w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-1-300x59.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-1-768x151.png 768w\" sizes=\"auto, (max-width: 723px) 100vw, 723px\" \/><\/a><figcaption>Figure 1: vRO workflow and its input parameters<\/figcaption><\/figure>\n\n\n\n<p>In this case the inputs are:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>vm<\/code> as <code>VC:&lt;Datatype&gt;<\/code> to be populated with the object which triggered the alert<\/li><li><code>vrops_alert_id<\/code> as <code>String<\/code> \u2013 to be populated with the actual vROps alert ID for further callbacks<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Create or Modify vRO Package<\/h3>\n\n\n\n<p>Workflows you would like to use in vROps need to be added to a new or existing vRO package. Keep in mind that all workflows in the package which we will import in the next step will be visible in vROps.<\/p>\n\n\n\n<p>I tend to create a distinct package only for workflows I need in vROps.<\/p>\n\n\n\n<p>In the next picture you see my package with its content.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-2.png\" alt=\"\" class=\"wp-image-429\" width=\"717\" height=\"248\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-2.png 956w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-2-300x104.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-2-768x265.png 768w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/a><figcaption>Figure 2: vRO package content<\/figcaption><\/figure>\n\n\n\n<p>Since we are not using the package to export the workflows and import it in another vRO instance, you do not have to include the dependencies, like actions used in the workflow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Discover or Re-discover vRO Package in vROps<\/h3>\n\n\n\n<p>To make vROps aware of the available workflows we need to discover the package we created or modified in the previous step.<\/p>\n\n\n\n<p>The procedure in vROps is simple. \u201cEnvironment\u201d &#8211;&gt; \u201cVMware vRealize Orchestrator\u201d &#8211;&gt; \u201cvRO Workflows\u201d is the path you need to follow as shown in the following picture.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-3.png\" alt=\"\" class=\"wp-image-431\" width=\"671\" height=\"512\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-3.png 894w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-3-300x229.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-3-768x586.png 768w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><\/a><figcaption>Figure 3: vRO package discovery process<\/figcaption><\/figure>\n\n\n\n<p>In the next step you select your vRO instance, in my case \u201cvRA-vRO\u201d and run the \u201cConfigure Package Discovery\u201d from the \u201cActions\u201d menu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-4.png\" alt=\"\" class=\"wp-image-433\" width=\"675\" height=\"248\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-4.png 900w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-4-300x110.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-4-768x282.png 768w\" sizes=\"auto, (max-width: 675px) 100vw, 675px\" \/><\/a><figcaption>Figure 4: Configure package discovery in vROps<\/figcaption><\/figure>\n\n\n\n<p>To start the discovery, you just add your package to the list of packages to inspect. In my case it is <code>com.vmware.tkopton.vrops.actions<\/code>. \u201cBegin Action\u201d starts the process.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-5.png\" alt=\"\" class=\"wp-image-434\" width=\"482\" height=\"491\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-5.png 642w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-5-294x300.png 294w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/a><figcaption>Figure 5: Running the package discovery<\/figcaption><\/figure>\n\n\n\n<p>After few minutes you should see your package and the included workflows in the list of available packages. If it does not show up, reload the page in your browser. If it still does not show up, you will need to check the recent tasks in vROps via the \u201cAdministration\u201d for any errors.<\/p>\n\n\n\n<p>The next picture shows my package and the including workflows after the successful completion of the discovery process.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-6.png\" alt=\"\" class=\"wp-image-436\" width=\"644\" height=\"252\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-6.png 858w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-6-300x117.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-6-768x301.png 768w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><figcaption>Figure 6: Discovered workflows<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Configure Workflow in vROps (may be optional)<\/h3>\n\n\n\n<p>As for my use case we want the workflow to be executed on a specific vCenter object, a VM, we need to configure the workflow in vROps properly.<\/p>\n\n\n\n<p>We need to let vROps know on what resource types in alert definitions and on what target resource type in vRO a workflow can be executed. The process is to run \u201cCreate\/Modify Workflow Action on vCenter Resources\u201d on the specific workflow from the \u201cActions\u201d menu as depicted in the next figure.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-7.png\" alt=\"\" class=\"wp-image-437\" width=\"675\" height=\"249\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-7.png 900w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-7-300x111.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-7-768x283.png 768w\" sizes=\"auto, (max-width: 675px) 100vw, 675px\" \/><\/a><figcaption>Figure 7: Configuring the workflow<\/figcaption><\/figure>\n\n\n\n<p>As my alert will be triggered on VM resource type and will be executed on a VM resource in vCenter, we specify \u201cVirtual Machine\u201d in the highlighted parameters. \u201cOperation\u201d is &#8220;add&#8221;, as we are initially configuring the action.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-8.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-8.png\" alt=\"\" class=\"wp-image-444\" width=\"585\" height=\"371\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-8.png 780w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-8-300x190.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-8-768x486.png 768w\" sizes=\"auto, (max-width: 585px) 100vw, 585px\" \/><\/a><figcaption>Figure 8: Action parameters configuration<\/figcaption><\/figure>\n\n\n\n<p>The VMware online documentation explains the properties:<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.vmware.com\/en\/Management-Packs-for-vRealize-Operations-Manager\/3.1.1\/vrealize-orchestrator\/GUID-7E4B6D42-2A5C-440B-A8B6-3B31AD9AEBEB.html\">https:\/\/docs.vmware.com\/en\/Management-Packs-for-vRealize-Operations-Manager\/3.1.1\/vrealize-orchestrator\/GUID-7E4B6D42-2A5C-440B-A8B6-3B31AD9AEBEB.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-9.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-9.png\" alt=\"\" class=\"wp-image-447\" width=\"666\" height=\"309\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-9.png 888w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-9-300x139.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-9-768x356.png 768w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><\/a><figcaption>Figure 9: Action configuration &#8211; properties overview<\/figcaption><\/figure>\n\n\n\n<p>If the action completed successfully, you should see the available resource type and action target type as shown in the next picture if you re-run the configuration process.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-10.png\" alt=\"\" class=\"wp-image-449\" width=\"683\" height=\"434\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-10.png 910w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-10-300x191.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-10-768x488.png 768w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/a><figcaption>Figure 10: Configured action<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Create or Edit vROps Recommendation<\/h3>\n\n\n\n<p>vROps recommendations are the (optional) parts of an alert definition responsible for the availability of manual or automated actions.<\/p>\n\n\n\n<p>To have my workflow available for alert definitions, we create a new or edit an existing recommendation. As show in the next two figures I am creating a new recommendation and specify my vRO workflow as the action.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-11.png\" alt=\"\" class=\"wp-image-451\" width=\"680\" height=\"380\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-11.png 906w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-11-300x168.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-11-768x429.png 768w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/a><figcaption>Figure 11: Creating new vROps recommendation &#8211; step 1<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-12.png\" alt=\"\" class=\"wp-image-452\" width=\"452\" height=\"342\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-12.png 904w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-12-300x227.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-12-768x581.png 768w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/a><figcaption>Figure 12: Creating new vROps recommendation &#8211; step 2<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Add vROps Recommendation to an Alert Definition<\/h3>\n\n\n\n<p>As I am not focusing on symptom and alert definitions itself, I assume we have an appropriate alert definition in place.<\/p>\n\n\n\n<p>Now we need to wire that alert definition and our new recommendation.<\/p>\n\n\n\n<p>This is pretty easy in vRealize Operations 8.1, as shown in the following pictures.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-13.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-13.png\" alt=\"\" class=\"wp-image-453\" width=\"677\" height=\"240\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-13.png 902w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-13-300x106.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-13-768x272.png 768w\" sizes=\"auto, (max-width: 677px) 100vw, 677px\" \/><\/a><figcaption>Figure 13: Editing alert definition<\/figcaption><\/figure>\n\n\n\n<p>We simply edit the alert definition and add the recommendation per drag and drop.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-14.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-14.png\" alt=\"\" class=\"wp-image-454\" width=\"672\" height=\"243\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-14.png 896w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-14-300x108.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-14-768x278.png 768w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><\/a><figcaption>Figure 14: Adding recommendation to an alert definition<\/figcaption><\/figure>\n\n\n\n<p>An alert definition may have multiple recommendation. In auto-remediation scenarios we should be careful with multiple actions here.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-15.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-15.png\" alt=\"\" class=\"wp-image-455\" width=\"677\" height=\"510\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-15.png 902w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-15-300x226.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-15-768x579.png 768w\" sizes=\"auto, (max-width: 677px) 100vw, 677px\" \/><\/a><figcaption>Figure 15: Alert definition with configured recommendation<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Optional \u2013 Manual Remediation<\/h3>\n\n\n\n<p>Now we wait for the alert to be triggered.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-16.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-16.png\" alt=\"\" class=\"wp-image-456\" width=\"678\" height=\"206\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-16.png 904w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-16-300x91.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-16-768x233.png 768w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><figcaption>Figure 16: Triggered alert<\/figcaption><\/figure>\n\n\n\n<p>Once we see the active alert, we can open it and start the workflow manually.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-17.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-17.png\" alt=\"\" class=\"wp-image-457\" width=\"665\" height=\"360\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-17.png 886w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-17-300x163.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-17-768x416.png 768w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/a><figcaption>Figure 17: Available action in the triggered alert<\/figcaption><\/figure>\n\n\n\n<p>In the next picture you can see, that the <code>vm<\/code> parameter has been populated by vROps.<\/p>\n\n\n\n<p>The <code>vrops_alert_id<\/code> is obviously not being populated when the workflow is being started manually.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-18.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-18.png\" alt=\"\" class=\"wp-image-459\" width=\"428\" height=\"447\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-18.png 570w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-18-287x300.png 287w\" sizes=\"auto, (max-width: 428px) 100vw, 428px\" \/><\/a><figcaption>Figure 18: Action parameters<\/figcaption><\/figure>\n\n\n\n<p>After starting the action, we can see the corresponding task in vCenter.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-19.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-19-1024x302.png\" alt=\"\" class=\"wp-image-460\" width=\"768\" height=\"227\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-19-1024x302.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-19-300x88.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-19-768x226.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-19.png 1046w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption>Figure 19: Task executed in vCenter<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Optional &#8211; Enable automatic remediation<\/h3>\n\n\n\n<p>Now, as we see that the workflow is working correctly, we are ready to enable automatic action and let vRealize Operations remediate issues without manual involvement.<\/p>\n\n\n\n<p>To enable automatic actions, we need to modify the settings of the alert definition in the policy applied to the object(s) in scope.<\/p>\n\n\n\n<p>In vROps 8.1 with its new alert definition workflow it is just one click.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-20.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-20.png\" alt=\"\" class=\"wp-image-463\" width=\"648\" height=\"488\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-20.png 864w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-20-300x226.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-20-768x578.png 768w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/a><figcaption>Figure 20: Enabling automated action<\/figcaption><\/figure>\n\n\n\n<p>The next triggered alert will start the action (vRO workflow) automatically and we can see the execution in the \u201cRecent Tasks\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-21.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-21.png\" alt=\"\" class=\"wp-image-466\" width=\"651\" height=\"380\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-21.png 868w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-21-300x175.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-21-768x448.png 768w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/a><figcaption>Figure 21: Recent tasks overview in vROps<\/figcaption><\/figure>\n\n\n\n<p>This time, vRO also receives the vROps alert ID as depicted in the next figure.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22-1024x603.png\" alt=\"\" class=\"wp-image-467\" width=\"768\" height=\"452\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22-1024x603.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22-300x177.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22-768x452.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png 1046w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption>Figure 22: Workflow output in vRO<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>With vRealize Operations Management Pack for vRealize Orchestrator we have almost unlimited possibilities to extend vROps actions and implement real self-healing operations.<\/p>\n\n\n\n<p><strong>Stay safe.<\/strong><\/p>\n\n\n\n<p>Thomas \u2013&nbsp;<a href=\"https:\/\/twitter.com\/ThomasKopton\">https:\/\/twitter.com\/ThomasKopton<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The vRealize Operations Management Pack for vRealize Orchestrator provides the ability to execute vRO workflows as part of the alerting and remediation process in vROps. The vRO workflows can be executed manually or automatically. With this solution it is easy to implement sophisticated self-healing workflows for your vROps managed environment. In this blog post I &#8230;<\/p>\n","protected":false},"author":1,"featured_media":467,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,21,2],"tags":[26,3],"class_list":["post-414","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vrealize-operations","category-vro","category-vrops","tag-vro","tag-vrops"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Self-Healing with vRealize Operations and vRealize Orchestrator - 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=414\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Self-Healing with vRealize Operations and vRealize Orchestrator - TOMsOps\" \/>\n<meta property=\"og:description\" content=\"The vRealize Operations Management Pack for vRealize Orchestrator provides the ability to execute vRO workflows as part of the alerting and remediation process in vROps. The vRO workflows can be executed manually or automatically. With this solution it is easy to implement sophisticated self-healing workflows for your vROps managed environment. In this blog post I ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomas-kopton.de\/vblog\/?p=414\" \/>\n<meta property=\"og:site_name\" content=\"TOMsOps\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-05T18:58:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-04T15:10:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1046\" \/>\n\t<meta property=\"og:image:height\" content=\"616\" \/>\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=\"7 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=414#article\",\"isPartOf\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414\"},\"author\":{\"name\":\"Thomas Kopton\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"headline\":\"Self-Healing with vRealize Operations and vRealize Orchestrator\",\"datePublished\":\"2020-09-05T18:58:44+00:00\",\"dateModified\":\"2021-04-04T15:10:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414\"},\"wordCount\":1435,\"commentCount\":5,\"image\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png\",\"keywords\":[\"vRO\",\"vROps\"],\"articleSection\":[\"vRealize Operations\",\"vRO\",\"vROps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/thomas-kopton.de\/vblog\/?p=414#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414\",\"name\":\"Self-Healing with vRealize Operations and vRealize Orchestrator - TOMsOps\",\"isPartOf\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png\",\"datePublished\":\"2020-09-05T18:58:44+00:00\",\"dateModified\":\"2021-04-04T15:10:24+00:00\",\"author\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"breadcrumb\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thomas-kopton.de\/vblog\/?p=414\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png\",\"contentUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png\",\"width\":1046,\"height\":616},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=414#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/thomas-kopton.de\/vblog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Self-Healing with vRealize Operations and vRealize Orchestrator\"}]},{\"@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":"Self-Healing with vRealize Operations and vRealize Orchestrator - 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=414","og_locale":"en_US","og_type":"article","og_title":"Self-Healing with vRealize Operations and vRealize Orchestrator - TOMsOps","og_description":"The vRealize Operations Management Pack for vRealize Orchestrator provides the ability to execute vRO workflows as part of the alerting and remediation process in vROps. The vRO workflows can be executed manually or automatically. With this solution it is easy to implement sophisticated self-healing workflows for your vROps managed environment. In this blog post I ...","og_url":"https:\/\/thomas-kopton.de\/vblog\/?p=414","og_site_name":"TOMsOps","article_published_time":"2020-09-05T18:58:44+00:00","article_modified_time":"2021-04-04T15:10:24+00:00","og_image":[{"width":1046,"height":616,"url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png","type":"image\/png"}],"author":"Thomas Kopton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Kopton","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#article","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414"},"author":{"name":"Thomas Kopton","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"headline":"Self-Healing with vRealize Operations and vRealize Orchestrator","datePublished":"2020-09-05T18:58:44+00:00","dateModified":"2021-04-04T15:10:24+00:00","mainEntityOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414"},"wordCount":1435,"commentCount":5,"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png","keywords":["vRO","vROps"],"articleSection":["vRealize Operations","vRO","vROps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomas-kopton.de\/vblog\/?p=414#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414","url":"https:\/\/thomas-kopton.de\/vblog\/?p=414","name":"Self-Healing with vRealize Operations and vRealize Orchestrator - TOMsOps","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage"},"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png","datePublished":"2020-09-05T18:58:44+00:00","dateModified":"2021-04-04T15:10:24+00:00","author":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"breadcrumb":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomas-kopton.de\/vblog\/?p=414"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#primaryimage","url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png","contentUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/09\/Picture-22.png","width":1046,"height":616},{"@type":"BreadcrumbList","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=414#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomas-kopton.de\/vblog"},{"@type":"ListItem","position":2,"name":"Self-Healing with vRealize Operations and vRealize Orchestrator"}]},{"@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\/414","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=414"}],"version-history":[{"count":36,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/414\/revisions"}],"predecessor-version":[{"id":728,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/414\/revisions\/728"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/media\/467"}],"wp:attachment":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}