{"id":51385,"date":"2025-08-07T06:23:32","date_gmt":"2025-08-07T06:23:32","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=51385"},"modified":"2025-08-07T06:23:37","modified_gmt":"2025-08-07T06:23:37","slug":"ansible-all-ways-to-define-variables-in-ansible-inventory-hosts","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/ansible-all-ways-to-define-variables-in-ansible-inventory-hosts\/","title":{"rendered":"Ansible: All Ways to Define Variables in Ansible Inventory\/Hosts"},"content":{"rendered":"\n<p>Here\u2019s a <strong>comprehensive tutorial on all the ways to define and use variables in Ansible inventory\/hosts<\/strong>, covering every major approach\u2014including their best use cases and <strong>clear examples<\/strong> for each.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Complete Guide: All Ways to Define Variables in Ansible Inventory\/Hosts<\/strong><\/h1>\n\n\n\n<p>Ansible variables make playbooks and roles flexible and dynamic. Variables can be defined in multiple ways, with different precedence and scopes: per host, per group, globally, in YAML, in INI, or in directory structures.<\/p>\n\n\n\n<p>Below, we\u2019ll cover <strong>every method<\/strong> with <strong>examples<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Host Variables in Inventory File (Host Vars)<\/strong><\/h2>\n\n\n\n<p>Define variables directly for a single host in the INI inventory file:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">&#91;webservers]\nweb1 ansible_host=192.168.1.101 http_port=80 max_clients=200\nweb2 ansible_host=192.168.1.102 http_port=8080 max_clients=150\n<\/code><\/span><\/pre>\n\n\n<p><strong>Usage in playbook\/task:<\/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: Show host vars\n  <span class=\"hljs-attr\">hosts<\/span>: webservers\n  <span class=\"hljs-attr\">tasks<\/span>:\n    - debug: msg=<span class=\"hljs-string\">\"Host {{ inventory_hostname }} uses port {{ http_port }} and max clients {{ max_clients }}\"<\/span>\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<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Group Variables in Inventory File (Group Vars)<\/strong><\/h2>\n\n\n\n<p>Define variables for all hosts in a group in the INI inventory:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">&#91;dbservers]\ndb1 ansible_host=192.168.1.201\ndb2 ansible_host=192.168.1.202<\/code><\/span><\/pre>\n\n<p>[dbservers:vars]<\/p>\n\n\n\n<p>db_port=3306 backup_window=02:00<\/p>\n\n\n\n<p>All hosts in <code>[dbservers]<\/code> get <code>db_port<\/code> and <code>backup_window<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Global (All) Group Vars<\/strong><\/h2>\n\n\n\n<p>Set variables for all hosts by using the <code>[all:vars]<\/code> section in your INI inventory:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">&#91;all:vars]\nenv=production\nadmin_email=admin@example.com\n<\/code><\/span><\/pre>\n\n\n<p>All hosts will inherit these.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Using YAML Inventory (<code>hosts.yml<\/code>)<\/strong><\/h2>\n\n\n\n<p>YAML-style inventory files let you define hosts, groups, and variables in a structured way:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">all<\/span>:\n  <span class=\"hljs-selector-tag\">vars<\/span>:\n    <span class=\"hljs-selector-tag\">datacenter<\/span>: <span class=\"hljs-selector-tag\">DC1<\/span>\n  <span class=\"hljs-selector-tag\">children<\/span>:\n    <span class=\"hljs-selector-tag\">webservers<\/span>:\n      <span class=\"hljs-selector-tag\">hosts<\/span>:\n        <span class=\"hljs-selector-tag\">web1<\/span>:\n          <span class=\"hljs-selector-tag\">ansible_host<\/span>: 192<span class=\"hljs-selector-class\">.168<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-class\">.101<\/span>\n          <span class=\"hljs-selector-tag\">http_port<\/span>: 80\n        <span class=\"hljs-selector-tag\">web2<\/span>:\n          <span class=\"hljs-selector-tag\">ansible_host<\/span>: 192<span class=\"hljs-selector-class\">.168<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-class\">.102<\/span>\n          <span class=\"hljs-selector-tag\">http_port<\/span>: 8080\n      <span class=\"hljs-selector-tag\">vars<\/span>:\n        <span class=\"hljs-selector-tag\">nginx_version<\/span>: 1<span class=\"hljs-selector-class\">.24<\/span>\n    <span class=\"hljs-selector-tag\">dbservers<\/span>:\n      <span class=\"hljs-selector-tag\">hosts<\/span>:\n        <span class=\"hljs-selector-tag\">db1<\/span>:\n        <span class=\"hljs-selector-tag\">db2<\/span>:\n      <span class=\"hljs-selector-tag\">vars<\/span>:\n        <span class=\"hljs-selector-tag\">db_port<\/span>: 3306\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><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<p><strong>Usage in playbook:<\/strong> Variables are accessed as usual (<code>{{ db_port }}<\/code> etc).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Host and Group Variable Files (<code>host_vars<\/code> &amp; <code>group_vars<\/code> Directory)<\/strong><\/h2>\n\n\n\n<p>This is the <strong>most powerful and recommended way for larger projects<\/strong>.<\/p>\n\n\n\n<p><strong>Directory structure:<\/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\">inventory\/\n  hosts        <span class=\"hljs-comment\"># inventory file (can be INI or YAML)<\/span>\n  group_vars\/\n    all.yml    <span class=\"hljs-comment\"># applies to all hosts<\/span>\n    webservers.yml\n    dbservers.yml\n  host_vars\/\n    web1.yml\n    db1.yml\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>Example:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>inventory\/group_vars\/webservers.yml<\/code>: <code>http_port: 80 nginx_version: 1.23<\/code><\/li>\n\n\n\n<li><code>inventory\/host_vars\/web1.yml<\/code>: <code>http_port: 8080<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>All hosts in webservers get http_port=80, except web1 (overrides to 8080).<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Nested Groups and Variables (<code>children<\/code> keyword in YAML)<\/strong><\/h2>\n\n\n\n<p>You can nest groups, with vars defined for parent or child groups:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">all:\n  children:\n    frontend:\n      hosts:\n        web1:\n        web2:\n      vars:\n        tier: frontend\n    backend:\n      hosts:\n        db1:\n        db2:\n      vars:\n        tier: backend\n  vars:\n    env: production\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\"><strong>7. Dynamic Inventory with Variables<\/strong><\/h2>\n\n\n\n<p>Dynamic inventory scripts\/plugins (e.g., for AWS) can return host\/group variables as part of their JSON:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json\">{\n  <span class=\"hljs-attr\">\"webservers\"<\/span>: {\n    <span class=\"hljs-attr\">\"hosts\"<\/span>: &#91;<span class=\"hljs-string\">\"web1\"<\/span>, <span class=\"hljs-string\">\"web2\"<\/span>],\n    <span class=\"hljs-attr\">\"vars\"<\/span>: {\n      <span class=\"hljs-attr\">\"http_port\"<\/span>: <span class=\"hljs-number\">80<\/span>\n    }\n  },\n  <span class=\"hljs-attr\">\"_meta\"<\/span>: {\n    <span class=\"hljs-attr\">\"hostvars\"<\/span>: {\n      <span class=\"hljs-attr\">\"web1\"<\/span>: {<span class=\"hljs-attr\">\"nginx_version\"<\/span>: <span class=\"hljs-string\">\"1.24\"<\/span>},\n      <span class=\"hljs-attr\">\"web2\"<\/span>: {<span class=\"hljs-attr\">\"nginx_version\"<\/span>: <span class=\"hljs-string\">\"1.22\"<\/span>}\n    }\n  }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/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\"><strong>8. Using <code>vars<\/code> in Playbooks, Roles, and Tasks<\/strong><\/h2>\n\n\n\n<p>You can define variables directly in a playbook, though these are not inventory variables:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">- hosts: webservers\n  <span class=\"hljs-attr\">vars<\/span>:\n    http_port: <span class=\"hljs-number\">8080<\/span>\n    <span class=\"hljs-attr\">max_clients<\/span>: <span class=\"hljs-number\">100<\/span>\n  <span class=\"hljs-attr\">tasks<\/span>:\n    - debug: msg=<span class=\"hljs-string\">\"Port is {{ http_port }}\"<\/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\">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><strong>Note:<\/strong> These override inventory vars (except for host_vars and group_vars, which have higher precedence).<\/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\"><strong>9. Extra Vars (<code>-e<\/code>) at Command Line<\/strong><\/h2>\n\n\n\n<p><strong>Highest precedence!<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">ansible-playbook -i inventory\/hosts site.yml -e <span class=\"hljs-string\">\"env=staging http_port=8081\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><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\"><strong>10. Environment Variables<\/strong><\/h2>\n\n\n\n<p>You can access environment variables with <code>lookup('env', 'ENV_VAR_NAME')<\/code> in your playbooks.<br><strong>These are not inventory vars, but often used for secrets.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>11. Facts as Variables<\/strong><\/h2>\n\n\n\n<p>Ansible facts (collected via <code>setup<\/code> module) are accessible as variables (e.g. <code>ansible_hostname<\/code>, <code>ansible_distribution<\/code>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Precedence: Which Variables Override Which?<\/strong><\/h1>\n\n\n\n<p><strong>(Highest to lowest):<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Extra vars<\/strong> (<code>-e<\/code>)<\/li>\n\n\n\n<li><strong>Task\/block vars<\/strong><\/li>\n\n\n\n<li><strong>Role vars<\/strong><\/li>\n\n\n\n<li><strong>Play vars<\/strong><\/li>\n\n\n\n<li><strong>Host vars<\/strong> (from <code>host_vars\/<\/code> or inventory)<\/li>\n\n\n\n<li><strong>Group vars<\/strong> (from <code>group_vars\/<\/code> or inventory)<\/li>\n\n\n\n<li><strong>All group vars<\/strong> (<code>[all:vars]<\/code> or <code>group_vars\/all.yml<\/code>)<\/li>\n\n\n\n<li><strong>Playbook\/inventory defaults<\/strong><\/li>\n\n\n\n<li><strong>Facts<\/strong><\/li>\n<\/ol>\n\n\n\n<p><em>See <a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_variables.html#understanding-variable-precedence\" target=\"_blank\" rel=\"noopener\">Ansible docs: Variable precedence<\/a><\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Quick Reference Table<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Example Syntax \/ Path<\/th><th>Scope<\/th><th>Example Value<\/th><\/tr><\/thead><tbody><tr><td>Host vars in INI<\/td><td><code>web1 ansible_host=1.2.3.4<\/code><\/td><td>One host<\/td><td><code>web1 ansible_host=1.2.3.4<\/code><\/td><\/tr><tr><td>Group vars in INI<\/td><td><code>[group:vars] key=value<\/code><\/td><td>All group hosts<\/td><td><code>[web:vars] port=80<\/code><\/td><\/tr><tr><td>All group vars<\/td><td><code>[all:vars] key=value<\/code><\/td><td>All hosts<\/td><td><code>[all:vars] env=prod<\/code><\/td><\/tr><tr><td>YAML inventory vars<\/td><td><code>vars:<\/code> block<\/td><td>Any host\/group<\/td><td><code>vars: {foo: bar}<\/code><\/td><\/tr><tr><td><code>group_vars\/<\/code> dir<\/td><td><code>group_vars\/webservers.yml<\/code><\/td><td>All group hosts<\/td><td><code>nginx_version: 1.24<\/code><\/td><\/tr><tr><td><code>host_vars\/<\/code> dir<\/td><td><code>host_vars\/web1.yml<\/code><\/td><td>One host<\/td><td><code>http_port: 8080<\/code><\/td><\/tr><tr><td>Playbook vars<\/td><td><code>vars:<\/code> in play<\/td><td>All play hosts<\/td><td><code>vars: {debug: true}<\/code><\/td><\/tr><tr><td>Extra vars<\/td><td><code>-e \"foo=bar\"<\/code><\/td><td>All play hosts<\/td><td>CLI only<\/td><\/tr><tr><td>Dynamic inventory JSON<\/td><td><code>hostvars<\/code>\/<code>vars<\/code> keys<\/td><td>From dynamic source<\/td><td>AWS, GCP plugins, etc.<\/td><\/tr><tr><td>Environment vars (lookup)<\/td><td><code>lookup('env', 'VAR')<\/code><\/td><td>Local to playbook<\/td><td>e.g. AWS keys<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Examples:<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A. group_vars\/webservers.yml<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">nginx_version<\/span>: 1<span class=\"hljs-selector-class\">.25<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><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<h3 class=\"wp-block-heading\"><strong>B. host_vars\/web1.yml<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">http_port<\/span>: 8088\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>C. INI Inventory with Group Vars<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">&#91;appservers]\napp1 ansible_host=1.2.3.10\napp2 ansible_host=1.2.3.11<\/code><\/span><\/pre>\n\n<p>[appservers:vars]<\/p>\n\n\n\n<p>app_env=staging<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>D. YAML Inventory with Group\/Host Vars<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">all:\n  children:\n    monitoring:\n      hosts:\n        zabbix1:\n          zabbix_agent_port: 10050\n<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>E. Dynamic Inventory<\/strong><\/h3>\n\n\n\n<p>Returned by AWS\/GCP inventory plugins, includes host\/group vars.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Host vars:<\/strong> Specific to one host, defined in inventory, <code>host_vars\/<\/code>, or dynamic inventory.<\/li>\n\n\n\n<li><strong>Group vars:<\/strong> For a whole group, defined in inventory, <code>group_vars\/<\/code>, or dynamic inventory.<\/li>\n\n\n\n<li><strong>All group vars:<\/strong> Apply to all hosts.<\/li>\n\n\n\n<li><strong>YAML inventory:<\/strong> Clean, scalable, supports all of the above.<\/li>\n\n\n\n<li><strong>Directory structure (<code>group_vars\/<\/code>, <code>host_vars\/<\/code>):<\/strong> Recommended for big projects.<\/li>\n\n\n\n<li><strong>Extra vars:<\/strong> For overrides and quick changes.<\/li>\n\n\n\n<li><strong>Dynamic inventory:<\/strong> Great for cloud, VMs, auto-scaling.<\/li>\n\n\n\n<li><strong>Precedence matters!<\/strong> The closer to the CLI, the more powerful.<\/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\"><strong>Best Practice<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <code>group_vars\/<\/code> and <code>host_vars\/<\/code> directories for maintainable, scalable automation.<\/li>\n\n\n\n<li>For dynamic environments (cloud), use dynamic inventory + host\/group vars returned as JSON.<\/li>\n\n\n\n<li>Reserve extra vars (<code>-e<\/code>) for CI\/CD or special cases.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a comprehensive tutorial on all the ways to define and use variables in Ansible inventory\/hosts, covering every major approach\u2014including their best use cases and clear examples for each. Complete&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-51385","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51385","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=51385"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51385\/revisions"}],"predecessor-version":[{"id":51387,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51385\/revisions\/51387"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=51385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=51385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=51385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}