首页 > 解决方案 > /etc/ansible/hosts 变量的未定义变量错误

问题描述

我有两个虚拟机,一个作为 ansible 控制机器并运行剧本以在第二个虚拟机上执行操作。

以下是ansible控制机器上的文件

/etc/ansible/ansible.cfg

inventory      = /etc/ansible/hosts

/etc/ansible/主机

# My nodes
[my-group]
my1-node ansible_user=imran DB_SERVER=10.136.10.49 DB_USER=mydbusr

我尝试了以下两种访问变量的方法,但没有成功,但是如果我提供像 -e DB_SERVER=10.136.10.49 这样的命令行。它的工作

我的剧本

---
- hosts: all
  tasks:
    - debug: 
        msg:
          - "Database server {{DB_SERVER}}"
          - "Database Username  {{  hostvars['DB_USER'] }}"

以上是产生错误

更新:我也运行冗长,它说它指向正确的配置,因为我读到由于流浪汉有时配置没有正确指向。

Using /etc/ansible/ansible.cfg as config file

标签: ansibleansible-2.x

解决方案


如果你想使用hostvars魔法变量数组,你应该使用下面的语法:

---
- hosts: all
  tasks:
    - debug: 
        msg:
          - "Database server {{DB_SERVER}}"
          - "Database Username  {{  hostvars[inventory_hostname]['DB_USER'] }}"

{{DB_SERVER}}应该可以工作,ansible 知道如何将其解析为您在清单文件中定义的值。

希望能帮助到你。


推荐阅读