Ansible如何提取过期证书变量的cn字段写入分隔格式文件
Ansible过期证书CN写入文件修正方案
错误原因
你原有写法中的json_query路径匹配错误:expired_certs.results是数组结构,每个数组元素下才存储item对象,你写的item[*]是尝试匹配item字段下的数组,该路径不存在,因此返回空值。
修正后的任务写法
1. 逗号分隔格式
- name: Create file with expiring certs (comma separated) copy: dest: "./cert_expiring.txt" content: "{{ expired_certs.results | json_query('[].item.cn') | join(',') }}"
2. 换行分隔格式
- name: Create file with expiring certs (newline separated) copy: dest: "./cert_expiring.txt" content: "{{ expired_certs.results | json_query('[].item.cn') | join('\n') }}"
逻辑说明
json_query('[].item.cn'):遍历expired_certs.results数组的所有元素,提取每个元素下item字段的cn值,返回符合条件的CN列表join()过滤器将列表按照指定分隔符拼接为字符串,可根据需求自定义分隔符
注意事项
请确保该copy任务的执行顺序在之前的证书判断任务之后,且两者属于同一个play,保证expired_certs变量可正常读取。如果无符合过期条件的证书,生成的文件内容为空属于正常逻辑。
内容的提问来源于stack exchange,提问作者stminion001
相关产品推荐
相关产品推荐

