私たちは、YAML設定ファイルを含むワークフローを実装し、実際に使用する前にいくつかのことを変更してこれを実行するための良いコマンドラインツールを探しています。
これは、既存のノードにターゲット固有の値(URLなど)を設定するのと同じくらい簡単な場合がありますが、YAMLファイルのブロック全体を追加または変更できると便利です。完璧な世界では、XSLTの軸と同じくらい強力なものが欲しいです。
私たちはこれをDockerファイルのMavenで使用します。私たちはDebianベースのイメージを好みますが、必ずしも必要ではありません。
答え1
マイクパラyq
YAMLの仕事のために私が楽しんで使用するツールです。たとえば、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
入手できます。tomlq
xq
このyq
ユーティリティyq
は、OpenBSD、FreeBSD、およびNetBSDではパッケージとして、macOSではHomebrewパッケージとして利用できますpython-yq
。 GNUシステムでは(またはそのバリエーション)をyq
使用してインストールできます。 Andre'sも参照してください。pip3
pip3 install yq
インストールに関する注意のためのyq
。