使用 to_nice_yaml 维护根元素和嵌套元素将 vars 元素导出到 yaml 文件

Export vars element to yaml file with to_nice_yaml mantaining root and nested elements

我在 ansible 剧本的 vars 组中有变量 CONNECTION_DATA:

vars:
  CONNECTION_DATA:
    HOST: xxx
    PORT: xxx
    USER: xxx
    PWD: xxx

我需要将 CONNECTION_DATA 及其嵌套元素写入 yaml 文件。为此,我使用以下任务:

vars:
  CONNECTION_DATA:
    HOST: xxx
    PORT: xxx
    USER: xxx
    PWD: xxx
tasks:
  - name: Writing vars to file yaml
    ansible.builtin.copy:
      dest: /tmp/vars.yml
      content:  "{{ CONNECTION_DATA | to_nice_yaml }}"

唯一的问题是输出到:

HOST: xxx
PORT: xxx
USER: xxx
PWD: xxx

相反,我想要:

CONNECTION_DATA:
   HOST: xxx
   PORT: xxx
   USER: xxx
   PWD: xxx

是否有实现此目的的解决方法?

您可以像这样修改您的剧本:

- hosts: localhost
  gather_facts: false
  vars:
    CONNECTION_DATA:
      HOST: xxx
      PORT: xxx
      USER: xxx
      PWD: xxx
  tasks:    
    - name: Writing vars to file yaml
      ansible.builtin.copy:
        dest: /tmp/vars.yml
        content:  "{{ _output | to_nice_yaml }}"
      vars:
        _output: "{{  {'CONNECTION_DATA': CONNECTION_DATA} }}"

结果:

CONNECTION_DATA:
    HOST: xxx
    PORT: xxx
    PWD: xxx
    USER: xxx