{"id":1332,"date":"2021-05-26T12:16:56","date_gmt":"2021-05-26T12:16:56","guid":{"rendered":"https:\/\/www.nicktailor.com\/?p=1332"},"modified":"2021-05-26T12:44:23","modified_gmt":"2021-05-26T12:44:23","slug":"how-to-remove-snapshots-with-ansiblevmware","status":"publish","type":"post","link":"https:\/\/nicktailor.com\/tech-blog\/how-to-remove-snapshots-with-ansiblevmware\/","title":{"rendered":"How to remove snapshots with Ansible(VMware)"},"content":{"rendered":"<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><strong>Okay, so lots of folks ask me about this, and there are a number of ways you can do this.\u00a0<\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><strong>But if you\u2019re using vmware and redhat satellite for central patch management for your redhat environment. <\/strong><\/p>\n<p><strong>Then depending on how you patch your systems. If you snapshot every group prior to patching. Then this post will be perfect for you.<\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><strong>Process:<\/strong><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">1.<\/span>Remove snapshot once patching is all done and servers are confirmed <span style=\"color: #00b050;\">OKAY<\/span><\/strong><\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><strong>Pre-requisites: Assumed.<\/strong><\/p>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #c00000;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><span style=\"color: #c00000;\">Ansible 2.9 <\/span><span style=\"color: #c00000;\">installed and configured \u2013<\/span><\/strong><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #c00000;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><span style=\"color: #c00000;\">Vmware<\/span><span style=\"color: #c00000;\"> Community modules configured<\/span><\/strong><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #c00000;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><span style=\"color: #c00000;\">Vmware<\/span><span style=\"color: #c00000;\"> group variables previously defined for <\/span><span style=\"color: #c00000;\">vmware<\/span> <span style=\"color: #c00000;\">deployments(<\/span><span style=\"color: #c00000;\">Is helpful)<\/span><\/strong><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #c00000;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><span style=\"color: #c00000;\">Vmware<\/span><span style=\"color: #c00000;\"> user\/password configure with being able to <\/span><span style=\"color: #c00000;\">remove<\/span> <span style=\"color: #c00000;\">snaphots<\/span><span style=\"color: #c00000;\"> in either <\/span><span style=\"color: #c00000;\">datacenters<\/span><span style=\"color: #c00000;\"> you have<\/span><\/strong><\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><strong>Step by Step:<\/strong><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\">\n<p><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">1.<\/span>Create a roles directory inside \/etc\/ansible\/roles<\/strong><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><em><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">a.<\/span>mkdir -p \/etc\/ansible\/roles\/remove-snapshot\/tasks<\/strong><\/em><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">\n<p><em><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">b.<\/span>mkdir -p \/etc\/ansible\/roles\/remove-snapshot\/defaults<\/strong><\/em><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\">\n<p><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">2.<\/span>Now you want to create a task for the snapshots.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><em><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">c.<\/span>Inside \/etc\/ansible\/roles\/remove-snapshot\/tasks\/<\/strong><\/em><\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\">\n<p><em><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">d.<\/span>Create a file called main.yml<\/strong><\/em><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">3.<\/span>Add the following code and save the file<\/strong><\/div>\n<\/div>\n<\/div>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">&#8211; name: Login into vCenter and get cookies<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0delegate_to: localhost<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0uri:<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">url: https:\/\/{{ vcenter_host }}\/rest\/com\/vmware\/cis\/session<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0force_basic_auth: yes<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0validate_certs: no<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">method: POST<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">user: &#8216;{{ vcenter_username }}&#8217;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">password: &#8216;{{ vcenter_password }}&#8217;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">register: login<\/h2>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"color: #7030a0;\"><em>Note: Okay so what we want to do is find the virtual machine in <\/em><\/span><span style=\"color: #7030a0;\"><em>vsphere<\/em><\/span><span style=\"color: #7030a0;\"><em> by name and then grab its folder value and pass it as a variable so you don\u2019t need to define it statically in your <\/em><\/span><span style=\"color: #7030a0;\"><em>host_var<\/em><\/span><span style=\"color: #7030a0;\"><em>. The main reason is, say you deployed a <\/em><\/span><span style=\"color: #7030a0;\"><em>vm<\/em><\/span><span style=\"color: #7030a0;\"><em> and months later moved it to another folder, your code will likely have the origin folder which would be <\/em><\/span><span style=\"color: #7030a0;\"><em>annoying, and the ansible documentation doesn\u2019t really cover this approach, you basically figure it out as you do it. So <\/em><\/span><span style=\"color: #7030a0;\"><em>im<\/em><\/span><span style=\"color: #7030a0;\"><em> going to save you all time. Here is how you do it. The below will gather <\/em><\/span><span style=\"color: #7030a0;\"><em>vm_facts<\/em><\/span><span style=\"color: #7030a0;\"><em> based on the <\/em><\/span><span style=\"color: #7030a0;\"><em>inventory_hostname<\/em><\/span><\/strong><\/p>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">&#8211; name: Find Guest&#8217;s Folder using name<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0vmware_guest_find:<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">hostname: &#8220;{{ vcenter_host }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">username: &#8220;{{ vcenter_username }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">password: &#8220;{{ vcenter_password }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0validate_certs: no<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">name: &#8220;{{ inventory_hostname }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0delegate_to: localhost<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0ignore_errors: true<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">register: vm_facts<\/h2>\n<h2><\/h2>\n<p><strong><em><span style=\"color: #7030a0;\">Note: It will than gather those facts and find the folder value<\/span><span style=\"color: #7030a0;\">. You then register the facts to a variable \u201c<\/span><span style=\"color: #7030a0;\">vm_facts<\/span><span style=\"color: #7030a0;\">\u201d Now it will spit out what it finds when you do &#8211;<\/span><span style=\"color: #7030a0;\">vvvv<\/span><span style=\"color: #7030a0;\"> when you do your play. From there you can see the folder setting. You now want to set that that folder setting as its own variable that you can pass to another task as indicated below.<\/span><\/em><\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\">ok: [<\/span><span style=\"color: #0070c0;\">ansible-server<\/span><span style=\"color: #0070c0;\">] =&gt; {<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;changed&#8221;: false,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\">\u00a0\u00a0\u00a0\u00a0<\/span><strong><span style=\"color: #0070c0;\">&#8220;folders&#8221;: [<\/span><\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><strong><span style=\"color: #0070c0;\"> &#8220;\/<\/span><span style=\"color: #0070c0;\">SysUnix<\/span><span style=\"color: #0070c0;\">\/<\/span><span style=\"color: #0070c0;\">Teststuff<\/span><span style=\"color: #0070c0;\">&#8220;<\/span><\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><strong><span style=\"color: #0070c0;\"> ],<\/span><\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;invocation&#8221;: {<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">module_args<\/span><span style=\"color: #0070c0;\">&#8220;: {<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">datacenter<\/span><span style=\"color: #0070c0;\">&#8220;: null,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;hostname&#8221;: &#8220;<\/span><span style=\"color: #0070c0;\">vmware.nicktailor.com<\/span><span style=\"color: #0070c0;\">&#8220;,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;name&#8221;: &#8221; <\/span><span style=\"color: #0070c0;\">ansible-server<\/span><span style=\"color: #0070c0;\">&#8220;,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;password&#8221;: &#8220;VALUE_SPECIFIED_IN_NO_LOG_PARAMETER&#8221;,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;port&#8221;: 443,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">proxy_host<\/span><span style=\"color: #0070c0;\">&#8220;: null,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">proxy_port<\/span><span style=\"color: #0070c0;\">&#8220;: null,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">use_instance_uuid<\/span><span style=\"color: #0070c0;\">&#8220;: false,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;username&#8221;: &#8220;<\/span><span style=\"color: #0070c0;\">svc_ans<\/span><span style=\"color: #0070c0;\">&#8220;,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">uuid<\/span><span style=\"color: #0070c0;\">&#8220;: null,<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> &#8220;<\/span><span style=\"color: #0070c0;\">validate_certs<\/span><span style=\"color: #0070c0;\">&#8220;: false<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> }<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\"> }<\/span><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><span style=\"color: #0070c0;\">}<\/span><\/p>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">&#8211; name: &#8220;vm_folder &#8211; setting folder value&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0set_fact:<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0folder : &#8220;{{ vm_facts.folders }}&#8221;<\/h2>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"color: #7030a0;\">Note:<\/span> <span style=\"color: #7030a0;\">So you can see that the facts has a sub fact called \u201cfolders\u201d. We want to pass that by setting that value as its own variable by making it a fact. Ansible way to set variables is setting facts. So we make that value above into a variable \u201c<\/span><span style=\"color: #7030a0;\">vm_<\/span><span style=\"color: #7030a0;\">facts.folders<\/span><span style=\"color: #7030a0;\">\u201d and then pass that into the next task where it asks for folders.<\/span><span style=\"color: #7030a0;\"> This will get around the having to provide the exact folder the <\/span><span style=\"color: #7030a0;\">vm_resides<\/span><span style=\"color: #7030a0;\"> to create snapshotting for an array of hosts.<\/span><span style=\"color: #7030a0;\"> This section is basically identical to create except the \u201cstate\u201d is set to <\/span><span style=\"color: #7030a0;\">absent<\/span><\/strong><\/p>\n<h2><\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">&#8211; name: Remove Snapshot<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0vmware_guest_snapshot:<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">hostname: &#8220;{{ vcenter_host }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">username: &#8220;{{ vcenter_username }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">password: &#8220;{{ vcenter_password }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0datacenter: &#8220;{{ vcenter_dc }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0validate_certs: no<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">name: &#8220;{{ inventory_hostname }}&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0<strong>state: absent<\/strong><\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0snapshot_name: &#8220;Ansible Managed Snapshot&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0<strong>folder: &#8220;&#8216;{{ vm_facts.folders }}'&#8221;<\/strong><\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">description: &#8220;This snapshot is created by Ansible Playbook&#8221;<\/h2>\n<h2 style=\"margin-top: 2pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.3; color: #2f5496; font-size: 13pt;\">\u00a0\u00a0delegate_to: localhost<\/h2>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">4.<\/span>Save the file<\/strong><\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt;\">5.<\/span>You can either have <span style=\"color: #0070c0;\">group_vars<\/span> set up for individual datacenters, but for now just define the variables under \/etc\/ansible\/roles\/remove-snapshot\/defaults<\/strong><\/div>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"color: #7030a0;\"><em>Note: You will likely have a <\/em><\/span><span style=\"color: #7030a0;\"><em>group_var<\/em><\/span><span style=\"color: #7030a0;\"><em> from you <\/em><\/span><span style=\"color: #7030a0;\"><em>vmdeploy<\/em><\/span><span style=\"color: #7030a0;\"><em> role that you can use for here.<\/em><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-bottom: 0; padding-bottom: 0; line-height: 1.3; margin-left: 36pt;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-bottom: 8pt; padding-bottom: 0; line-height: 1.3; margin-left: 72pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">e.<\/span>Create a file called main.yml and the following variables<\/strong><\/div>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 108pt;\"><strong><span style=\"color: #0070c0;\">vcenter_username<\/span><span style=\"color: #0070c0;\">: <\/span><span style=\"color: #0070c0;\">admin<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 108pt;\"><strong><span style=\"color: #0070c0;\">vcenter_password<\/span><span style=\"color: #0070c0;\">: <\/span><span style=\"color: #0070c0;\">should be vault encrypted variable<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 108pt;\"><strong><span style=\"color: #0070c0;\">vcenter_host<\/span><span style=\"color: #0070c0;\">: <\/span><span style=\"color: #0070c0;\">vmware.nicktailor.com<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 108pt;\"><strong><span style=\"color: #0070c0;\">vcenter_dc<\/span><span style=\"color: #0070c0;\">: <\/span><span style=\"color: #0070c0;\">London<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 108pt;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 108pt;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 72pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">f.<\/span><span style=\"color: #000000;\">Save the file<\/span><\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<div class=\"ul\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 54pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #0070c0;\"><span style=\"position: absolute; top: -0.34em; left: 0; font-size: 2em;\">\u2022<\/span>\u00a0<\/span><span style=\"color: #7030a0;\">Note: Ensure your host<\/span><span style=\"color: #7030a0;\"> \u201cnicktest1\u201d<\/span><span style=\"color: #7030a0;\"> is listed in your inventory host file. <\/span><\/strong><br \/>\n<strong><span style=\"color: #0070c0;\"><em>\/etc\/ansible\/inventory\/TEST\/hosts<\/em><\/span><\/strong><\/div>\n<\/div>\n<\/div>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 18pt;\"><strong><span style=\"color: #000000;\">Run your playbook: from <\/span><span style=\"color: #7030a0;\">\/etc\/ansible<\/span><\/strong><\/p>\n<p style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 18pt;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<div class=\"ol\" style=\"margin: 0;\">\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">1.<\/span><span style=\"color: #7030a0;\">ansible-playbook &#8211;<\/span><span style=\"color: #7030a0;\">i<\/span><span style=\"color: #7030a0;\"> inventory\/TEST\/hosts <\/span><span style=\"color: #7030a0;\">just<\/span><span style=\"color: #7030a0;\">remove<\/span><span style=\"color: #7030a0;\">vmsnap.yml<\/span><span style=\"color: #7030a0;\"> &#8211;ask-vault-pass &#8211;limit=&#8217;<\/span><span style=\"color: #7030a0;\">nicktest1<\/span><span style=\"color: #7030a0;\">&#8216; <\/span><\/strong><\/div>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #000000;\">Playbook log:<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #0070c0;\">[<\/span><span style=\"color: #0070c0;\">root@ansible-<\/span><span style=\"color: #0070c0;\">server<\/span><span style=\"color: #0070c0;\">]#<\/span><span style=\"color: #0070c0;\"> ansible-playbook &#8211;<\/span><span style=\"color: #0070c0;\">i<\/span><span style=\"color: #0070c0;\"> inventory\/TEST\/hosts <\/span><span style=\"color: #0070c0;\">just<\/span><span style=\"color: #0070c0;\">remove<\/span><span style=\"color: #0070c0;\">vmsnap.yml<\/span><span style=\"color: #0070c0;\"> &#8211;ask-vault-pass &#8211;limit=&#8217;<\/span><span style=\"color: #0070c0;\">nicktest1<\/span><span style=\"color: #0070c0;\">&#8216;<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #0070c0;\">Vault password:<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">PLAY [all] **********************************************************************************************************************************<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">TASK [<\/span><span style=\"color: #00b050;\">remove<\/span><span style=\"color: #00b050;\">_<\/span><span style=\"color: #00b050;\">snapshot<\/span><span style=\"color: #00b050;\"> :<\/span><span style=\"color: #00b050;\"> Login into vCenter and get cookies] *********************************************************************************<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">ok: [<\/span><span style=\"color: #00b050;\">nicktest1<\/span><span style=\"color: #00b050;\">]<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">TASK [<\/span><span style=\"color: #00b050;\">remove<\/span><span style=\"color: #00b050;\">_<\/span><span style=\"color: #00b050;\">snapshot<\/span><span style=\"color: #00b050;\"> :<\/span><span style=\"color: #00b050;\"> Find Guest&#8217;s Folder using name] *************************************************************************************<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">ok: [<\/span><span style=\"color: #00b050;\">nicktest1<\/span><span style=\"color: #00b050;\">]<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">TASK [<\/span><span style=\"color: #00b050;\">remove<\/span><span style=\"color: #00b050;\">_<\/span><span style=\"color: #00b050;\">snapshot<\/span><span style=\"color: #00b050;\"> :<\/span> <span style=\"color: #00b050;\">vm_folder<\/span><span style=\"color: #00b050;\"> &#8211; setting folder value] ***********************************************************************************<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">ok: [<\/span><span style=\"color: #00b050;\">nicktest1<\/span><span style=\"color: #00b050;\">]<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">TASK [<\/span><span style=\"color: #00b050;\">remove<\/span><span style=\"color: #00b050;\">_<\/span><span style=\"color: #00b050;\">snapshot<\/span><span style=\"color: #00b050;\"> :<\/span> <span style=\"color: #00b050;\">remove<\/span><span style=\"color: #00b050;\"> Snapshot] ****************************************************************************************************<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">ok: [<\/span><span style=\"color: #00b050;\">nicktest1<\/span><span style=\"color: #00b050;\">]<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">PLAY RECAP **********************************************************************************************************************************<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #00b050;\">nicktest1<\/span><span style=\"color: #00b050;\"> : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0<\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<\/div>\n<div class=\"li\" style=\"margin: 0;\">\n<div style=\"margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2; margin-left: 36pt;\"><strong><span style=\"display: inline-block; position: relative; text-indent: -18pt; color: #000000;\">2.<\/span><span style=\"color: #000000;\">Go log into <\/span><span style=\"color: #000000;\">vsphere<\/span><span style=\"color: #000000;\"> and check to see the <\/span><span style=\"color: #000000;\">vm<\/span><span style=\"color: #000000;\">\u00a0no longer has the snapshot name listed.<\/span><\/strong><\/div>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"display: inline-block; height: 1em;\"><span style=\"display: none;\">.<\/span><\/span><\/strong><\/p>\n<p style=\"text-align: left; margin-top: 0pt; padding-top: 0; margin-bottom: 0pt; padding-bottom: 0; line-height: 1.2;\"><strong><span style=\"color: #7030a0;\"><em>Note: This uses the snapshot name to remove as the one you used to create. If another snapshot exists with a different name it will ignore it entirely. If you pass snapshot variable with another name and run the book again, it will remove another snapshot. The same applies to removing snapshots, it will remove based on the name.<br \/>\n<\/em><\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Okay, so lots of folks ask me about this, and there are a number of ways you can do this.\u00a0 But if you\u2019re using vmware and redhat satellite for central patch management for your redhat environment. Then depending on how you patch your systems. If you snapshot every group prior to patching. Then this post will be perfect for you.<a href=\"https:\/\/nicktailor.com\/tech-blog\/how-to-remove-snapshots-with-ansiblevmware\/\" class=\"read-more\">Read More &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51,133,129],"tags":[],"class_list":["post-1332","post","type-post","status-publish","format-standard","hentry","category-ansible","category-snapshots","category-vmware"],"_links":{"self":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/1332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=1332"}],"version-history":[{"count":23,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/1332\/revisions"}],"predecessor-version":[{"id":1358,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/1332\/revisions\/1358"}],"wp:attachment":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=1332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=1332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=1332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}