当前位置: 首页 > 知识库问答 >
问题:

Ansible:如何检查Playbook中是否加载了变量?

习胤运
2023-03-14
---
- hosts: "{{ target }}"
  roles:
    - app

  tasks:
  - name: alert if variable does not exist
    fail:
      msg: "{{ item }} is not defined"
    when: "{{ item }}" is not defined
    with_items:
      - country
      - city
      - street
...
[app]
ansible-slave1
ansible-slave2

[db]
ansible-db

[multi:children]
app
db
country: "France"
city: "Paris"
[vagrant@ansible-master vagrant]$ ansible-playbook --inventory-file=ansible_master_hosts test_variables.yml --extra-vars "target=ansible-slave1" --syntax-check
ERROR! Syntax Error while loading YAML.

The error appears to have been in '/vagrant/test_variables.yml': line 10, column 24, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  msg: "{{ item }} is not defined"
when: "{{ item }}" is not defined
                   ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

我很乐意得到任何暗示。

谢谢

共有1个答案

赵灼光
2023-03-14

存在on open问题条件被定义,无法捕获未定义的var。

作为解决办法,我建议将where条件更改为以下内容:

何时:“{{item}}”==“

 类似资料:
  • 问题内容: 我想在body标签上设置背景图片,然后运行一些代码-像这样: 如何确定背景图像已完全加载? 问题答案: 尝试这个: 这将在内存中创建新映像,并使用load事件检测何时加载src。

  • 我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。

  • 本文向大家介绍如何检查JavaScript中是否定义了变量?,包括了如何检查JavaScript中是否定义了变量?的使用技巧和注意事项,需要的朋友参考一下 要检查变量是否为“未定义”,您需要使用以下命令进行检查。如果结果为“ false”,则表示未定义变量。在这里,变量结果为“ True”,即定义为- 示例

  • 问题内容: 我正在尝试检查Jquery库是否已加载到HTML页面上。我正在检查它是否有效,但是有些不正确。这是我所拥有的: 问题答案: 事情不对 好吧,您正在使用jQuery检查jQuery是否存在。如果未加载jQuery,则根本不会运行,并且回调也不会执行,除非您正在使用另一个库,并且该库碰巧共享相同的语法。 删除您的(使用类似方法):

  • 我有以下型号: 在另一个图书馆服务的方法: 只有在启用延迟加载时,它才能正常工作: 如果未启用延迟加载,则不填充用户属性。我想抛出一个异常,如果有人试图使用我的服务没有启用延迟加载。怎么做呢?我试图检查属性

  • 问题内容: 加载JavaScript文件时是否会触发事件?由于YSlow建议将JavaScript文件移动到页面底部,因此出现了问题。这意味着 在加载包含其代码的js文件之前会触发该事件。 如何避免这种情况? 问题答案: 我没有方便的参考,但是脚本标记是按顺序处理的,因此,如果将脚本标记放在定义function1等的脚本标记之后,则应该可以。 当然,另一种方法是通过在构建过程中合并文件来确保总共只