Open3

HCP Packer API を使う (authentication)

jrsyojrsyo

HCP (HashiCorp Cloud Platform) Packer では公開 API が提供されています:

https://cloud.hashicorp.com/api-docs/packer

これらの公開 API を使うことで、外部ツールとの連携も簡単になりますが、現時点では API の Authentication に関する情報がうまくドキュメント化されていません。ドキュメント化するようリクエストを上げています。

jrsyojrsyo

マニュアルで OAuth 2.0 access token を取得するには、まず HCP のコンソールから Service Principal Key を生成し、Client ID および Client secret を用意します。詳細なステップは下記のドキュメントから:

https://cloud.hashicorp.com/docs/hcp/access-control/service-principals#generating-a-service-principal-key

次に、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_typeclient_credentials
  • audiencehttps://api.hashicorp.cloud

レスポンスに access token が含まれているので、これを使うことで API へのリクエストが可能になります。
Authorization ヘッダーに Bearer token としてこの token を含めます。curl であれば、

-H 'Authorization: Bearer <your_access_token>'

のようになりますね。