{"id":5296,"date":"2025-08-04T03:58:29","date_gmt":"2025-08-04T03:58:29","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/?p=5296"},"modified":"2025-08-04T03:58:29","modified_gmt":"2025-08-04T03:58:29","slug":"how-to-use-template-in-ansible","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/how-to-use-template-in-ansible\/","title":{"rendered":"Ansible: How to use template in Ansible using Jinja2?"},"content":{"rendered":"\n<p>Here\u2019s a <strong>comprehensive tutorial on Ansible Templates and Jinja2<\/strong>, suitable for engineers or anyone preparing for an advanced Ansible role.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. What are Ansible Templates?<\/h2>\n\n\n\n<p>Ansible templates are files written in <strong>Jinja2 templating language<\/strong> that allow you to generate dynamic configuration files or scripts on your managed hosts. Templates let you insert variables, run loops, add conditional logic, and more\u2014creating configuration files that are customized to each host or environment.<\/p>\n\n\n\n<p>Templates in Ansible typically have the <code>.j2<\/code> extension and are processed using the <strong><code>template<\/code> module<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Jinja2?<\/h2>\n\n\n\n<p><a href=\"https:\/\/jinja.palletsprojects.com\/\" target=\"_blank\" rel=\"noopener\">Jinja2<\/a> is a <strong>powerful templating engine for Python<\/strong>. It allows embedding dynamic expressions and logic into text files (like configuration files, scripts, HTML, etc.).<\/p>\n\n\n\n<p><strong>Key Jinja2 features used in Ansible:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Variable substitution<\/strong><\/li>\n\n\n\n<li><strong>Filters<\/strong> for modifying output<\/li>\n\n\n\n<li><strong>Conditionals<\/strong> (<code>if<\/code>, <code>else<\/code>)<\/li>\n\n\n\n<li><strong>Loops<\/strong> (<code>for<\/code>)<\/li>\n\n\n\n<li><strong>Includes<\/strong> for reusing template parts<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why Use Templates in Ansible?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DRY (Don\u2019t Repeat Yourself):<\/strong> Write one template, render differently for each host.<\/li>\n\n\n\n<li><strong>Environment-specific files:<\/strong> Custom config for dev, staging, production, etc.<\/li>\n\n\n\n<li><strong>Host-specific configuration:<\/strong> Each server gets a config with its own variables (IP, hostname, ports, etc.).<\/li>\n\n\n\n<li><strong>Automate tedious file creation:<\/strong> No more manual editing!<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Basic Usage of the Template Module<\/h2>\n\n\n\n<p><strong>Syntax:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">- name: Deploy custom configuration file\n  <span class=\"hljs-attr\">template<\/span>:\n    src: myconfig.conf.j2\n    <span class=\"hljs-attr\">dest<\/span>: <span class=\"hljs-regexp\">\/etc\/my<\/span>app\/myconfig.conf\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><code>src<\/code>: Path to your template (relative to <code>templates\/<\/code> directory in your role\/playbook).<\/li>\n\n\n\n<li><code>dest<\/code>: Destination path on the remote host.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Example 1: Simple Variable Substitution<\/h2>\n\n\n\n<p><strong>Template file: <code>greeting.txt.j2<\/code><\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Hello, my name is {{ name }} and I am a {{ role }}.\n<\/code><\/span><\/pre>\n\n\n<p><strong>Playbook snippet:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">- name: Generate greeting file\n  <span class=\"hljs-attr\">hosts<\/span>: all\n  <span class=\"hljs-attr\">vars<\/span>:\n    name: <span class=\"hljs-string\">\"Rajesh\"<\/span>\n    <span class=\"hljs-attr\">role<\/span>: <span class=\"hljs-string\">\"DevOps Engineer\"<\/span>\n  <span class=\"hljs-attr\">tasks<\/span>:\n    - name: Create greeting file\n      <span class=\"hljs-attr\">template<\/span>:\n        src: greeting.txt.j2\n        <span class=\"hljs-attr\">dest<\/span>: <span class=\"hljs-regexp\">\/tmp\/g<\/span>reeting.txt\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Resulting <code>\/tmp\/greeting.txt<\/code>:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Hello, my name is Rajesh and I am a DevOps Engineer.\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Example 2: Looping with Jinja2<\/h2>\n\n\n\n<p><strong>Template file: <code>servers.txt.j2<\/code><\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Server <span class=\"hljs-keyword\">List<\/span>:\n{% <span class=\"hljs-keyword\">for<\/span> server in servers %}\n- {{ server }}\n{% <span class=\"hljs-keyword\">endfor<\/span> %}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Playbook snippet:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">- name: Render <span class=\"hljs-keyword\">list<\/span> of servers\n  hosts: localhost\n  vars:\n    servers:\n      - web01.example.com\n      - db01.example.com\n      - cache01.example.com\n  tasks:\n    - name: Create server <span class=\"hljs-keyword\">list<\/span> file\n      template:\n        src: servers.txt.j2\n        dest: \/tmp\/servers.txt\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Result:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">Server<\/span> <span class=\"hljs-selector-tag\">List<\/span>:\n<span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">web01<\/span><span class=\"hljs-selector-class\">.example<\/span><span class=\"hljs-selector-class\">.com<\/span>\n<span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">db01<\/span><span class=\"hljs-selector-class\">.example<\/span><span class=\"hljs-selector-class\">.com<\/span>\n<span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">cache01<\/span><span class=\"hljs-selector-class\">.example<\/span><span class=\"hljs-selector-class\">.com<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Example 3: Conditionals in Templates<\/h2>\n\n\n\n<p><strong>Template file: <code>nginx.conf.j2<\/code><\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">server {\n  listen <span class=\"hljs-number\">80<\/span>;\n  server_name {{ server_name }};\n  {% <span class=\"hljs-keyword\">if<\/span> enable_ssl %}\n  listen <span class=\"hljs-number\">443<\/span> ssl;\n  ssl_certificate {{ ssl_cert }};\n  ssl_certificate_key {{ ssl_key }};\n  {% <span class=\"hljs-keyword\">endif<\/span> %}\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Playbook snippet:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">- name: Render NGINX config\n  <span class=\"hljs-attr\">hosts<\/span>: all\n  <span class=\"hljs-attr\">vars<\/span>:\n    server_name: <span class=\"hljs-string\">\"example.com\"<\/span>\n    <span class=\"hljs-attr\">enable_ssl<\/span>: <span class=\"hljs-literal\">true<\/span>\n    <span class=\"hljs-attr\">ssl_cert<\/span>: <span class=\"hljs-string\">\"\/etc\/nginx\/ssl\/cert.pem\"<\/span>\n    <span class=\"hljs-attr\">ssl_key<\/span>: <span class=\"hljs-string\">\"\/etc\/nginx\/ssl\/key.pem\"<\/span>\n  <span class=\"hljs-attr\">tasks<\/span>:\n    - name: Deploy nginx.conf\n      <span class=\"hljs-attr\">template<\/span>:\n        src: nginx.conf.j2\n        <span class=\"hljs-attr\">dest<\/span>: <span class=\"hljs-regexp\">\/etc\/<\/span>nginx\/nginx.conf\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Example 4: Using Filters<\/h2>\n\n\n\n<p>Filters let you modify variable values on the fly.<\/p>\n\n\n\n<p><strong>Template example:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">All uppercase: {{ mystring | upper }}\n<span class=\"hljs-attr\">Reversed<\/span>: {{ mylist | reverse }}\nComma separated: {{ mylist | join(<span class=\"hljs-string\">', '<\/span>) }}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Playbook snippet:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">vars:\n  mystring: <span class=\"hljs-string\">\"ansible\"<\/span>\n  <span class=\"hljs-attr\">mylist<\/span>:\n    - a\n    - b\n    - c\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Result:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">All uppercase: ANSIBLE\nReversed: c, b, a\nComma separated: a, b, c\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Example 5: Template Directory Structure in Roles<\/h2>\n\n\n\n<p><strong>A typical role with templates:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">myrole\/\n\u251c\u2500\u2500 tasks\/\n\u2502   \u2514\u2500\u2500 main.yml\n\u251c\u2500\u2500 templates\/\n\u2502   \u251c\u2500\u2500 app.conf.j2\n\u2502   \u2514\u2500\u2500 nginx.conf.j2\n<\/code><\/span><\/pre>\n\n\n<p>In <code>tasks\/main.yml<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">- name: Configure app\n  <span class=\"hljs-attr\">template<\/span>:\n    src: app.conf.j2\n    <span class=\"hljs-attr\">dest<\/span>: <span class=\"hljs-regexp\">\/etc\/my<\/span>app\/app.conf\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Advanced: Template Includes and Macros<\/h2>\n\n\n\n<p>You can <strong>include<\/strong> other templates or define macros for repeated sections.<br><em>For most playbooks, this isn\u2019t needed, but Jinja2 supports it if you need.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Tips and Best Practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Always use variables, not hardcoded values, in templates.<\/strong><\/li>\n\n\n\n<li><strong>Test your templates with <code>ansible-playbook --check<\/code> before running in production.<\/strong><\/li>\n\n\n\n<li><strong>Use comments in your <code>.j2<\/code> files (<code>{# comment #}<\/code>) for clarity.<\/strong><\/li>\n\n\n\n<li><strong>Store templates in the <code>templates\/<\/code> directory for roles or in the same directory as your playbook for small projects.<\/strong><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Common Jinja2 Expressions for Ansible<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Expression<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>{{ var }}<\/code><\/td><td>Print a variable<\/td><\/tr><tr><td><code>{% for item in list %}<\/code><\/td><td>Loop through a list<\/td><\/tr><tr><td><code>{% if condition %}<\/code><\/td><td>Conditional logic<\/td><\/tr><tr><td>`{{ var<\/td><td>upper }}`<\/td><\/tr><tr><td><code>{# This is a comment #}<\/code><\/td><td>Jinja2 comment<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Troubleshooting<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Template syntax errors:<\/strong> If your template fails, Ansible will show the error. Check for missing <code>{% ... %}<\/code> or <code>{{ ... }}<\/code>.<\/li>\n\n\n\n<li><strong>Variable undefined:<\/strong> Use <code>default<\/code> filter to avoid errors: <code>{{ myvar | default('defaultvalue') }}<\/code>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Further Reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/collections\/ansible\/builtin\/template_module.html\" target=\"_blank\" rel=\"noopener\">Ansible Template Module Docs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/jinja.palletsprojects.com\/en\/3.1.x\/templates\/\" target=\"_blank\" rel=\"noopener\">Jinja2 Documentation<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Summary:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ansible templates use Jinja2 for dynamic configuration files.<\/li>\n\n\n\n<li>You can use variables, loops, conditionals, and filters in <code>.j2<\/code> files.<\/li>\n\n\n\n<li>The <code>template<\/code> module copies the rendered file to the remote host.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_69021\"><iframe loading=\"lazy\"  id=\"_ytid_43417\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&autoplay=0&cc_load_policy=0&cc_lang_pref=&iv_load_policy=1&loop=0&rel=1&fs=1&playsinline=0&autohide=2&theme=dark&color=red&controls=1&disablekb=0&\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_69021\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a comprehensive tutorial on Ansible Templates and Jinja2, suitable for engineers or anyone preparing for an advanced Ansible role. 1. What are Ansible Templates? Ansible templates are files written&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5038],"tags":[639,5043,5040,5042],"class_list":["post-5296","post","type-post","status-publish","format-standard","hentry","category-ansible","tag-ansible","tag-jinja2","tag-playbook","tag-template"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/5296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=5296"}],"version-history":[{"count":5,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/5296\/revisions"}],"predecessor-version":[{"id":51174,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/5296\/revisions\/51174"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=5296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=5296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=5296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}