list - Ansible 列表以 dict 和递增每个元素的值
问题描述
我有一个列表 list_info = ["config1", "config2"] 并且我想转换为一个字典,它为每个项目增加一个值,并从像 100 这样的数字开始。要有这样的字典:
list_info 是在 set_fact 之前定义的变量
- name: Print
vars:
start: 100
set_fact:
dict_info: "{{ dict(list_info|zip(_serial)) }}"
vars:
_len: "{{ list_info|length }}"
_serial: "{{ range(start, start + _len|int) }}"
该任务包括一个带有未定义变量的选项。错误是:“开始”未定义\n\n错误似乎在
解决方案
您在同一任务上有两个 vars 部分,这是错误。
---
- hosts: localhost
gather_facts: false
vars:
list_info:
- config1
- config2
- config3
- config11
- config21
- config31
tasks:
- name: Print
set_fact:
dict_info: "{{ dict(list_info| zip(_serial)) }}"
vars:
start: 100
_len: "{{ list_info|length }}"
_serial: "{{ range(start, start + _len|int) | list }}"
- name: DEBUG
debug:
msg: "{{ dict_info }}"
和输出:
TASK [Print] *************************************************************************
ok: [localhost]
TASK [DEBUG] *************************************************************************
ok: [localhost] => {
"msg": {
"config1": 100,
"config11": 103,
"config2": 101,
"config21": 104,
"config3": 102,
"config31": 105
}
}
PLAY RECAP ***************************************************************************
推荐阅读
- oop - 面向对象编程对于竞争性编程的重要性是什么?
- java - 避免许多 if 语句 - 不同的数据类型
- wso2 - WSO2 API 标头未按预期工作
- android - 我无法使用发布请求和 Kotlin 编程语言的 Volley 库发送图像
- javascript - 如何制作自定义 HTML Helper?
- botframework - Bot Builder v4:SendActivityAsync() 中的“BadRequest”
- mysql - 参考其他两个表的总价格 - Mysql
- python - 来自多层表面区域的 STL 文件
- php - 从 Ajax 将数组从 PHP 返回到 jQuery
- sql - 如何在 postgresql 中用它的根替换一个单词?