【问题标题】:referencing dictionary variable value in ansible task在ansible任务中引用字典变量值
【发布时间】:2021-04-28 19:31:21
【问题描述】:

团队, 我有一个任务,我试图从我的值文件中定义的字典中引用值。但低于错误,有什么提示吗?我正在做这个练习,以便稍后在我的其他任务中使用这个引用,但第一个调试步骤本身失败了。

我参考了这个链接 [ansible dict 参考][1]

values.yaml

loop_device: "loop"
available_device_default_config:
  - device: any
    partitions:
      - number: 1
        start: 0%
        end: 100%
        storage_class: services

任务

- name: lookup dictionary vars
    debug:
      var: available_device_default_config.device

任务输出错误

34  TASK [local_volume_mount : lookup dictionary vars] *****************************
  Wednesday 28 April 2021  21:51:34 +0000 (0:00:04.915)       0:00:05.052 ******* 
  ok: [node1] => {
      "available_device_default_config.device": "VARIABLE IS NOT DEFINED!"
  }

预期输出:

ok: [node1] => {
      "any"
  }

我在下面尝试过,但没有运气

var: "{{ available_device_default_config.device }}"

var: "{{ available_device_default_config['device'] }}"

【问题讨论】:

  • 我添加了预期的输出,我可以通过将静态值直接烘焙到任务中来实现。

标签: ansible ansible-2.x ansible-facts ansible-template


【解决方案1】:

变量available_device_default_config 被定义为一个字典列表。所以你不能直接访问属性device,因为它是available_device_default_config中第一项的属性。你需要通过available_device_default_config[0]查看它

- name: "set facts"
  set_fact:
    available_device_default_config:
      - device: any
        partitions:
          - number: 1
            start: 0%
            end: 100%
            storage_class: services

- name: "lookup dictionary vars"
  debug:
    msg: "{{ available_device_default_config }}"

- name: "lookup dictionary vars"
  debug:
    msg: "{{ available_device_default_config[0].device }}"

结果是

TASK [set facts] ****************************************************************
ok: [localhost]

TASK [lookup dictionary vars] ***************************************************
ok: [localhost] => 
  msg:
  - device: any
    partitions:
    - end: 100%
      number: 1
      start: 0%
      storage_class: services

TASK [lookup dictionary vars] ***************************************************
ok: [localhost] => 
  msg: any

【讨论】:

  • 能否请您提示一下如何只使用名称而不是索引 0 进行搜索?比如设备值什么是子键值?
猜你喜欢
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多