てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] ansible-config dump コマンドで設定を JSON や YAML で表示する (ansible-core 2.14.0 から)

この記事は Ansible Advent Calendar 2022 6日目の記事です。

はじめに

ansible-core 2.14.0 で、ansible-config dump コマンドにで出力フォーマットを指定する -f--format オプションが追加されました。

ansible community package のバージョンとしては 7.0.0 からです。

ansible-config dump コマンドは、カレントディレクトリにおいて、反映されている設定内容を表示するコマンドです。

これまでは、シンプルな「設定項目名 = 設定値」という形式でしたが、JSONYAML でも表示できるようになりました。

試した結果をまとめます。

動作確認環境

  • ansible-core 2.14.0

おためし

普通に ansible-config dump だけだと表示量が多いので、デフォルトからの変更点だけ表示される --only-changed とあわせてためします。

JSON-f json

コマンド

$ ansible-config dump --only-changed -f json

表示

[
    {
        "name": "CONFIG_FILE",
        "origin": "",
        "type": null,
        "value": "/home/sakana/ansible/ansible.cfg"
    },
    {
        "name": "DUPLICATE_YAML_DICT_KEY",
        "origin": "/home/sakana/ansible/ansible.cfg",
        "type": null,
        "value": "error"
    },
    {
        "name": "HOST_KEY_CHECKING",
        "origin": "/home/sakana/ansible/ansible.cfg",
        "type": null,
        "value": false
    },
    {
        "name": "HOST_PATTERN_MISMATCH",
        "origin": "/home/sakana/ansible/ansible.cfg",
        "type": null,
        "value": "error"
    },
    {
        "name": "INVENTORY_ANY_UNPARSED_IS_FAILED",
        "origin": "/home/sakana/ansible/ansible.cfg",
        "type": null,
        "value": true
    }
]

YAML-f yaml

コマンド

$ ansible-config dump --only-changed -f yaml

表示

- name: CONFIG_FILE
  origin: ''
  type: null
  value: /home/sakana/ansible/ansible.cfg
- name: DUPLICATE_YAML_DICT_KEY
  origin: /home/sakana/ansible/ansible.cfg
  type: null
  value: error
- name: HOST_KEY_CHECKING
  origin: /home/sakana/ansible/ansible.cfg
  type: null
  value: false
- name: HOST_PATTERN_MISMATCH
  origin: /home/sakana/ansible/ansible.cfg
  type: null
  value: error
- name: INVENTORY_ANY_UNPARSED_IS_FAILED
  origin: /home/sakana/ansible/ansible.cfg
  type: null
  value: true

デフォルト (-f display

デフォルトは -f display 扱いです。これまでもあった、おなじみの形式です。

コマンド

$ ansible-config dump --only-changed -f display

表示

CONFIG_FILE() = /home/sakana/ansible/ansible.cfg
DUPLICATE_YAML_DICT_KEY(/home/sakana/ansible/ansible.cfg) = error
HOST_KEY_CHECKING(/home/sakana/ansible/ansible.cfg) = False
HOST_PATTERN_MISMATCH(/home/sakana/ansible/ansible.cfg) = error
INVENTORY_ANY_UNPARSED_IS_FAILED(/home/sakana/ansible/ansible.cfg) = True

おわりに

ちょっとその場で確認する場合は今までの表示で十分だと思います。一方で、設定値をテンプレートファイルに流し込んでドキュメントを生成したいような場合は、JSONYAML のようなフォーマットだと便利かもしれません。

参考

2.14.0 の Changelog

github.com

ansible-config adds JSON and YAML output formats for list and dump actions.

関連 issue

github.com

関聯 PR

github.com