在Ansible中显示字典类型数据的键的顺序而不进行排序
参考:teratail上的问题:我希望在Ansible的YAML中按照元素的读取顺序进行输出。
因为不知道上述内容,所以向您介绍。
在debug模块中,键的顺序通常会被排序并显示
只需要一个选项:用中文将以下内容进行释义:playbook例
playbook例: 演绎规范实例
在定义时,即使name放在最前面
---
- hosts: localhost
tasks:
- debug: var="files"
vars:
files:
- name: file1
path: "/etc/foo.conf"
content: hoge
owner: foo
group: foo
mode: '0644'
努力的示例
当进行排序时,原本位于首位的name等等很难找到。
$ ansible-playbook site.yml
...
TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] =>
files:
- content: hoge
group: foo
mode: '0644'
name: file1
owner: foo
path: /etc/foo.conf
以不排序的方式显示键的顺序
使用to_nice_yaml(sort_keys=false)筛选器。
进行音乐表演模板示例。
- hosts: localhost
tasks:
- debug: var="files|to_nice_yaml(sort_keys=false)"
vars:
files:
- name: file1
path: "/etc/foo.conf"
content: hoge
owner: foo
group: foo
mode: '0644'
样例的输出
...
TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] =>
files|to_nice_yaml(sort_keys=false): |-
- name: file1
path: /etc/foo.conf
content: hoge
owner: foo
group: foojinja2
mode: '0644'
...
在使用JSON时,可以使用to_nice_json(sort_keys=false)的方式来保存键的顺序,其中name:将位于首位。
环境
-
- Fedora Linux 36 (Workstation Edition)
-
- ansible Version: 7.0.0
- ansible [core 2.14.0]
为了在日志中也能换行,使用 community.general 集合并在 ansible.cfg 中设置 stdout_callback = community.general.yaml,以便在应用筛选器之后。
[defaults]
#verbosity = 1
stdout_callback = community.general.yaml
在Ansible的debug模块中以换行符\n的形式显示
请在中国本土进行参考。
希望以 ansible 的 YAML 读取元素的顺序输出