Вызовы Terraform REST API с помощью cURL - PullRequest
0 голосов
/ 05 июля 2018

Как лучше всего выполнять вызовы REST API от Terraform? В настоящее время я использую null_resource с инициатором local-exec для совершения вызова cURL:

resource "null_resource" "cloudability-setup" {
  provisioner "local-exec" {
      command = <<EOT
        curl -s -X POST https://api.cloudability.com/v3/vendors/aws/accounts \
             -H 'Content-Type: application/json' \
             -u "$${CldAbltyAPIToken:?Missing Cloudability API Token Env Variable}:" \
             -d '{"vendorAccountId": "${data.aws_caller_identity.current.account_id}", "type": "aws_role" }'
EOT
  }

Однако код возврата cURL успешен для ответов HTTP 200 и HTTP 400. Я хочу, чтобы ресурс был помечен как сбойный, если новая учетная запись не может быть зарегистрирована.

Я попытался вернуть только HTTP-код ответа:

resource "null_resource" "cloudability-setup" {
  provisioner "local-exec" {
      command = <<EOT
        curl -s -o /dev/null -w "%{http_code}" \
             -X POST https://api.cloudability.com/v3/vendors/aws/accounts \
             -H 'Content-Type: application/json' \
             -u "$${CldAbltyAPIToken:?Missing Cloudability API Token Env Variable}:" \
             -d '{"vendorAccountId": "${data.aws_caller_identity.current.account_id}", "type": "aws_role" }'
EOT
  }

Но тогда я теряю тело ответа API, которое содержит ценную информацию. Бывают также случаи, когда код HTTP 400 указывает, что учетная запись уже существует, что я считаю успешным с точки зрения общей установки.

1 Ответ

0 голосов
/ 23 июля 2018

Я не использовал его сам, но это может быть полезно для вас: https://github.com/Mastercard/terraform-provider-restapi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...