我维护着a custom module for Ansible written in Python,并且需要能够将所有检测到的Ansible事实作为字典传递到该模块中。
目前,我正在尝试这样做:
aria-hidden="true"
我模块的参数规范如下:
<input>
我的模块文档还指定了以下内容:
aria-labelledby
但是,当我进行消毒和验证时,我收到的是- name: run tests
degoss:
# ...
facts: "{{ ansible_facts }}"
而不是字典:
AnsibleModule(argument_spec=dict(
# ...
facts=dict(required=False, default={}),
), ...)
这是在运行时抛出的:
DOCUMENTATION="""
# ...
options:
facts:
required: false
default: empty dictionary
description: A dictionary of Ansible facts.
"""
是否需要使用特定的语法将值作为字典传递,还是需要将字典变量视为JSON并尝试反序列化它们?
答案 0 :(得分:0)
这有效:
在您的游戏中将ansible_facts传递给 string s = Convert.ToString(-5, 2);
Console.WriteLine(s);
int i = Convert.ToInt32(s,2);
Console.WriteLine(i);
过滤器。
to_json
在您的python模块中,使用 - name: run tests
degoss:
# ...
facts: "{{ ansible_facts | to_json }}"
或json.loads
ast.literal_eval
答案 1 :(得分:0)
如here所述,您可以指定ansible可以期望的类型。
AnsibleModule(argument_spec=dict(
# ...
facts=dict(required=False, default={}, type=dict),
), ...)
然后,“事实”将成为字典