在剧本中动态获取可疑事实

戈皮·克里希纳·阿纳巴姆

我有以下令人毛骨悚然的事实,

 "facter_partitions": {
            "/dev/loop0": {
                "backing_file": "/a",
                "size": "10.92 GiB",
                "size_bytes": 3080000000
            },
            "/dev/loop1": {
                "backing_file": "/b",
                "size": "11.92 GiB",
                "size_bytes": 1080000000
            },
            "/dev/loop10": {
                "backing_file": "/c",
                "size": "12.02 GiB",
                "size_bytes": 2064000000
            }
            },

我们如何在剧本中动态获取键和值对。可能正在使用for循环。

富兰克林西霍

这是字典。您必须使用将其转换为列表dict2items,然后才能访问每个项目的键值对,如下所示:

---
- hosts: localhost
  gather_facts: false
  vars:
     "facter_partitions": {
            "/dev/loop0": {
                "backing_file": "/a",
                "size": "10.92 GiB",
                "size_bytes": 3080000000
            },
            "/dev/loop1": {
                "backing_file": "/b",
                "size": "11.92 GiB",
                "size_bytes": 1080000000
            },
            "/dev/loop10": {
                "backing_file": "/c",
                "size": "12.02 GiB",
                "size_bytes": 2064000000
            }
       }
  tasks:
    - debug: msg="{{ item.key }} -  {{ item.value.backing_file }}"
      loop: "{{ facter_partitions | dict2items }}"

这将产生类似的输出,

TASK [debug] *******************************************************************
ok: [127.0.0.1] => (item={'key': u'/dev/loop10', 'value': {u'size_bytes': 2064000000, u'backing_file': u'/c', u'size': u'12.02 GiB'}}) => {
    "msg": "/dev/loop10 -  /c"
}
ok: [127.0.0.1] => (item={'key': u'/dev/loop1', 'value': {u'size_bytes': 1080000000, u'backing_file': u'/b', u'size': u'11.92 GiB'}}) => {
    "msg": "/dev/loop1 -  /b"
}
ok: [127.0.0.1] => (item={'key': u'/dev/loop0', 'value': {u'size_bytes': 3080000000, u'backing_file': u'/a', u'size': u'10.92 GiB'}}) => {
    "msg": "/dev/loop0 -  /a"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据收集事实在剧本中启动剧本

Ansible能否在剧本中间获取更新的事实?

如何从 ansible 清单中获取特定组并在剧本中使用它?

如何过滤剧本中的收集事实?

如何在剧本中做等待元素

Xpath函数在剧本中不起作用

在剧本中运行任务之前,如何设置确认提示?

在剧本中在本地主机上使用 ping

Ansible:如何在剧本中创建空库存组?

如何获取事实构造中事实的句柄?

在剧本中使用Ansible-Galaxy角色而不是剧本中的ansible-module是最佳实践吗?

我如何在剧本的Shebang中为解释器提供一个以上的参数

有没有办法在剧本中重新设置“主机”变量?

Ansible忽略任务中的错误,如果任何任务有错误,则在剧本结尾失败

如何在剧本中混合特权用户和非特权用户?

在剧本中为同一主机上的多个用户设置多个授权密钥

Ansible:在剧本中,按标签过滤角色,而无需通过命令行

如何获得Ansible支票在剧本中只能运行一次?

可以使用ansible变量在剧本中声明主机吗?

有条件地在剧本中包含 vars_files

如何生成具有范围的列表并将其保存在剧本中?

Ansible:我在剧本中的“with_itmes”有什么问题

为什么 Ansible 不在剧本中为这个列表分别取每个值?

在剧本中使用多值变量

从事实中获取价值

如何在ansible命令行中添加可选变量,并检查它们在剧本中是否存在?

Ansible-更新vars_file中的变量并在剧本中再次调用它不起作用

如何在Prolog中整理动态事实?

CLIPS - 从事实列表中获取特定模板的事实