Open3
HCP Packer API を使う (authentication)
HCP (HashiCorp Cloud Platform) Packer では公開 API が提供されています:
これらの公開 API を使うことで、外部ツールとの連携も簡単になりますが、現時点では API の Authentication に関する情報がうまくドキュメント化されていません。ドキュメント化するようリクエストを上げています。
マニュアルで OAuth 2.0 access token を取得するには、まず HCP のコンソールから Service Principal Key を生成し、Client ID および Client secret を用意します。詳細なステップは下記のドキュメントから:
次に、Client ID と Client secret を使って access token を取得します。curl での簡単な例は下記の通り:
$ curl -s -u '$HCP_CLIENT_ID:$HCP_CLIENT_SECRET' \
--data 'grant_type=client_credentials&audience=https://api.hashicorp.cloud' \
'https://auth.hashicorp.com/oauth/token' | jq
{
"access_token": "your_access_token_here",
"expires_in": 3600,
"token_type": "Bearer"
}
https://auth.hashicorp.com/oauth/token
がエンドポイントの URL になります。
-
grant_type
はclient_credentials
-
audience
にhttps://api.hashicorp.cloud
レスポンスに access token が含まれているので、これを使うことで API へのリクエストが可能になります。
Authorization
ヘッダーに Bearer token としてこの token を含めます。curl であれば、
-H 'Authorization: Bearer <your_access_token>'
のようになりますね。
ちなみに、HCP API を便利に使うための SDK (Go lang) も公開されています。
SDK を使うと認証部分はよしなにやってくれます。実際の実装はこのあたり: