在Ansible中,有时我们需要将一个列表转换成字典。这样可以方便地在任务中使用这些变量值。下面是一个将列表“扁平化”转成字典键/值对的方法。
我们可以使用Ansible的过滤器和Jinja2模板来完成这个任务。首先,我们创建一个包含键/值对的列表。例如:
vars: my_list: - name: Bob age: 25 - name: Alice age: 32
在这个例子中,我们有一个包含两个键/值对的列表。现在我们将使用Jinja2模板和Ansible过滤器将其转换成字典。如下所示:
在这个任务中,我们使用了Ansible的set_fact模块来将过滤器结果存储在my_dict变量中。对于items2dict过滤器,我们通过使用key_name和value_name参数来指定字典键和值的名称。
现在my_dict变量将包含以下字典:
my_dict: Bob: 25 Alice: 32
用于实现这个方法的完整剧本如下所示:
我们可以使用debug模块来检查my_dict变量的内容。现在我们可以在任务中方便地使用键/值对。