YAMLファイルを操作するためのツール?

YAMLファイルを操作するためのツール?

私たちは、YAML設定ファイルを含むワークフローを実装し、実際に使用する前にいくつかのことを変更してこれを実行するための良いコマンドラインツールを探しています。

これは、既存のノードにターゲット固有の値(URLなど)を設定するのと同じくらい簡単な場合がありますが、YAMLファイルのブロック全体を追加または変更できると便利です。完璧な世界では、XSLTの軸と同じくらい強力なものが欲しいです。

私たちはこれをDockerファイルのMavenで使用します。私たちはDebianベースのイメージを好みますが、必ずしも必要ではありません。

答え1

マイクパラyqYAMLの仕事のために私が楽しんで使用するツールです。たとえば、Kubernetes名前空間定義ファイルを使用すると、次のようになります。

  • 名前空間名の抽出:

      yq read deploy/namespace.yaml metadata.name
    
  • タグを追加:

      yq write deploy/namespace.yaml metadata.labels.name demo
    

    (これにより、既存のノードが置き換えられるか、まだノードがない場合は新しいノードが追加されます。)

この-iオプションを使用すると、ファイルを現在の場所から更新できます。

XSLTツールが通常行うことができるすべてのタスクを見つけることはできません(またはjqたとえば、JSONの場合、サブ式のテストが見つからないため(私が知っている限り)、「この値の他のサブノードがあるノードでのこのサブノードの更新」に対応するものを作成することはできません。

答え2

アンドレイ・キースリュークyq(これはyq次のとおりです。スティーブンが言及したこと)はよく知られているJSONプロセッサ用のPythonラッパーですjq

のラッパーなので、通常はJSONファイルで実行されるすべての処理をYAMLファイルでjq実行できます。jqまた、ファイルをその場で編集する機能も追加されます。

このyqユーティリティはJSON、TOML、およびXMLを出力することもできます。インストールすると、他の種類の構造化文書形式(それぞれTOMLおよびXML)操作用の追加のコマンドラインツールをyq入手できます。tomlqxq

このyqユーティリティyqは、OpenBSD、FreeBSD、およびNetBSDではパッケージとして、macOSではHomebrewパッケージとして利用できますpython-yq。 GNUシステムでは(またはそのバリエーション)をyq使用してインストールできます。 Andre'sも参照してください。pip3pip3 install yqインストールに関する注意のためのyq

関連情報