1

令我惊讶的是,由于 ansible 2.9(我相信)默认情况下不获取嵌套字典的 ovirt 信息模块。而且,由于最有价值的数据通常都存放在那里,我正在寻找获取它们的简单方法。只是设置

fetch_nested: yes

通常只给出 ids,这不是很有用,以获得所需的数据我需要知道给定模块的属性字典的确切名称,这是有问题的,直到我看到提取该字典的输出(鸡或蛋)。

文档在属性名称方面非常吝啬,例如:

- nested_attributes Specifies list of the attributes which should be fetched from the API. This parameter apply only when fetch_nested' is true'. [Default: (null)] type: list version_added: 2.3

这个条目在大多数 ovirt*_info 模块的文档中是相同的,例如 ovirt_event_info、ovirt_storage_domain_info、ovirt_nic_info(它们具有不同的嵌套数据和不同的属性名称)。

如果有一种方法可以全部获取它们,那就太好了,例如:

        nested_attributes: 
        - all

可悲的是,这不起作用。如果有人向我指出获取 attr 名称的明显方法,我将不胜感激,如果没有它,我会发现 ovirt 模块很难使用。

我知道这些更改是为了提高速度而应用的,但它似乎不太用户友好,并且可能会破坏为以前版本编写的代码。

在 ovirt 4.4 中观察到了描述的 ovirt*_info 模块行为,例如,我怀疑 ansible ovirt 模块的行为与 ovirt 4.3 会有所不同,但谁知道...

4

1 回答 1

1

首先感谢这个问题,老实说,我脑子里也有一段时间了。

获取所有嵌套属性名称的最简单方法可能是使用 API。例如,您需要知道 VM 模板的所有可能属性,因此您可以https://FQCN/api/vms/ID在其中获得模板 href,您将在其中看到所有可用属性。不是很好的方式,而是最简单的方式。

我对如何改进/解决这个问题几乎没有什么想法,但我需要小心不要破坏任何向后兼容性。

因此,如果您可以在 GitHub 存储库 [1] 上打开一个与此相关的问题,我们可以在其中与其他开发人员进行讨论。

[1] http://github.com/ovirt/ovirt-ansible-collection

于 2021-02-15T21:39:11.790 回答