首页 > 解决方案 > ansible 创建特定的字典

问题描述

我有一个问题,我有剧本 ansible,它存储来自列表中子目录的文件,并且列表中的每个项目我都关联一个从 100 开始的数字。

问题是他在字典中动态创建它并且他混淆了数字和文件。例如

dict_config = [“config1”:100,“config2”:101]

当我在子目录中添加新文件时

我想成为 dict_config = ["config1": 100, "config2":101, "config3":102] 但它是 dict_config = ["config1": 100, "config3":101, "config2":102]

所以对于新文件,我想在 dict_config 上,他在最后一个位置添加一个新项目,并且不会混淆字典。

- name: Get config file
  find:
    paths: "/etc/config"
    file_type: file
  register: found_files

- name: Get only file names
  set_fact:
    file_names: "{{ found_files['files'] | sort(attribute='mtime',reverse=false) | map(attribute='path') | map('basename') | list }}"

- name: Apply filter while looping
  set_fact:
    config_file: "{{ file_names | map('splitext')| map('first') | list }}"

- name: Set up dict to map customer and port
  set_fact:
    dict_config: "{{ dict(config_file|zip(_serial)) }}"
  vars:
    start: 100
    _len: "{{ config_file|length }}"
    _serial: "{{ range(start, start + _len|int) | list }}"

我添加了这条指令:`

排序(属性='mtime',反向=假)

` 但它按最后修改的文件排序,我不想要这种行为。

有什么帮助吗?

标签: listdictionaryansible

解决方案


推荐阅读