如何解决Ansible-修改变量
我正尝试如下修改ansible变量中的值:
- name: Store edited data in file
shell: cat "{{ list }}" | tr -s ' ' | cut -d' ' -f3 | tr -d ',"' | tr -d ',"'
register: filenew
其中{{list}}类似于:
"alertname": "KubePodCrashLooping","alertname": "AlertmanagerReceiversNotConfigured","alertname": "ImagePruningDisabled","alertname": "CPUThrottlingHigh",
尝试获得如下所示的内容,其中仅显示名称:
KubePodCrashLooping
AlertmanagerReceiversNotConfigured
ImagePruningDisabled
CPUThrottlingHigh
解决方法
浏览列表,然后像这样修改每个项目:
- name: store edited data in file
debug:
msg: {{ item.split(":")[1].split('"')[1].split('"')[0]
with_items: {{ list }}
register: fileitem
,
鉴于数据存储在文件list.data
中,下面的任务将创建具有名称的列表lines_new
。例如
- set_fact:
lines_new: "{{ lines_new|default([]) +
[item.split(':')[1][2:-2]] }}"
loop: "{{ lookup('file','list.data').splitlines() }}"
- debug:
var: lines_new
给予
lines_new:
- KubePodCrashLooping
- AlertmanagerReceiversNotConfigured
- ImagePruningDisabled
- CPUThrottlingHigh
在Ansible中创建文件的最佳实践是模块template
。例如,创建一个模板
shel> cat filenew.j2
{% for item in lines_new %}
{{ item }}
{% endfor %}
然后执行任务
- template:
src: filenew.j2
dest: filenew
从模板filenew
创建文件filenew.j2
shell> cat filenew
KubePodCrashLooping
AlertmanagerReceiversNotConfigured
ImagePruningDisabled
CPUThrottlingHigh
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。