{"id":48648,"date":"2023-05-29T00:09:53","date_gmt":"2023-08-20T11:59:10","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/"},"modified":"2024-04-30T06:26:59","modified_gmt":"2024-04-29T22:26:59","slug":"%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/","title":{"rendered":"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b"},"content":{"rendered":"<p>\u8fd1\u671f\u6709\u4e00\u7bc7\u535a\u5ba2\u6587\u7ae0\u4ecb\u7ecd\u4e86\u5c06IBM Cloud\u4f5c\u4e3aTerraform\u7684\u540e\u7aef\u4f7f\u7528\u7684\u6587\u6863\u3002<\/p>\n<p>\u5c06 Terraform \u72b6\u6001\u5b58\u50a8\u5728\u4e91\u5bf9\u8c61\u5b58\u50a8\u4e2d\u3002<br \/>\nhttps:\/\/www.ibm.com\/cloud\/blog\/store-terraform-states-cloud-object-storage<\/p>\n<p>\uff08\u8c37\u6b4c\u7ffb\u8bd1\u7684\u94fe\u63a5\uff09https:\/\/www-ibm-com.translate.goog\/cloud\/blog\/store-terraform-states-cloud-object-storage?_x_tr_sl=en&amp;_x_tr_tl=ja&amp;_x_tr_hl=ja&amp;_x_tr_pto=wapp\u7684\u5185\u5bb9\u53ef\u4ee5\u88ab\u7b80\u8981\u5730\u6982\u62ec\u4e3a\uff1a\u4f7f\u7528\u4e91\u5bf9\u8c61\u5b58\u50a8\u5b58\u50a8Terraform\u72b6\u6001\u3002<\/p>\n<p>\u6211\u5728\u4e0b\u9762\u63d0\u5230\u4e86\u4e00\u79cd\u65b9\u6cd5\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">AWS S3 backend\u306e\u4ed5\u7d44\u307f\u3092\u6d41\u7528\u3057\u3066\u3001Terraform\u306e\u72b6\u614b\u3092IBMCloudObjectStorage\u306b\u4fdd\u7ba1\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">http\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u5229\u7528\u3057\u3066\u3001\u30b5\u30fc\u30d0\u30fc\u30ec\u30b9Terraform\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30ed\u30c3\u30af\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3092\u8ffd\u52a0\u3059\u308b<\/ul>\n<p>\u5728\u8fd9\u91cc\uff0c\u5173\u4e8e\u540e\u4e00\u79cd\u65b9\u6cd5\u7684\u6b65\u9aa4\u5df2\u7ecf\u5728 GitHub \u4e0a\u516c\u5f00\uff0c\u6240\u4ee5\u6211\u5c1d\u8bd5\u4f7f\u7528\u4e86\u5b83\uff0c\u770b\u770b\u662f\u4ec0\u4e48\u6837\u5b50\u7684\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u6b64\u5916\uff0c\u5c3d\u7ba1\u5728\u672c\u6b21\u60c5\u51b5\u4e0b\u6211\u4eec\u6ca1\u6709\u4f7f\u7528 local_file \u8d44\u6e90\uff0c\u4f46\u662f\u5728 IBM Cloud \u4e0a\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a Schematics \u7684 Terraform \u670d\u52a1\u3002\u5728\u4f7f\u7528\u8be5\u670d\u52a1\u65f6\uff0c\u540e\u7aef\u4f1a\u88ab\u81ea\u52a8\u7ba1\u7406\u3002<\/p>\n<h1>\u7ed9\u51fa\u4e00\u4e2a\u9009\u62e9\u53ea\u9700\u8981\u6570\u4e00\u4e2a\u524d\u63d0<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">IBM Cloud\u30a2\u30ab\u30a6\u30f3\u30c8\u30fb\u30bf\u30a4\u30d7<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5c11\u306a\u304f\u3068\u3082\u30ea\u30bd\u30fc\u30b9\u30fb\u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u6210\u3057\u305f\u308a\u3059\u308b\u70ba\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u30fb\u30bf\u30a4\u30d7\u306f\u300c\u5f93\u91cf\u8ab2\u91d1\u300d\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30a2\u30ab\u30a6\u30f3\u30c8\u30fb\u30bf\u30a4\u30d7\u300c\u30e9\u30a4\u30c8 (\u7121\u6599)\u300d\u3067\u306f\u30ea\u30bd\u30fc\u30b9\u30fb\u30b0\u30eb\u30fc\u30d7\u304c\uff11\u3064\u306e\u307f\u306e\u70ba\u3001\u30ea\u30bd\u30fc\u30b9\u30fb\u30b0\u30eb\u30fc\u30d7\u8ffd\u52a0\u306e\u3042\u305f\u308a\u3067\u5931\u6557\u3057\u3066\u3044\u307e\u3059\u3002<\/ul>\n<p>\u8ffd\u52a0\u8bf4\u660e\uff1a<br \/>\n\u60a8\u53ef\u4ee5\u901a\u8fc7\u5728010-prepare-backend\/terraform.tfvars\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\uff0c\u4e3a\u8f7b\u91cf\u7ea7\u8ba1\u5212\u7684\u9ed8\u8ba4\u8d44\u6e90\u7ec4\uff08Default\uff09\u521b\u5efa\u540e\u7aef\uff08\u8be5\u529f\u80fd\u5c1a\u672a\u5728\u8f7b\u91cf\u7ea7\u8ba1\u5212\u4e2d\u8fdb\u884c\u9a8c\u8bc1\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code>resource_group=\"Default\"\r\n<\/code><\/pre>\n<h1>\u9a8c\u8bc1\u73af\u5883<\/h1>\n<p>\u4f7f\u7528\u672c\u5730\u7684Terraform\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Fedora Linux 35 (Workstation Edition)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Terraform v1.1.9<\/ul>\n<h1>\u6b65\u9aa4<\/h1>\n<p>\u8bf7\u6309\u7167 README.md \u7684\u8bf4\u660e\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2>\u514b\u9686\u7528\u4e8e\u9a8c\u8bc1\u7684\u4ee3\u7801\u5e76\u7f16\u8f91IBM Cloud\u5b9a\u4e49\u4fe1\u606f\u3002<\/h2>\n<pre class=\"post-pre\"><code>$ git clone git@github.com:l2fprod\/serverless-terraform-backend.git\r\n...\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ cd serverless-terraform-backend\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ tree .\r\n.\r\n\u251c\u2500\u2500 010-prepare-backend  # &lt;= http\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u69cb\u6210\u7528tf\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 backend.js\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 main.tf\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 terraform.tfvars.template\r\n\u251c\u2500\u2500 020-use-backend.     # &lt;= http\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u5229\u7528\u3059\u308btf\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 backend.tf\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 main.tf\r\n\u251c\u2500\u2500 LICENSE\r\n\u251c\u2500\u2500 README.md\r\n\u251c\u2500\u2500 terraform\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 backend.tf\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 main.tf\r\n\u2514\u2500\u2500 xdocs\r\n    \u251c\u2500\u2500 architecture.drawio\r\n    \u2514\u2500\u2500 step-010.png\r\n\r\n4 directories, 11 files\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ cd 010-prepare-backend\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ cp terraform.tfvars.template terraform.tfvars\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ vi terraform.tfvars\r\n...\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code># IBM Cloud API key\r\nibmcloud_api_key=\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"\r\n\r\n# Prefix for the resources to be created\r\nbasename=\"terraform-backend\"\r\n\r\n# Region where to create resources\r\nregion=\"us-south\"\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">ibmcloud_api_key<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30e6\u30fc\u30b6\u30fc\u3084\u30b5\u30fc\u30d3\u30b9ID(\u300c\u6a5f\u80fd ID\u300d\u307e\u305f\u306f\u300c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 ID\u300d\u306e\u3088\u3046\u306a\u3082\u306e\u3002\u30e6\u30fc\u30b6\u30fc\u3092\u8868\u3059\u305f\u3081\u3067\u306f\u306a\u304f\u3001\u30b5\u30fc\u30d3\u30b9\u306e\u8a8d\u8a3c\u306e\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u3002)\u306b\u5bfe\u5fdc\u3059\u308b\u3001\u305d\u306e\u6a29\u9650\u3067\u306e\u51e6\u7406\u3092\u884c\u3046\u305f\u3081\u306ekey\u3067\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">IBM Cloud\u306e\u30ed\u30b0\u30a4\u30f3\u5f8c\u306e\u30da\u30fc\u30b8\u306b\u304a\u3051\u308b\u4e0a\u90e8\u306e\u300c\u7ba1\u7406\u300d\u3092\u9078\u629e\u3059\u308b\u3068\u30d7\u30eb\u30c0\u30a6\u30f3\u3057\u3066\u304f\u308b\u30b5\u30d6\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u300c\u30a2\u30af\u30bb\u30b9(IAM)\u300d\u3092\u9078\u629e\u5f8c\u3001\u5de6\u306e\u30b5\u30d6\u30e1\u30cb\u30e5\u30fc\u306e\u300cAPI\u30ad\u30fc\u300d\u3092\u9078\u629e\u3057\u3001\u9752\u3044\u300cIBM Cloud API\u30ad\u30fc\u306e\u4f5c\u6210\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u4f5c\u6210\u53ef\u80fd\u3067\u3059\u3002<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">basename<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u3053\u306e\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u4f5c\u6210\u3055\u308c\u308b\u8cc7\u6e90\u306a\u3069\u306e\u540d\u524d\u306e\u63a5\u982d\u8a9e\u3068\u306a\u308a\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u691c\u8a3c\u74b0\u5883\u56fa\u6709\u306e\u554f\u984c\u306e\u53ef\u80fd\u6027\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u5143\u306eserverless-terraform-backend\u3067\u306fterraform apply\u6642\u306b\u4ee5\u4e0b\u306e\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\u70ba\u3001\u3053\u3053\u3067\u306fterraform-backend\u3068\u3057\u3066\u3044\u307e\u3059\u3002<\/ul>\n<pre class=\"post-pre\"><code>\u2502 Error: BucketAlreadyExists: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">region<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u7279\u306b\u7de8\u96c6\u3057\u3066\u3044\u307e\u305b\u3093\u3002us-south\u306f\u30c0\u30e9\u30b9\u3068\u306a\u308a\u307e\u3059\u3002<\/ul>\n<h2>\u901a\u8fc7terraform apply\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u5b9a\u4e49\u540e\u7aef\u670d\u52a1\u548c\u914d\u7f6e\u5728\u4f7f\u7528\u540e\u7aef\u65f6\u6240\u9700\u7684\u73af\u5883\u53d8\u91cf\u7684\u6587\u4ef6\u3002<\/h2>\n<pre class=\"post-pre\"><code>$ terraform init \r\n...\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ terraform apply --auto-approve \r\n...\r\n\r\nApply complete! Resources: 8 added, 0 changed, 0 destroyed.\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ ls\r\nbackend.js  main.tf  terraform.tfstate  terraform.tfvars  terraform.tfvars.template\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ awk '$1 == \"resource\"' main.tf | cat -n\r\n     1\tresource \"ibm_resource_group\" \"group\" {\r\n     2\tresource \"ibm_resource_instance\" \"cos\" {\r\n     3\tresource \"ibm_resource_key\" \"cos_key\" {\r\n     4\tresource \"ibm_cos_bucket\" \"bucket\" {\r\n     5\tresource \"ibm_function_namespace\" \"namespace\" {\r\n     6\tresource \"ibm_function_package\" \"package\" {\r\n     7\tresource \"ibm_function_action\" \"backend\" {\r\n     8\tresource \"local_file\" \"backend-config\" {\r\n<\/code><\/pre>\n<p>\u5728IBM Cloud\u4e0a\uff0c\u521b\u5efa\u4e86\u4e00\u4e2a\u5b58\u50a8tfstate\u6587\u4ef6\u7684\u5b58\u50a8\u6876\uff08terraform-backend-bucket\uff09\uff0c\u4e00\u4e2a\u7528\u4e8e\u4fdd\u5b58tfstate\u6587\u4ef6\u7684Web\u52a8\u4f5c\uff08terraform-backend-package\/backend\uff09\uff0c\u4ee5\u53ca\u5176\u4ed67\u4e2a\u8d44\u6e90\u548c\u4e00\u4e2a\u672c\u5730\u6587\u4ef6\u3002\u8fd9\u4e2aapply\u53ea\u662f\u4e3a\u4e86\u51c6\u5907http\u540e\u7aef\uff0c\u5e76\u4e14\u6b64\u65f6\u7684terraform.tfstate\u6587\u4ef6\u88ab\u653e\u7f6e\u5728\u672c\u5730\u3002<\/p>\n<h2>\u4f7f\u7528 Terraform apply \u8fdb\u884c\u6d4b\u8bd5\uff0c\u4f7f\u7528\u4e86\u7531 HTTP \u540e\u7aef\u6784\u6210\u7684\u3002<\/h2>\n<pre class=\"post-pre\"><code>$ cd ..\/020-use-backend\/\r\n\r\n$ ls\r\nbackend.env  backend.tf  main.tf\r\n<\/code><\/pre>\n<p>backend.env\u662f\u4e00\u4e2a\u7528\u4e8e\u8bbe\u7f6ehttp\u540e\u7aef\u6240\u9700\u73af\u5883\u53d8\u91cf\u7684\u811a\u672c\u6587\u4ef6\uff0c\u8be5\u6587\u4ef6\u901a\u8fc7\u5148\u524d\u7684terraform apply\u547d\u4ee4\u521b\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code># TF_HTTP_ADDRESS points to the Cloud Functions action implementing the backend.\r\n# It is reused for locking implementation too.\r\n#\r\n# env: name for the terraform state, e.g mystate, us\/south\/staging (.tfstate will be added automatically)\r\n# versioning: set to true to keep multiple copies of the states in the storage\r\nexport TF_HTTP_ADDRESS=\"https:\/\/us-south.functions.cloud.ibm.com\/api\/v1\/web\/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\/terraform-backend-package\/backend?env=dev&amp;versioning=true\"\r\nexport TF_HTTP_PASSWORD=\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"\r\n\r\n# comment the following variables to disable locking\r\nexport TF_HTTP_LOCK_ADDRESS=$TF_HTTP_ADDRESS\r\nexport TF_HTTP_UNLOCK_ADDRESS=$TF_HTTP_ADDRESS\r\n<\/code><\/pre>\n<p>\u540e\u7aef\u662f\u901a\u8fc7\u4ee5\u4e0b\u7684 tf \u6587\u4ef6\u5b9a\u4e49\u7684\u3002<br \/>\n\u57fa\u672c\u4e0a\u8fd9\u91cc\u4e0d\u9700\u8981\u66f4\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform {\r\n  backend \"http\" {\r\n    # See backend.env for configuration of the following fields:\r\n    # address\r\n    # lock_address\r\n    # unlock_address\r\n    # password\r\n\r\n    # Do not change the following\r\n    username = \"cos\"\r\n    update_method          = \"POST\"\r\n    lock_method            = \"PUT\"\r\n    unlock_method          = \"DELETE\"\r\n    skip_cert_verification = \"false\"\r\n  }\r\n}\r\n<\/code><\/pre>\n<p>\u4e3b\u8981\u7684tf\u6587\u4ef6<\/p>\n<pre class=\"post-pre\"><code>resource \"local_file\" \"file\" {\r\n  content = \"hello\"\r\n  filename = \"hello.txt\"\r\n}\r\n<\/code><\/pre>\n<h1>\u5728\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u4e4b\u540e\uff0c\u5bf9\u4f7f\u7528\u4e91\u5b58\u50a8\u7684\u540e\u7aef\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u6d4b\u8bd5\u3002<\/h1>\n<pre class=\"post-pre\"><code>$ source backend.env\r\n<\/code><\/pre>\n<p>\u5982\u679c\u662fbash\u73af\u5883\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528backend.env\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform init \r\n\r\nInitializing the backend...\r\n\r\nSuccessfully configured the backend \"http\"! Terraform will automatically\r\nuse this backend unless the backend configuration changes.\r\n\r\nInitializing provider plugins...\r\n- Finding latest version of hashicorp\/local...\r\n- Installing hashicorp\/local v2.2.2...\r\n- Installed hashicorp\/local v2.2.2 (signed by HashiCorp)\r\n\r\nTerraform has created a lock file .terraform.lock.hcl to record the provider\r\nselections it made above. Include this file in your version control repository\r\nso that Terraform can guarantee to make the same selections by default when\r\nyou run \"terraform init\" in the future.\r\n\r\nTerraform has been successfully initialized!\r\n\r\nYou may now begin working with Terraform. Try running \"terraform plan\" to see\r\nany changes that are required for your infrastructure. All Terraform commands\r\nshould now work.\r\n\r\nIf you ever set or change modules or backend configuration for Terraform,\r\nrerun this command to reinitialize your working directory. If you forget, other\r\ncommands will detect it and remind you to do so if necessary.\r\n<\/code><\/pre>\n<p>\u6b63\u5728\u521d\u59cb\u5316\u540e\u7aef&#8230;<br \/>\n\u6210\u529f\u914d\u7f6e\u540e\u7aef&#8221;http&#8221;\uff01Terraform \u5c06\u81ea\u52a8\u4f7f\u7528\u8fd9\u4e2a\u540e\u7aef\uff0c\u9664\u975e\u540e\u7aef\u914d\u7f6e\u53d1\u751f\u66f4\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply --auto-approve \r\nAcquiring state lock. This may take a few moments...\r\n\r\nTerraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following\r\nsymbols:\r\n  + create\r\n\r\nTerraform will perform the following actions:\r\n\r\n  # local_file.file will be created\r\n  + resource \"local_file\" \"file\" {\r\n      + content              = \"hello\"\r\n      + directory_permission = \"0777\"\r\n      + file_permission      = \"0777\"\r\n      + filename             = \"hello.txt\"\r\n      + id                   = (known after apply)\r\n    }\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\nlocal_file.file: Creating...\r\nlocal_file.file: Creation complete after 0s [id=aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d]\r\nReleasing state lock. This may take a few moments...\r\n\r\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ ls\r\nbackend.env  backend.tf  hello.txt  main.tf\r\n<\/code><\/pre>\n<p>\u6309\u7167\u9884\u671f\uff0c\u5728\u672c\u5730\u6ca1\u6709\u521b\u5efaterraform.tfstate\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>$ cat hello.txt; echo\r\nhello\r\n<\/code><\/pre>\n<p>\u4eceIBM Cloud\u7684\u63a7\u5236\u53f0\u4e2d\u9009\u62e9\u8d44\u6e90\u5217\u8868\uff0c\u4ee5\u786e\u8ba4IBM Cloud\u4e0a\u7684\u5bf9\u8c61\u5b58\u50a8\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d867a913a08637a6bd1db\/55-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-05-10 12.20.38.png\" \/><\/div>\n<p>\u4ece\u8d44\u6e90\u5217\u8868\u4e2d\u9009\u62e9\u521b\u5efa\u7684\u5bf9\u8c61\u5b58\u50a8\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d867a913a08637a6bd1db\/57-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-05-10 12.20.55.png\" \/><\/div>\n<p>\u5728\u6876\u4e2d\u521b\u5efa\u4e86tfstate\u6587\u4ef6\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d867a913a08637a6bd1db\/59-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-05-10 12.22.42.png\" \/><\/div>\n<p>\u76ee\u524d\u6709\u6548\u7684 tfstate \u6587\u4ef6\u662f states\/named\/dev.tfstate\u3002\u8fd9\u91cc\u7684dev\u662f\u5728backend.env\u4e2d\u901a\u8fc7 export TF_HTTP_ADDRESS= \u8bbe\u7f6e\u4e3a env=dev\u3002<\/p>\n<p>\u518d\u6b21\u7533\u8bf7\u5e76\u68c0\u67e5\u5bf9\u8c61\u5b58\u50a8\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply --auto-approve\r\nAcquiring state lock. This may take a few moments...\r\nlocal_file.file: Refreshing state... [id=aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d]\r\n\r\nNo changes. Your infrastructure matches the configuration.\r\n\r\nTerraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.\r\nReleasing state lock. This may take a few moments...\r\n\r\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\r\n\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d867a913a08637a6bd1db\/63-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-05-10 12.25.38.png\" \/><\/div>\n<p>\u4ee5\u4e0b\u662f\u5907\u4efd\u7684\u7248\u672c\/named\/dev-2.tfstate\u548c\/named\/dev-3.tfstate\u3002<\/p>\n<p>\u8bf7\u67e5\u770b010-prepare-backend\/backend.js\u6587\u4ef6\u6765\u4e86\u89e3\u903b\u8f91\u3002<\/p>\n<h1>\u5982\u679c\u4e0d\u4f7f\u7528\u73af\u5883\u53d8\u91cf<\/h1>\n<p>\u53ef\u4ee5\u76f4\u63a5\u5728tf\u6587\u4ef6\u4e2d\u7f16\u5199\u3002<br \/>\n\u662f\u5426\u53ef\u4ee5\u5199\u5165\u5bc6\u7801\u7b49\u662f\u4ee4\u4eba\u72b9\u8c6b\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">terraform<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">backend<\/span> <span class=\"s2\">\"http\"<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">address<\/span>                <span class=\"p\">=<\/span> <span class=\"s2\">\"https:\/\/us-south.functions.cloud.ibm.com\/api\/v1\/web\/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\/terraform-backend-package\/backend?env=dev&amp;versioning=true\"<\/span>\r\n    <span class=\"nx\">lock_address<\/span>           <span class=\"p\">=<\/span> <span class=\"s2\">\"https:\/\/us-south.functions.cloud.ibm.com\/api\/v1\/web\/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\/terraform-backend-package\/backend?env=dev&amp;versioning=true\"<\/span>\r\n    <span class=\"nx\">unlock_address<\/span>         <span class=\"p\">=<\/span> <span class=\"s2\">\"https:\/\/us-south.functions.cloud.ibm.com\/api\/v1\/web\/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\/terraform-backend-package\/backend?env=dev&amp;versioning=true\"<\/span>\r\n    <span class=\"nx\">password<\/span>               <span class=\"p\">=<\/span> <span class=\"s2\">\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"<\/span>\r\n    <span class=\"nx\">username<\/span>               <span class=\"p\">=<\/span> <span class=\"s2\">\"cos\"<\/span>\r\n    <span class=\"nx\">update_method<\/span>          <span class=\"p\">=<\/span> <span class=\"s2\">\"POST\"<\/span>\r\n    <span class=\"nx\">lock_method<\/span>            <span class=\"p\">=<\/span> <span class=\"s2\">\"PUT\"<\/span>\r\n    <span class=\"nx\">unlock_method<\/span>          <span class=\"p\">=<\/span> <span class=\"s2\">\"DELETE\"<\/span>\r\n    <span class=\"nx\">skip_cert_verification<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"false\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<\/code><\/pre>\n<h1>\u662f\u5426\u53ef\u4ee5\u53cd\u8fc7\u6765\u5c1d\u8bd5\u5c06\u5b83\u9003\u9038\u5230\u73af\u5883\u53d8\u91cf\u4e2d\u5c3d\u53ef\u80fd\u591a\uff1f<\/h1>\n<p>&nbsp;<\/p>\n<p>\u66f4\u52a0\uff0c\u989d\u5916\u6dfb\u52a0<\/p>\n<pre class=\"post-pre\"><code>export TF_HTTP_USERNAME=\"cos\"\r\nexport TF_HTTP_LOCK_METHOD=\"PUT\"\r\nexport TF_HTTP_UNLOCK_METHOD=\"DELETE\"\r\n<\/code><\/pre>\n<p>\u5982\u679c\u8bbe\u5b9a\u4e3a<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">terraform<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">backend<\/span> <span class=\"s2\">\"http\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u770b\u8d77\u6765\u4e0d\u9519\u3002<\/p>\n<h1>\u5370\u8c61<\/h1>\n<p>\u53ea\u8981\u7b80\u5355\u5730\u8fd0\u884c\u4e00\u4e0b\u5c31\u597d\u4e86\uff0c\u4e4b\u540e\u5c31\u53ef\u4ee5\u8f7b\u677e\u4e86\uff0c\u4f46\u8981\u5199\u6bd4\u60f3\u8c61\u4e2d\u66f4\u957f\u7684\u903b\u8f91\u624d\u80fd\u5b9e\u73b0\uff0c\u8fd9\u771f\u662f\u4ee4\u4eba\u70e6\u607c\u3002<\/p>\n<h1>Node.js \u7684\u7248\u672c<\/h1>\n<p>\u5728`010-prepare-backend\/main.tf`\u6587\u4ef6\u7684\u7b2c118\u884c\u4e2d\u8bbe\u7f6e\u4e86Node.js\u7684\u7248\u672c\u3002\u7136\u800c\uff0c\u76ee\u524d\u4e0d\u63a8\u8350\u4f7f\u7528Node.js 10\uff0c\u6839\u636e\u8be5\u6587\u6863\uff082022\/05\uff09\u7684\u8bf4\u660e\uff0c\u63a8\u8350\u4f7f\u7528Node.js 16\u3002<\/p>\n<pre class=\"post-pre\"><code>113 # the backend implementation\r\n114 resource \"ibm_function_action\" \"backend\" {\r\n115   name = \"${ibm_function_package.package.name}\/backend\"\r\n116   namespace = ibm_function_namespace.namespace.name\r\n117   exec {           \r\n118     kind = \"nodejs:16\"  # &lt;= nodejs:10(\u975e\u63a8\u5968)\u304b\u3089\u66f8\u304d\u63db\u3048\r\n119     code = file(\"backend.js\")\r\n120   }                \r\n121   publish = true   \r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd1\u671f\u6709\u4e00\u7bc7\u535a\u5ba2\u6587\u7ae0\u4ecb\u7ecd\u4e86\u5c06IBM Cloud\u4f5c\u4e3aTerraform\u7684\u540e\u7aef\u4f7f\u7528\u7684\u6587\u6863\u3002 \u5c06 Terraform  [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48648","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ibm-cloud\u6784\u5efa\u7684terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bhttp\u7c7b\u578b\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b\" \/>\n<meta property=\"og:description\" content=\"\u8fd1\u671f\u6709\u4e00\u7bc7\u535a\u5ba2\u6587\u7ae0\u4ecb\u7ecd\u4e86\u5c06IBM Cloud\u4f5c\u4e3aTerraform\u7684\u540e\u7aef\u4f7f\u7528\u7684\u6587\u6863\u3002 \u5c06 Terraform [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ibm-cloud\u6784\u5efa\u7684terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bhttp\u7c7b\u578b\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-20T11:59:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T22:26:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d867a913a08637a6bd1db\/55-0.png\" \/>\n<meta name=\"author\" content=\"\u65b0, \u97f5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u65b0, \u97f5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/\",\"name\":\"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-08-20T11:59:10+00:00\",\"dateModified\":\"2024-04-29T22:26:59+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\",\"name\":\"\u65b0, \u97f5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"caption\":\"\u65b0, \u97f5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ibm-cloud\u6784\u5efa\u7684terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bhttp\u7c7b\u578b\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b","og_description":"\u8fd1\u671f\u6709\u4e00\u7bc7\u535a\u5ba2\u6587\u7ae0\u4ecb\u7ecd\u4e86\u5c06IBM Cloud\u4f5c\u4e3aTerraform\u7684\u540e\u7aef\u4f7f\u7528\u7684\u6587\u6863\u3002 \u5c06 Terraform [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ibm-cloud\u6784\u5efa\u7684terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bhttp\u7c7b\u578b\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-08-20T11:59:10+00:00","article_modified_time":"2024-04-29T22:26:59+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d867a913a08637a6bd1db\/55-0.png"}],"author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/","name":"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-08-20T11:59:10+00:00","dateModified":"2024-04-29T22:26:59+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528IBM Cloud\u6784\u5efa\u7684Terraform\u540e\u7aef\u914d\u7f6e\uff0c\u5176\u4e2d\u5305\u542bHTTP\u7c7b\u578b"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9","name":"\u65b0, \u97f5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","caption":"\u65b0, \u97f5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ibm-cloud%e6%9e%84%e5%bb%ba%e7%9a%84terraform%e5%90%8e%e7%ab%af%e9%85%8d%e7%bd%ae%ef%bc%8c%e5%85%b6%e4%b8%ad%e5%8c%85%e5%90%abhttp%e7%b1%bb%e5%9e%8b%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48648"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48648\/revisions"}],"predecessor-version":[{"id":90251,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48648\/revisions\/90251"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}