【发布时间】:2020-12-02 06:08:36
【问题描述】:
我有一个文件夹,其中有很多子文件夹,这些子文件夹将有 yaml 文件,通过使用下面的代码,我得到了所有 yaml 文件并注册了这些文件,
tasks:
- name: Find .yml files
find:
paths: /temp/
patterns: '*.yml,*.yaml'
recurse: yes
register: yaml_path_files
其中一个yaml文件内容如下,
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
---
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: default
data:
log_level: INFO
---
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: default
data:
log_level: INFO
我想检查 yaml 包含的种类是否为 ConfigMap,并且需要将 yaml 文件作为参数传递给角色/另一个剧本,我尝试使用下面的代码,它不起作用,
- debug:
var: item.path
when: lookup('file',item.path ) | from_yaml_all | list | selectattr('kind', '==', 'ConfigMap') | list | length > 0
with_items: "{{ yaml_path_files.files }}"
我面临以下错误,
致命:[本地主机]:失败! => {"msg": "条件检查 'lookup('file',item.path ) | from_yaml | list | selectattr('kind', '==', 'ConfigMap') | list | length > 0' 失败. 错误是:评估条件时出错 (lookup('file',{{ filename }} ) | from_yaml | list | selectattr('kind', '==', 'ConfigMap') | list | length > 0): 'dict object' 没有属性 'kind'\n\n错误似乎在 '/cygdrive/c/senthil/Ansible/Ansibleusecase4/EKSartifactvalidationV2.yml':第 14 行第 7 列,但可能\n在文件中的其他位置取决于确切的语法问题。\n\n违规行似乎是:\n\n # with_items: "{{ yaml_path_files.files }}"\n - 调试:\n ^ here\n"}
请帮助我在 ansible 中实现它
【问题讨论】:
标签: ansible