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

Ansible变量优先级哈希

何峰
2023-03-14
├── debug.yml
├── host_vars
│   └── test.localdomain
├── inventory
│   └── debug
└── roles
    └── debug
        ├── tasks
        │   └── main.yml
        └── vars
            └── main.yml
---
- name: debug
  hosts: debug
  roles:
    - debug

host_vars/test.localdomain包含我想优先于默认值的变量。

---
foo:
  bar:
    - hey

inventory/debug是我们将要使用的库存文件。

[debug]
test.localdomain

roles/debug/tasks/main.yml输出foo.bar变量。

---
- debug: msg="{{foo.bar}}"
---
foo:
  bar:
    - hello
    - world
> ansible-playbook debug.yml -i inventory/debug

PLAY [debug] **********************************

TASK [setup] **********************************
ok: [test.localdomain]

TASK [debug : debug] **************************
ok: [test.localdomain] => {
    "msg": [
        "hello", 
        "world"
    ]
}

PLAY RECAP *************************************
test.localdomain : ok=2    changed=0    unreachable=0    failed=0   
> ansible test.localdomain -i inventory/debug -m debug -a 'msg="{{foo.bar}}"'
test.localdomain | SUCCESS => {
    "msg": [
        "hey"
    ]
}

共有1个答案

隗新霁
2023-03-14

问题是您使用的不是角色默认变量,而是角色变量。再看看文档中的列表:

  • 角色默认值
  • 库存变量
  • 库存组_vars
  • 库存host_vars
  • Playbook group_vars
  • 剧本host_vars
  • 宿主事实
  • 注册变量
  • set_facts
  • 播放变量
  • 播放vars_prompt
  • 播放vars_files
  • 角色和包含变量
  • 块变量(仅用于块中的任务)
  • 任务变量(仅用于该任务)
  • 额外变量

角色变量优先于主机变量。

 类似资料:
  • 我正在尝试用play vars_prompt变量重写inventory group_vars/all变量。考虑下面的代码: inventory/group_vars/all.yml test.yml 我想用var1和var2(用vars_prompt接受的值)代替test1和test2(在inventory/group_vars/all.yml中设置的值)重写variable_1和variable

  • 本文向大家介绍JavaScript定义变量和变量优先级问题探讨,包括了JavaScript定义变量和变量优先级问题探讨的使用技巧和注意事项,需要的朋友参考一下 看下面的代码: 回答以下问题: 会报错吗?会弹出几次? 第2个alert是true还是false? 第3个alert弹出什么? 为什么? 思考下,然后测试下,如果你回答正确,那么后面的文章就不用看了。 -------------------

  • 问题内容: 我的网页包含: 引用的样式表包含: 我在ID中有一张表格,希望单元格有一些填充。但是,引用的样式表优先于内联样式。我可以通过Firebug直观地看到这一点。如果我关闭Firebug中的指令,则向左填充将生效。 我该如何上班? 问题答案: 正如其他人提到的那样,您有一个特异性问题。当确定两个规则中的哪一个优先时,CSS引擎会计算每个选择器中的s 数量。如果一个比另一个多,就使用它。否则,

  • 代码生成器用于将Blockly的程序转换为JavaScript,Python,PHP,Lua,Dart等。在为新块编写代码生成器时,最具挑战性的问题是处理操作顺序,以使生成的代码按预期执行。 圆括号 考虑下面的块组装。 如果生成器不知道运算符的优先级,则生成的JavaScript代码将是: alert(2*3+4); 这显然是不正确的,因为乘法运算符会撕裂加法,自己获取“ 3”。一种解决方案是将每

  • 事件的吞没中,我们提到了事件的传递。事件如何传递,先到哪个监听器?这是由优先级决定的。 固定值优先级 使用一个整形的数值,数值较低的监听器比数值较高的监听器,先接收到事件。 场景图优先级 是指向节点对象的指针,z-order 较高的节点中的监听器比 z-order 较低的节点中的,先接收到事件。由于 z-order 较高的节点在顶部绘制,所以使用这种优先级可以确保触摸事件被正确响应 还记得这个场景

  • 我需要一个优先级队列,它首先获得具有最高优先级值的项目。我当前正在使用队列库中的PriorityQueue类。但是,这个函数只先返回值最小的项。我尝试了一些很难看的解决方案,比如(sys.maxint-priority)作为优先级,但我只是想知道是否存在更优雅的解决方案。