私は、JSONまたはYAMLのいずれかの設定を読み込み、ファイル内のいくつかのノードから値を抽出するためにAnsibleを使用しています。不可能| JSONまたはYAMLのいずれかのデータを処理する
from_json
またはfrom_yaml
を使用してAnsibleで処理することができますが、設定がどの形式になるかわからないため、動作させるのが難しいです。
ファイルはKubernetes 'Kubeconfigです。 JSON
{
"kind": "Config",
"apiVersion": "v1",
"preferences": {},
"clusters": [
{
"name": "k8s-clstr-master",
"cluster": {
"server": "https://my-k8s-cluster.com",
"certificate-authority-data": "REDACTED"
}
}
],
"users": [
{
"name": "k8s-clstr-master-admin",
"user": {
"client-certificate-data": "REDACTED",
"client-key-data": "REDACTED"
}
}
],
"contexts": [
{
"name": "k8s-clstr-master",
"context": {
"cluster": "k8s-clstr-master",
"user": "k8s-clstr-master-admin",
"namespace": "kube-system"
}
}
],
"current-context": "k8s-clstr-master"
}
でYAML
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://my-k8s-cluster.com
name: k8s-clstr-master
contexts:
- context:
cluster: k8s-clstr-master
namespace: kube-system
user: k8s-clstr-master-admin
name: k8s-clstr-master
current-context: k8s-clstr-master
kind: Config
preferences: {}
users:
- name: k8s-clstr-master-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
で
私が使用しているAnsible:以下の例kubeconfig
をJSONで取得された場合
vars:
kubeconfig: "{{ lookup('hashivault', '/kubeconfig/admin', 'config') }}"
tasks:
- name: Find cluster server name
shell: "echo {{ kubeconfig.clusters[0].cluster.server }}"
Ansibleブロックの上には大丈夫に動作しますYAML形式で取得された場合は失敗します。
私は|from yaml
でタスクを作ってからignore_errors: true
を追加することができますが、それはちょうどそれが正しいと感じられません。
誰でも私がこの問題にどのようにアプローチできるかについてのヒントはありますか?
あなたはYAMLがJSONのスーパーセットであることにご存じでしょうか?そのため、JSONドキュメントをYAMLとしてロードするだけでいいですか? – flyx
はい、私はどのようにするか分からなかった。 – Amit
ちょうど 'from_yaml'を使ってください。 – flyx