{"id":19498,"date":"2022-10-11T07:00:00","date_gmt":"2022-10-11T05:00:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=19498"},"modified":"2024-09-11T15:02:35","modified_gmt":"2024-09-11T13:02:35","slug":"tips-to-develop-a-new-component-on-top-of-yak-core","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/","title":{"rendered":"Tips to Develop a new Component on top of YaK Core"},"content":{"rendered":"\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1704\" height=\"1366\" class=\"wp-image-19710\" style=\"width: 150px;float: right\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg\" alt=\"\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg 1704w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022-300x240.jpg 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022-1024x821.jpg 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022-768x616.jpg 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022-1536x1231.jpg 1536w\" sizes=\"auto, (max-width: 1704px) 100vw, 1704px\" \/>If you are following social medias, you are probably aware of the new product that dbi services launched which is called <a href=\"https:\/\/www.dbi-services.com\/products\/yak\/\" target=\"_blank\" rel=\"noreferrer noopener\">YaK<\/a> (news <a href=\"https:\/\/www.linkedin.com\/posts\/dbi-services_yak-infrastructure-for-all-your-platforms-activity-6977914662499590144-3QZu?utm_source=share&amp;utm_medium=member_desktop\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>). With <a href=\"https:\/\/www.dbi-services.com\/blog\/author\/pascal-brand\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pascal Brand<\/a>, we are working on developing new components for it.<\/p>\n\n\n\n<p>I will share my experience on creating new components with few tips that could makes your development faster and safer.<\/p>\n\n\n\n<p>By the way, dbi services have already components ready for subscription (on top of YaK Core): To date, the components available with an annual subscription are <a href=\"https:\/\/www.dbi-services.com\/products\/yak\/\" target=\"_blank\" rel=\"noreferrer noopener\">Oracle Database and PostgreSQL<\/a>. More components will come soon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is a YaK Component?<\/h2>\n\n\n\n<p>YaK components are a set of playbooks\/roles to deploy an application on a YaK target with the benefits of YaK Core inventory abstraction, meaning being cloud independent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Developing New Component<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Assert<\/h3>\n\n\n\n<p>While developing and testing new components, we should verify the following facts:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>AWS credentials (for artifacts stored in S3) not set or expired<\/li>\n\n\n\n<li>Cloud provider credentials not set<\/li>\n\n\n\n<li>Target type (server vs component)<\/li>\n\n\n\n<li>Server and cluster definition alignment<\/li>\n<\/ol>\n\n\n\n<p>So, if playbook has to fail, it has to fail has early as possible during playbook execution. That&#8217;s why I developed a role called assertion-yak-role which will ensure all these points are correctly setup.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Checking Cloud Provider Accesses (Item 1 and 2)<\/h3>\n\n\n\n<p>For 1 and 2, it is as simple as trying to reach cloud provider and when it fails stop playbook with a self-explanatory message. Of course, this test should be done only for the selected cloud provider. So, for example, in case aws is cloud provider or artifact provider, when clause will look like:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\nwhen: artifacts.provider == &#039;aws_s3&#039; or provider == &#039;aws&#039;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Target Type (Item 3)<\/h3>\n\n\n\n<p>For point 3, I got inspiration from what is done inside <a href=\"http:\/\/- name: Checking Target Type   ansible.builtin.assert:     that:       - target_type == 'component'     success_msg: &quot;Target is a component.&quot;     fail_msg: &quot;This playbook can only run on 'component' target type. Current is '{{ target_type }}'.&quot;\" target=\"_blank\" rel=\"noreferrer noopener\">YaK core<\/a>, but in the opposite way as I used to provide wrong target type (ie &#8220;<code>target=on_prem\/srv-linux-ols-1<\/code>&#8221; instead of &#8220;<code>target=on_prem\/srv-linux-ols-1\/WLS_DOMAIN<\/code>&#8220;).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n- name: Checking Target Type\n  ansible.builtin.assert:\n    that:\n      - target_type == &#039;component&#039;\n    success_msg: &quot;Target is a component.&quot;\n    fail_msg: &quot;This playbook can only run on &#039;component&#039; target type. Current is &#039;{{ target_type }}&#039;.&quot;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Server in Cluster (Item 4)<\/h3>\n\n\n\n<p>Now that we know assert module, we just need to use it more:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n- name: Checking if Server is part of Cluster Definition\n  ansible.builtin.assert:\n    that:\n      - wls_host in cluster\n    success_msg: &quot;{{ wls_host }} is part of cluster.&quot;\n    fail_msg: &quot;{{ wls_host }} is not part of cluster {{ cluster }}.&quot;\n<\/pre><\/div>\n\n\n<p>&#8220;cluster&#8221; is a dict variable containing all hosts of the WebLogic cluster. <code>success_msg<\/code> is the message displayed when test returns true and <code>fail_msg<\/code> when false.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation Summary<\/h3>\n\n\n\n<p>Additionally, I miss-configured the host with what I wanted at end of deployment (Oups). Fortunately, with YaK, this is quick-fix.<\/p>\n\n\n\n<p>I decided to add an installation summary at end of assertion role and a short pause where I can interrupt if needed. Here is an example of output:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nTASK &#x5B;assertion-yak-role : Installation Summary] *************************\nThursday 06 October 2022  14:51:55 +0000 (0:00:00.071)    0:00:06.284 ****\nok: &#x5B;on_prem\/srv-linux-ols-1\/WLS_DOMAIN] =&amp;gt; {\n    &quot;msg&quot;: &#x5B;\n        &quot;=============================================================&quot;,\n        &quot;==                                                         ==&quot;,\n        &quot;==   Installing WebLogic          12_2_1_4 (jdk1.8.0_341)  ==&quot;,\n        &quot;==   On Cloud provider            on-premises              ==&quot;,\n        &quot;==   On Host                      srv-linux-ols-1          ==&quot;,\n        &quot;==   Host is                      Admin server             ==&quot;,\n        &quot;==   Which is part of cluster     srv-linux-ols-1          ==&quot;,\n        &quot;==                                srv-linux-ols-2          ==&quot;,\n        &quot;==                                                         ==&quot;,\n        &quot;=============================================================&quot;,\n        &quot;&quot;\n    ]\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Next Steps ?<\/h2>\n\n\n\n<p>Now, it is your turn to participate in YaK as everyone can <a href=\"https:\/\/gitlab.com\/yak4all\/yak\" target=\"_blank\" rel=\"noreferrer noopener\">contribute<\/a>. The core component of YaK is open source and you can even create your own component!<\/p>\n\n\n\n<p>Also don&#8217;t forget that you can try YaK <a href=\"https:\/\/www.dbi-services.com\/products\/yak\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you are following social medias, you are probably aware of the new product that dbi services launched which is called YaK (news here). With Pascal Brand, we are working on developing new components for it. I will share my experience on creating new components with few tips that could makes your development faster and [&hellip;]<\/p>\n","protected":false},"author":109,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2721],"tags":[2716,150,708],"type_dbi":[],"class_list":["post-19498","post","type-post","status-publish","format-standard","hentry","category-yak","tag-yak","tag-ansible","tag-automation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Tips to Develop a new Component on top of YaK Core - dbi Blog<\/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:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tips to Develop a new Component on top of YaK Core\" \/>\n<meta property=\"og:description\" content=\"If you are following social medias, you are probably aware of the new product that dbi services launched which is called YaK (news here). With Pascal Brand, we are working on developing new components for it. I will share my experience on creating new components with few tips that could makes your development faster and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-11T05:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-11T13:02:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg\" \/>\n<meta name=\"author\" content=\"DevOps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DevOps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\"},\"author\":{\"name\":\"DevOps\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"headline\":\"Tips to Develop a new Component on top of YaK Core\",\"datePublished\":\"2022-10-11T05:00:00+00:00\",\"dateModified\":\"2024-09-11T13:02:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\"},\"wordCount\":432,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg\",\"keywords\":[\"#yak\",\"Ansible\",\"Automation\"],\"articleSection\":[\"YaK\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\",\"name\":\"Tips to Develop a new Component on top of YaK Core - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg\",\"datePublished\":\"2022-10-11T05:00:00+00:00\",\"dateModified\":\"2024-09-11T13:02:35+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg\",\"width\":1704,\"height\":1366},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tips to Develop a new Component on top of YaK Core\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\",\"name\":\"DevOps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"caption\":\"DevOps\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/devops\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tips to Develop a new Component on top of YaK Core - dbi Blog","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:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/","og_locale":"en_US","og_type":"article","og_title":"Tips to Develop a new Component on top of YaK Core","og_description":"If you are following social medias, you are probably aware of the new product that dbi services launched which is called YaK (news here). With Pascal Brand, we are working on developing new components for it. I will share my experience on creating new components with few tips that could makes your development faster and [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/","og_site_name":"dbi Blog","article_published_time":"2022-10-11T05:00:00+00:00","article_modified_time":"2024-09-11T13:02:35+00:00","og_image":[{"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg","type":"","width":"","height":""}],"author":"DevOps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DevOps","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/"},"author":{"name":"DevOps","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"headline":"Tips to Develop a new Component on top of YaK Core","datePublished":"2022-10-11T05:00:00+00:00","dateModified":"2024-09-11T13:02:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/"},"wordCount":432,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg","keywords":["#yak","Ansible","Automation"],"articleSection":["YaK"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/","url":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/","name":"Tips to Develop a new Component on top of YaK Core - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg","datePublished":"2022-10-11T05:00:00+00:00","dateModified":"2024-09-11T13:02:35+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/10\/YAK-logotype-gimmik-PANTONE-2022.jpg","width":1704,"height":1366},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/tips-to-develop-a-new-component-on-top-of-yak-core\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tips to Develop a new Component on top of YaK Core"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735","name":"DevOps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","caption":"DevOps"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/devops\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/19498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=19498"}],"version-history":[{"count":17,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/19498\/revisions"}],"predecessor-version":[{"id":21371,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/19498\/revisions\/21371"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=19498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=19498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=19498"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=19498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}