相关疑难解决方法(0)

通过extra-vars或inventory变量将Ansible变量设置为undefined

所以我有一个看起来像的Ansible剧本

---
- hosts: mygroup
  tasks:
    - debug:
        msg: "{{ foo | default(inventory_hostname) }}"
Run Code Online (Sandbox Code Playgroud)

我的库存文件看起来像

[mygroup]
127.0.0.1
Run Code Online (Sandbox Code Playgroud)

由于foo未在任何地方定义,因此调试127.0.0.1按预期打印.

但假设我的库存文件看起来像

[mygroup]
127.0.0.1 foo=null
Run Code Online (Sandbox Code Playgroud)

当我运行剧本时,它打印出字符串null.我也试过,foo=None它打印一个空字符串.如何通过库存或额外变量将变量设置为null?

当我想取消设置已在剧本中定义的变量时,这可能很有用.

我使用Ansible版本2.1.1.0.

ansible ansible-2.x

7
推荐指数
1
解决办法
1万
查看次数

Ansible,如何检查变量是否为空?

我有这个 var I 一个角色,我用来向 linux 用户添加授权密钥,所以 foo 可以是带有单个 ssh 公钥的字符串或多个公钥的列表。

默认情况下foo已定义但为空,因此即使用户未设置它也可以进行测试,这样如果为空,则不会执行任何相关任务。

我通常会使用when: fooorwhen: not foo并且它运行良好,除了现在 ansible trow 折旧警告说:

[弃用警告]:将 None 评估为裸变量,此行为将消失,将来您可能需要将 |bool 添加到表达式中。另请参阅 CONDITIONAL_BARE_VARS 配置切换。此功能将在 2.12 版中删除。可以通过在 ansible.cfg 中设置 deprecation_warnings=False 来禁用弃用警告。

when: foo|bool像提到的那样尝试,但false每次变量填充一个不是 yes, true, Yes 的字符串时它都会返回...

foo is defined 不起作用,因为定义了 var

foo != "" 不起作用,因为 var 为 null 而不是空字符串

富| length > 0 不起作用,因为 null 没有长度

老实说,我在这里没有想法。

ansible

4
推荐指数
2
解决办法
9089
查看次数

标签 统计

ansible ×2

ansible-2.x ×1