皆さんこんにちは、
ボールトの approle auth メソッドからクライアント トークンをフェッチしようとしています。role-id と secret-id を取得し、それらを使用して auth/approle/login エンドポイントで client_token を取得するように consul-template を構成しました。本当に奇妙なのは、最初の 2 つのステップが正常に実行されてデータが返されたことですが、ここでは client_token を取得するのに苦労しています。Wireshark を使用してリクエストを分析し、client_token を要求するリクエストの応答を確認したところ、client_token が含まれている json の結果が明確に示されています。しかし、consul テンプレートは return を認識し、次の結果が得られます。
{322a47b9-bf23-193d-8117-228637253fde 0 false map[] [] 0xc42001cf50 <nil>}
.
同じ方法で secret-id をリクエストしますが、consul-template はそれを正常に返し、json オブジェクトを認識しました。変じゃないですか!
領事のテンプレートは次のとおりです。
{{define "token" }}
{{ with secret "auth/approle/role/python-role/role-id" }}{{ $role:= (print "role_id= " .Data.role_id) }}
{{ with secret "auth/approle/role/python-role/secret-id" "role_name= python-role" }}{{ $secret:= (print "secret_id= " .Data.secret_id) }}
{{- with secret "auth/approle/login/" $role $secret -}}{{ . }}{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{template "token"}}
また、以下は、リクエストが正しく行われたことを確認するために使用した Wireshark トレース です。前もって感謝します。