{"id":48885,"date":"2022-12-15T16:38:40","date_gmt":"2023-02-06T22:16:48","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/"},"modified":"2024-04-29T05:25:41","modified_gmt":"2024-04-28T21:25:41","slug":"%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/","title":{"rendered":"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5"},"content":{"rendered":"<h2>\u5728Terraform\u7684\u540e\u7aef\u6709\u8bb8\u591a\u9009\u62e9\u3002<\/h2>\n<p>\u6839\u636eTerraform Backend Types\u4e2d\u6240\u5217\u4e3e\u7684\uff0cTerraform\u7684\u8fdc\u7a0b\u540e\u7aef\u6709\u591a\u79cd\u9009\u62e9\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">artifactory<\/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\">azurerm<\/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\">consul<\/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\">etcd<\/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\">etcdv3<\/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\">gcs<\/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\">http<\/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\">manta<\/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\">s3<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">swift<\/ul>\n<p>\u55ef\uff0c\u5c31\u8fd9\u6837\u5427\u3002<br \/>\n\u8fd9\u6b21\u6211\u8c03\u67e5\u4e86\u8fd9\u4e2a\u3002<\/p>\n<p>\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u4f7f\u7528\u672c\u5730\u540e\u7aef\uff0c\u5e76\u4fdd\u5b58\u5728\u540d\u4e3aterraform.tfstate\u7684\u6587\u4ef6\u4e2d\u3002<\/p>\n<h2>\u6211\u60f3\u67e5\u4e00\u4e0b\u5173\u4e8eHTTP\u7684\u4fe1\u606f\u3002<\/h2>\n<p>\u6211\u8ba4\u4e3a\u6bd4\u8f83\u5b9e\u7528\u7684\u662fS3\u548cSwift\uff0c\u4f46\u6211\u51b3\u5b9a\u53bb\u4ed4\u7ec6\u7814\u7a76\u4e00\u4e0bHTTP\u3002<\/p>\n<p>\u5f8c\u7aef\uff08http\u7de8\u7a0b\uff09<\/p>\n<p>\u6211\u770b\u4e86\u5199\u5728\u8fd9\u91cc\u7684\u201c\u793a\u4f8b\u7528\u6cd5\u201d\u548c\u201c\u793a\u4f8b\u53c2\u8003\u201d\uff0c\u5b8c\u5168\u4e0d\u61c2\u5462\u3002<\/p>\n<p>\u5728HTTP\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u5e94\u8be5\u9001\u4ec0\u4e48\uff0c\u5e76\u4e14\u8981\u6c42\u4ec0\u4e48\u6837\u7684\u56de\u5e94\u624d\u53ef\u4ee5\u5462\uff1f\u5b8c\u5168\u4e0d\u6e05\u695a\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u9996\u5148\u642d\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u6d4b\u8bd5\u670d\u52a1\u5668\uff0c\u7136\u540e\u4f7f\u7528Charles\u8fdb\u884c\u6355\u83b7\uff0c\u770b\u662f\u5426\u80fd\u591f\u7406\u89e3\u3002<\/p>\n<h3>\u9996\u5148\u9700\u8981\u66f4\u6539tf\u6587\u4ef6\u7684\u540e\u7aef\u8bbe\u7f6e\u3002<\/h3>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6211\u4e4b\u524d\u7528Terraform\u6709\u4e00\u4e2a.tf\u6587\u4ef6\uff0c<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u7136\u540e\u6211\u53ea\u662f\u7b80\u5355\u5730\u5728\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4e86\u540e\u7aef\u3002<\/ol>\n<p>\u8fd9\u6837\u505a\u7684\u8bdd\u5c31\u4f1a\u53d8\u6210\u8fd9\u6837\u3002<\/p>\n<pre class=\"post-pre\"><code>provider \"openstack\" {\r\n  auth_url          = \"*****\"\r\n  user_name         = \"*****\"\r\n  tenant_id         = \"*****\"\r\n  tenant_name       = \"*****\"\r\n  password          = \"*****\"\r\n  user_domain_id    = \"*****\"\r\n  project_domain_id = \"*****\"\r\n}\r\n\r\nterraform {\r\n  backend \"http\" {\r\n    address = \"http:\/\/localhost.com:5000\"\r\n  }\r\n}\r\n\r\nresource \"openstack_compute_keypair_v2\" \"my_kp_1\" {\r\n  name = \"terraform-kp-1\"\r\n}\r\n\r\n<\/code><\/pre>\n<p>\u53ea\u9700\u8981\u4e00\u79cd\u9009\u62e9\uff0c\u5bf9\u4e8e\u4ee5\u4e0b\u539f\u6587\u8fdb\u884c\u4e2d\u6587\u91ca\u4e49\uff1a\u8db3\u3057\u305f\u306e\u306f\u3002<\/p>\n<p>\u52a0\u8d77\u6765\u7684\u662f\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform {\r\n  backend \"http\" {\r\n    address = \"http:\/\/localhost.com:5000\"\r\n  }\r\n}\r\n<\/code><\/pre>\n<p>\u9019\u4e00\u90e8\u5206\u3002<\/p>\n<p>\u5728backend\u4e2d\u51fa\u73b0\u4e86\u4e00\u4e2a\u540d\u4e3alocalhost.com\u7684\u4e3b\u673a\u540d\uff0c\u4f46\u662f\u901a\u8fc7hosts\u6587\u4ef6\u5c06\u5176\u89e3\u6790\u4e3a127.0.0.1\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u4e0d\u80fd\u4fdd\u6301localhost\u5462\uff1f\u539f\u56e0\u662f\u5982\u679c\u4fdd\u6301localhost\u7684\u8bdd\uff0cCharles\u5c31\u65e0\u6cd5\u8fdb\u884c\u6355\u83b7\u4e86\u3002<\/p>\n<p>\u4f5c\u4e3a\u8fd9\u4e2a\u89e3\u51b3\u65b9\u6848\uff0c\u4ece\u6d4f\u89c8\u5668\u4e2d\uff0c\u6216\u8005\u5728localhost\u540e\u9762\u52a0\u4e0a&#8221;.&#8221;\u8fdb\u884c\u622a\u56fe\u53ef\u80fd\u662f\u53ef\u884c\u7684\uff0c\u4f46\u662f\u5728Terraform\u4e2d\u4f3c\u4e4e\u4e0d\u884c\u3002<\/p>\n<h3>\u63a5\u4e0b\u6765\u521b\u5efa\u4e00\u4e2a\u8bf7\u6c42\u76ee\u6807<\/h3>\n<p>\u6211\u5e0c\u671blocalhost.com:5000\u80fd\u591f\u6536\u5230\u4e00\u4e9bHTTP\u8bf7\u6c42\u3002<\/p>\n<p>\u6240\u4ee5\uff0c\u6211\u5c1d\u8bd5\u5236\u4f5c\u4e86\u4e00\u4e2a\u8fd9\u6837\u7684Flask\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">make_response<\/span><span class=\"p\">,<\/span> <span class=\"n\">Flask<\/span>\r\n\r\n<span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Flask<\/span><span class=\"p\">(<\/span><span class=\"n\">__name__<\/span><span class=\"p\">)<\/span>\r\n\r\n\r\n<span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">'\/'<\/span><span class=\"p\">)<\/span>\r\n<span class=\"k\">def<\/span> <span class=\"nf\">hello<\/span><span class=\"p\">():<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"n\">make_response<\/span><span class=\"p\">()<\/span>\r\n\r\n\r\n<span class=\"k\">if<\/span> <span class=\"n\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"__main__\"<\/span><span class=\"p\">:<\/span>\r\n    <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">run<\/span><span class=\"p\">(<\/span><span class=\"n\">debug<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u628a\u8fd9\u4e2a\u542f\u52a8\u8d77\u6765\u3002<\/p>\n<pre class=\"post-pre\"><code>% python \/path\/to\/flaskapp.py\r\n<\/code><\/pre>\n<p>\u5982\u679c\u662f\u8fd9\u6837\uff0c\u90a3\u4e48\u5b83\u5e94\u8be5\u4f1a\u5728 localhost:5000 \u4e0a\u7b49\u5f85\u3002\u540e\u7aef\u5df2\u7ecf\u642d\u5efa\u597d\u4e86\uff0c\u5bf9\u5427\u3002<\/p>\n<h3>\u5c1d\u8bd5\u6267\u884cterraform init\u3002<\/h3>\n<p>\u73b0\u5728\uff0c\u5728\u8fd9\u4e2a\u72b6\u6001\u4e0b\uff0c\u8ba9\u6211\u4eec\u5c1d\u8bd5\u8fd0\u884c terraform init\u3002<\/p>\n<pre class=\"post-pre\"><code>% terraform init\r\n\r\nInitializing the backend...\r\n\r\nInitializing provider plugins...\r\n\r\nThe following providers do not have any version constraints in configuration,\r\nso the latest version was installed.\r\n\r\nTo prevent automatic upgrades to new major versions that may contain breaking\r\nchanges, it is recommended to add version = \"...\" constraints to the\r\ncorresponding provider blocks in configuration, with the constraint strings\r\nsuggested below.\r\n\r\n* provider.openstack: version = \"~&gt; 1.12\"\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>\u54e6\uff0c\u770b\u8d77\u6765\u6210\u529f\u4e86\u5462\u3002\u597d\u50cf\u662f\u8fdb\u884c\u4e86terraform init\u3002<\/p>\n<h3>\u8fd9\u65f6\u53d1\u751f\u4e86\u4ec0\u4e48\uff1f<\/h3>\n<p>\u6211\u4f1a\u7528Charles\u67e5\u770b\u8fd9\u4e2a\u8bf7\u6c42\/\u54cd\u5e94\u7684\u5185\u5bb9\u3002<\/p>\n<h4>\u5728terraform\u521d\u59cb\u5316\u65f6\u7684\u8bf7\u6c42<\/h4>\n<pre class=\"post-pre\"><code>GET \/ HTTP\/1.1\r\nHost: localhost.com:5000\r\nUser-Agent: Go-http-client\/1.1\r\nAccept-Encoding: gzip\r\n<\/code><\/pre>\n<h4>terraform init\u7684\u54cd\u5e94<\/h4>\n<pre class=\"post-pre\"><code>HTTP\/1.0 200 OK\r\nContent-Type: text\/html; charset=utf-8\r\nContent-Length: 0\r\nServer: Werkzeug\/0.14.1 Python\/2.7.10\r\nDate: Wed, 19 Dec 2018 08:49:27 GMT\r\nConnection: close\r\n<\/code><\/pre>\n<p>\u539f\u6765\u5982\u6b64\u3002\u8fd9\u610f\u5473\u7740\u5728\u540e\u7aef\u6307\u5b9a\u7684URL\u4e0a\u6267\u884cGET\u8bf7\u6c42\u3002<\/p>\n<p>\u6211\u8ba4\u4e3a\u662f\u56e0\u4e3a\u5904\u4e8einit\u9636\u6bb5\uff0c\u6240\u4ee5\u54cd\u5e94\u4e3a\u7a7a\u4e5f\u662f\u53ef\u4ee5\u7684\u3002<\/p>\n<p>\u55ef\uff0c\u5176\u5b9e\u53ea\u662f Flask \u53ea\u80fd\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u8fd4\u56de\u54cd\u5e94\u800c\u5df2\u3002<\/p>\n<h3>\u6211\u8bd5\u7740\u6267\u884cterraform apply\u3002<\/h3>\n<p>\u90a3\u4e48\u63a5\u4e0b\u6765\u8ba9\u6211\u4eec\u5c1d\u8bd5\u4e00\u4e0b\u201cterraform apply\u201d\u3002<\/p>\n<pre class=\"post-pre\"><code>% terraform apply\r\n\r\nAn execution plan has been generated and is shown below.\r\nResource actions are indicated with the following symbols:\r\n  + create\r\n\r\nTerraform will perform the following actions:\r\n\r\n  + openstack_compute_keypair_v2.my_kp_1\r\n      id:          &lt;computed&gt;\r\n      fingerprint: &lt;computed&gt;\r\n      name:        \"terraform-kp-1\"\r\n      private_key: &lt;computed&gt;\r\n      public_key:  &lt;computed&gt;\r\n      region:      &lt;computed&gt;\r\n\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\n\r\nDo you want to perform these actions?\r\n  Terraform will perform the actions described above.\r\n  Only 'yes' will be accepted to approve.\r\n\r\n  Enter a value: yes\r\n\r\nopenstack_compute_keypair_v2.my_kp_1: Creating...\r\n  fingerprint: \"\" =&gt; \"&lt;computed&gt;\"\r\n  name:        \"\" =&gt; \"terraform-kp-1\"\r\n  private_key: \"\" =&gt; \"&lt;computed&gt;\"\r\n  public_key:  \"\" =&gt; \"&lt;computed&gt;\"\r\n  region:      \"\" =&gt; \"&lt;computed&gt;\"\r\nopenstack_compute_keypair_v2.my_kp_1: Creation complete after 1s (ID: terraform-kp-1)\r\nFailed to save state: HTTP error: 405\r\n\r\n\r\nError: Failed to persist state to backend.\r\n\r\nThe error shown above has prevented Terraform from writing the updated state\r\nto the configured backend. To allow for recovery, the state has been written\r\nto the file \"errored.tfstate\" in the current working directory.\r\n\r\nRunning \"terraform apply\" again at this point will create a forked state,\r\nmaking it harder to recover.\r\n\r\nTo retry writing this state, use the following command:\r\n    terraform state push errored.tfstate\r\n<\/code><\/pre>\n<p>\u51fa\u73b0\u4e86\u9519\u8bef\u3002\u55ef\uff0c\u8fd9\u662f\u53ef\u4ee5\u7406\u89e3\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code>Failed to save state: HTTP error: 405\r\nError: Failed to persist state to backend.\r\n<\/code><\/pre>\n<p>\u56e0\u4e3a\u6211\u6ca1\u6709\u521b\u5efa\u8fc7POST\u5e16\u5b50\u3002<\/p>\n<p>\u597d\u7684\uff0c\u8ba9\u6211\u4eec\u6765\u770b\u4e00\u4e0bCharles\u6355\u83b7\u7684\u8fd9\u4e2a\u60c5\u51b5\u3002<\/p>\n<h4>\u7533\u8bf7\u6267\u884cterraform apply\u65f6\u7684\u8bf7\u6c42\u3002<\/h4>\n<pre class=\"post-pre\"><code>POST \/ HTTP\/1.1\r\nHost: localhost.com:5000\r\nUser-Agent: Go-http-client\/1.1\r\nContent-Length: 3281\r\nContent-Md5: BzoOkMeCZ1DPgz266a8Ckg==\r\nContent-Type: application\/json\r\nAccept-Encoding: gzip\r\n\r\n{\r\n    \"version\": 3,\r\n    \"terraform_version\": \"0.11.10\",\r\n    \"serial\": 1,\r\n    \"lineage\": \"0159803e-4f38-ddaf-d403-4118c48cff6a\",\r\n    \"modules\": [\r\n        {\r\n            \"path\": [\r\n                \"root\"\r\n            ],\r\n            \"outputs\": {},\r\n            \"resources\": {\r\n                \"openstack_compute_keypair_v2.my_kp_1\": {\r\n                    \"type\": \"openstack_compute_keypair_v2\",\r\n                    \"depends_on\": [],\r\n                    \"primary\": {\r\n                        \"id\": \"terraform-kp-1\",\r\n                        \"attributes\": {\r\n                            \"fingerprint\": \"4d:6a:92:2c:f2:44:db:84:12:76:5d:e9:2d:d9:c7:06\",\r\n                            \"id\": \"terraform-kp-1\",\r\n                            \"name\": \"terraform-kp-1\",\r\n                            \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\\nMIIEpAIBAA(\u7565)-----END RSA PRIVATE KEY-----\\n\",\r\n                            \"public_key\": \"ssh-rsa AAAAB3NzaC(\u7565) Generated-by-Nova\\n\",\r\n                            \"region\": \"\"\r\n                        },\r\n                        \"meta\": {},\r\n                        \"tainted\": false\r\n                    },\r\n                    \"deposed\": [],\r\n                    \"provider\": \"provider.openstack\"\r\n                }\r\n            },\r\n            \"depends_on\": []\r\n        }\r\n    ]\r\n}\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5f53\u7136\u7684\u539f\u56e0\uff0c\u54cd\u5e94\u662f405\u9519\u8bef\uff08\u4e0d\u5141\u8bb8\u7684\u65b9\u6cd5\uff09\uff0c\u6240\u4ee5\u4e0d\u4f1a\u5728\u8fd9\u91cc\u663e\u793a\u3002<\/p>\n<p>\u603b\u4e4b,<\/p>\n<p>terraform init\u3059\u308b\u3068\u3001backend\u306b\u5bfe\u3057\u3066\u306fGET\u304c\u98db\u3076\u3002\u3053\u306e\u6642\u30ec\u30b9\u30dd\u30f3\u30b9BODY\u306f\u7a7a\u3067OK\u3067\u3042\u308b\u6a21\u69d8<\/p>\n<p>terraform apply\u3057\u305f\u5834\u5408\u306b\u3001apply\u5f8c\u306eterraform.state\u76f8\u5f53\u306eJSON\u304c\u30ea\u30af\u30a8\u30b9\u30c8BODY\u3068\u3057\u3066POST\u3055\u308c\u308b<\/p>\n<p>\u8fd9\u8868\u660e\u4e86\u4e00\u79cd\u52a8\u4f5c\u3002<\/p>\n<h2>http\u540e\u7aef\u7684\u76ee\u6807\u5730\u5740\u53ef\u4ee5\u662f\u8fd9\u6837\u7684\u884c\u4e3a\u5417\uff1f<\/h2>\n<p>\u90a3\u4e48\uff0c\u5bf9\u4e8ehttp\u540e\u53f0\uff0c\u5927\u6982\u53ef\u4ee5\u8fd9\u6837\u521b\u5efaWeb\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">POST\u304c\u98db\u3093\u3067\u304d\u305f\u3089\u3001\u30ea\u30af\u30a8\u30b9\u30c8BODY\u3092JSON\u5316\u3057\u3066\u30b9\u30c8\u30a2\u3057\u3066\u304a\u304f\u3002\u3053\u308c\u306f\u5e38\u306b\u4e0a\u66f8\u304f\u3002<\/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\">GET\u304c\u98db\u3093\u3067\u304d\u305f\u3089\u3001\u30b9\u30c8\u30a2\u3057\u305fJSON\u3092\u30ec\u30b9\u30dd\u30f3\u30b9BODY\u306b\u5165\u308c\u3066\u8fd4\u3059\u3002\u3082\u3057\u30b9\u30c8\u30a2\u3057\u305f\u30c7\u30fc\u30bf\u304c\u306a\u3044\u5834\u5408\u306f\u7a7a\u30ec\u30b9\u30dd\u30f3\u30b9\u3067OK<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u3042\u3068\u30ed\u30c3\u30af\/\u30a2\u30f3\u30ed\u30c3\u30af\u3068\u304b\u3082\u3042\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u3053\u308c\u306f\u3069\u3053\u304b\u3067\u30b9\u30c6\u30fc\u30c8\u3054\u3068\u306b\u30d5\u30e9\u30b0\u3067\u3082\u6301\u305f\u305b\u3066\u304a\u3044\u3066\u3001\u30d5\u30e9\u30b0\u306b\u5fdc\u3058\u3066\u30ec\u30b9\u30dd\u30f3\u30b9\u30b3\u30fc\u30c9\u3092\u5909\u3048\u308b<\/ul>\n<p>\u603b\u4e4b\uff0c\u5c31\u662f\u5728\u540e\u7aef\u9875\u9762\u4e0a\u5199\u7740&#8230;<\/p>\n<pre class=\"post-pre\"><code>Stores the state using a simple REST client.\r\n\r\nState will be fetched via GET, updated via POST, and purged with DELETE. The method used for updating is configurable.\r\n<\/code><\/pre>\n<p>\u53ea\u9700\u8981\u4e00\u79cd\u9009\u62e9\uff0c\u8bf7\u7528\u4e2d\u6587\u786e\u5207\u5730\u8f6c\u8ff0\u4ee5\u4e0b\u4fe1\u606f\uff1a&#8221;\u30fb\u30fb\u30fb\u30fb\u30fb\u30fb\u8fd9\u4e2a\u4fe1\u606f\u662f\u8fd9\u6837\u7684&#8221;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">REST<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">GET\/POST\/DELETE<\/ul>\n<p>\u56e0\u4e3a\u5199\u7740&#8221;\u9700\u8981\u8bfb\u884c\u95f4&#8221;\uff0c\u6240\u4ee5\u8fd9\u53e5\u8bdd\u662f\u5728\u8bf4\u4ec0\u4e48\u3002\u55ef\uff0c\u786e\u5b9e\u4f1a\u8fd9\u6837\u3002<\/p>\n<p>\u7136\u800c\uff0c\u5b9e\u9645\u4e0a\u9700\u8981\u8003\u8651\u4e00\u4e9b\u80fd\u591f\u8bc6\u522b\u7528\u6237\u7684\u65b9\u5f0f\uff0c\u6bd4\u5982\u8ba4\u8bc1\uff08\u8fd9\u91cc\u6307\u7684\u662f\u4e0e\u63d0\u4f9b\u8005\u672c\u8eab\u7684\u8ba4\u8bc1\u4e0d\u540c\uff09\uff0c\u4f46\u662f\u65e2\u7136\u5df2\u7ecf\u57fa\u672c\u4e86\u89e3\u4e86\u5176\u8fd0\u4f5c\u539f\u7406\uff0c\u672c\u6587\u5c06\u5230\u6b64\u4e3a\u6b62\u3002<\/p>\n<p>\u7b49\u7b49\uff0c\u6211\u4f1a\u5236\u5b9a\u4e00\u4e2a\u5b9e\u9645\u4e0a\u8fd9\u6837\u505a\u4e5f\u8bb8\u4e0d\u9519\u7684\u65b9\u6848\u5e76\u5199\u4e0b\u6765\u8bd5\u8bd5\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728Terraform\u7684\u540e\u7aef\u6709\u8bb8\u591a\u9009\u62e9\u3002 \u6839\u636eTerraform Backend Types\u4e2d\u6240\u5217\u4e3e\u7684\uff0cTerr [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48885","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>\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5 - 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\/\u6211\u5bf9terraform-\u7684\u540e\u7aef\uff08http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5\" \/>\n<meta property=\"og:description\" content=\"\u5728Terraform\u7684\u540e\u7aef\u6709\u8bb8\u591a\u9009\u62e9\u3002 \u6839\u636eTerraform Backend Types\u4e2d\u6240\u5217\u4e3e\u7684\uff0cTerr [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5bf9terraform-\u7684\u540e\u7aef\uff08http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-06T22:16:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T21:25:41+00:00\" \/>\n<meta name=\"author\" content=\"\u79d1, \u9896\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u9896\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \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\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/\",\"name\":\"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-02-06T22:16:48+00:00\",\"dateModified\":\"2024-04-28T21:25:41+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5\"}]},{\"@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\/8ca01ba7f7362ad4edb7da206a12f29e\",\"name\":\"\u79d1, \u9896\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u9896\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5 - 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\/\u6211\u5bf9terraform-\u7684\u540e\u7aef\uff08http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5","og_description":"\u5728Terraform\u7684\u540e\u7aef\u6709\u8bb8\u591a\u9009\u62e9\u3002 \u6839\u636eTerraform Backend Types\u4e2d\u6240\u5217\u4e3e\u7684\uff0cTerr [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5bf9terraform-\u7684\u540e\u7aef\uff08http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-02-06T22:16:48+00:00","article_modified_time":"2024-04-28T21:25:41+00:00","author":"\u79d1, \u9896","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u9896","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/","name":"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-02-06T22:16:48+00:00","dateModified":"2024-04-28T21:25:41+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u5bf9Terraform \u7684\u540e\u7aef\uff08=http\uff09\u8fdb\u884c\u4e86\u8c03\u67e5"}]},{"@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\/8ca01ba7f7362ad4edb7da206a12f29e","name":"\u79d1, \u9896","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","caption":"\u79d1, \u9896"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%af%b9terraform-%e7%9a%84%e5%90%8e%e7%ab%af%ef%bc%88http%ef%bc%89%e8%bf%9b%e8%a1%8c%e4%ba%86%e8%b0%83%e6%9f%a5%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\/48885","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\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48885"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48885\/revisions"}],"predecessor-version":[{"id":83313,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48885\/revisions\/83313"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}