IBM Cloud和terraform:如何创建和下载API密钥?

问题描述

使用IBM Cloud provider plug-in for terraform可以进行access the current authentication token

data "ibm_iam_auth_token" "tokendata" {}

我还成功创建了一个服务ID。

resource "ibm_iam_service_id" "serviceID" {
  name        = "test"
  description = "New ServiceID"
}

如何创建API密钥,下载并使用它在服务ID下运行下一个terraform apply

解决方法

该任务有些棘手,因为该插件不会返回iam_id for service IDs,only the unique ID

有两个选项。一种是将NULL资源与 curl jq 一起使用

  1. 首先获取服务ID详细信息,包括iam_id,
  2. 然后通过POST创建API密钥。

1的代码段可能看起来像这样:

$dateTime = new \DateTime('NOW');

另一种选择是利用以下事实:iam_id似乎只是前缀$i = 1; while (1) { $ccp = new IPPCreditCardPaymentTxn(); $ccp->TxnData = $dateTime; $BankAccountRef = new IPPReferenceType(); $BankAccountRef->value = "35"; $BankAccountRef->name = "null"; $ccp->BankAccountRef = $BankAccountRef; $CreditCardAccountRef = new IPPReferenceType(); $CreditCardAccountRef->value = "41"; $CreditCardAccountRef->name = "null"; $ccp->CreditCardAccountRef = $CreditCardAccountRef; $ccp->Amount = 10; $result = $dataService->add($ccp); echo "<br> Result id is: " .$result->Id . "<br><br>"; $error = $dataService->getLastError(); if ($error) { echo "The Status: " . $error->getHttpStatusCode() . "<br><br>"; echo "The Helper: " . $error->getOAuthHelperError() . "<br><br>"; echo "The Response: " . $error->getResponseBody() . "<br><br>"; } else { var_dump($result); } exit; }后跟唯一ID。因此,以下对我有用:

data have;
input DATE:date9. RATE;
format DATE date9.;
datalines;
31DEC2014 .    
31DEC2015 .    
31DEC2016 .    
31DEC2017 0.1600
31DEC2018 0.1700
31DEC2019 0.1770
;

proc sql;
   create table want as
   select DATE,case rate
             when . then (select rate from have(where=(rate))
                          having date=min(date))
             else rate
          end as rate
   from have;
quit;

更新:使用此recent release,返回 iam_id 并可以直接对其进行寻址:

resource "null_resource" "devops_iam_id" {
  // Get iam_id for service ID
  provisioner "local-exec" {
    command = "curl -X GET 'https://iam.cloud.ibm.com/v1/serviceids/${ibm_iam_service_id.myServiceID.id}' -H 'Authorization: ${data.ibm_iam_auth_token.iam_tokendata.iam_access_token}' -H 'Content-Type: application/json' | jq '.iam_id'"
  }
}

可以使用IAM token data source获得必需的Bearer令牌:

iam-

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...