Ansible写入文件丢失换行符,如何保留设备配置原始格式?
解决Ansible写入配置文件时丢失换行符的问题
直接将stdout_lines作为content传入copy模块时,Ansible会把列表转换成Python列表的字符串格式(比如['line1', 'line2']),自然丢失了换行结构。要保留原始格式,只需用join过滤器将列表元素用换行符拼接:
修改后的Playbook代码:
- name: Pull the running-config... cisco.ios.ios_command: commands: show running-config brief register: running_output - name: Copy running_config data to file... ansible.builtin.copy: content: "{{ running_output.stdout_lines | join('\n') }}" dest: "/etc/ansible/backups/{{ inventory_hostname }}/running_config.txt"
补充说明
stdout_lines本身就是按原始输出拆分好的每行列表,用join('\n')可以完美还原每行的换行分隔- 如果需要让文件末尾也保留一个空行,可以改成:
{{ running_output.stdout_lines | join('\n') ~ '\n' }}
内容的提问来源于stack exchange,提问作者Moridn
相关产品推荐
相关产品推荐

