{"id":48480,"date":"2023-01-19T13:07:37","date_gmt":"2022-11-18T16:01:09","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/"},"modified":"2024-04-29T10:31:27","modified_gmt":"2024-04-29T02:31:27","slug":"%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/","title":{"rendered":"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879"},"content":{"rendered":"<h1>\u5728\u4f7f\u7528GitLab-CI\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u6620\u50cf\u65f6\u9700\u6ce8\u610f\u7684\u4e8b\u9879\u3002<\/h1>\n<h2>\u9996\u5148<\/h2>\n<p>\u4f7f\u7528terraform\u5b98\u65b9\u6620\u50cf\u65f6\uff0c\u5728\u6267\u884cgitlab-ci\u65f6\u9047\u5230\u4e86\u4e00\u4e9b\u5c0f\u95ee\u9898\uff0c\u56e0\u6b64\u63d0\u9192\u6ce8\u610f\u4e8b\u9879\u3002<\/p>\n<h2>\u7528\u8fc7\u7684.gitlab-ci.yml\u6587\u4ef6<\/h2>\n<pre class=\"post-pre\"><code><span class=\"na\">image<\/span><span class=\"pi\">:<\/span> \r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">hashicorp\/terraform:latest<\/span>\r\n\r\n<span class=\"na\">stages<\/span><span class=\"pi\">:<\/span> \r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform_validate<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform_plan<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform_apply<\/span>\r\n\r\n<span class=\"na\">before_script<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform init --upgrade<\/span>\r\n\r\n<span class=\"na\">validate<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">stage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">terraform_validate<\/span>\r\n  <span class=\"na\">script<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform --version<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform validate<\/span>\r\n\r\n<span class=\"na\">plan<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">stage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">terraform_plan<\/span>\r\n  <span class=\"na\">script<\/span><span class=\"pi\">:<\/span> \r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform plan --parallelism=30 -out \"planfile\"<\/span>\r\n  <span class=\"na\">artifacts<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">paths<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">.\/planfile<\/span>\r\n\r\n<span class=\"na\">apply<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">stage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">terraform_apply<\/span>\r\n  <span class=\"na\">script<\/span><span class=\"pi\">:<\/span> \r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform apply -input=false \"planfile\"<\/span>\r\n  <span class=\"na\">dependencies<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">plan<\/span>\r\n  <span class=\"na\">when<\/span><span class=\"pi\">:<\/span> <span class=\"s\">manual<\/span>\r\n<\/code><\/pre>\n<h2>\u6267\u884c\u6b64\u64cd\u4f5c\u7684\u7ed3\u679c\u3002<\/h2>\n<p>\u5c55\u793a\u51fa\u4e86\u6267\u884c\u4e86 terraform \u547d\u4ee4\u540e\u7684\u7ed3\u679c\uff0c\u7c7b\u4f3c\u4e8e Terraform Commands(CLI) \u4e2d\u7684\u60c5\u51b5\u3002<\/p>\n<blockquote><p>\u5728\u9519\u8bef\u60c5\u51b5\u4e0b\uff0c\u5c06\u8fd4\u56de\u4e00\u4e2a\u975e\u96f6\u7684\u9000\u51fa\u72b6\u6001\u3002<\/p><\/blockquote>\n<p>\u7531\u4e8e\u8fd4\u56de\u4e86\u975e0\u7684\u72b6\u6001\uff0c\u56e0\u6b64\u51fa\u73b0\u4e86\u9519\u8bef\u5e76\u7ec8\u6b62\u3002<\/p>\n<pre class=\"post-pre\"><code>Usage: terraform [-version] [-help] &lt;command&gt; [args]\r\n\r\nThe available commands for execution are listed below.\r\nThe most common, useful commands are shown first, followed by\r\nless common or more advanced commands. If you're just getting\r\nstarted with Terraform, stick with the common commands. For the\r\nother commands, please read the help and docs before usage.\r\n\r\nCommon commands:\r\n    apply              Builds or changes infrastructure\r\n    console            Interactive console for Terraform interpolations\r\n    destroy            Destroy Terraform-managed infrastructure\r\n    env                Workspace management\r\n    fmt                Rewrites config files to canonical format\r\n    get                Download and install modules for the configuration\r\n    graph              Create a visual graph of Terraform resources\r\n    import             Import existing infrastructure into Terraform\r\n    init               Initialize a Terraform working directory\r\n    output             Read an output from a state file\r\n    plan               Generate and show an execution plan\r\n    providers          Prints a tree of the providers used in the configuration\r\n    refresh            Update local state file against real resources\r\n    show               Inspect Terraform state or plan\r\n    taint              Manually mark a resource for recreation\r\n    untaint            Manually unmark a resource as tainted\r\n    validate           Validates the Terraform files\r\n    version            Prints the Terraform version\r\n    workspace          Workspace management\r\n\r\nAll other commands:\r\n    0.12upgrade        Rewrites pre-0.12 module source code for v0.12\r\n    debug              Debug output management (experimental)\r\n    force-unlock       Manually unlock the terraform state\r\n    push               Obsolete command for Terraform Enterprise legacy (v1)\r\n    state              Advanced state management\r\nUsage: terraform [-version] [-help] &lt;command&gt; [args]\r\n\r\nThe available commands for execution are listed below.\r\nThe most common, useful commands are shown first, followed by\r\nless common or more advanced commands. If you're just getting\r\nstarted with Terraform, stick with the common commands. For the\r\nother commands, please read the help and docs before usage.\r\n\r\nCommon commands:\r\n    apply              Builds or changes infrastructure\r\n    console            Interactive console for Terraform interpolations\r\n    destroy            Destroy Terraform-managed infrastructure\r\n    env                Workspace management\r\n    fmt                Rewrites config files to canonical format\r\n    get                Download and install modules for the configuration\r\n    graph              Create a visual graph of Terraform resources\r\n    import             Import existing infrastructure into Terraform\r\n    init               Initialize a Terraform working directory\r\n    output             Read an output from a state file\r\n    plan               Generate and show an execution plan\r\n    providers          Prints a tree of the providers used in the configuration\r\n    refresh            Update local state file against real resources\r\n    show               Inspect Terraform state or plan\r\n    taint              Manually mark a resource for recreation\r\n    untaint            Manually unmark a resource as tainted\r\n    validate           Validates the Terraform files\r\n    version            Prints the Terraform version\r\n    workspace          Workspace management\r\n\r\nAll other commands:\r\n    0.12upgrade        Rewrites pre-0.12 module source code for v0.12\r\n    debug              Debug output management (experimental)\r\n    force-unlock       Manually unlock the terraform state\r\n    push               Obsolete command for Terraform Enterprise legacy (v1)\r\n    state              Advanced state management\r\nERROR: Job failed: exit code 127\r\n<\/code><\/pre>\n<h2>\u63a8\u7406<\/h2>\n<p>\u8bf7\u591a\u5173\u6ce8DockerHub\u4e0a\u7684Dockerfile\u3002<\/p>\n<p>\u5982\u4e0b\u6240\u793a\uff0cENTRYPOINT\u7684\u503c\u4e3a[&#8220;terraform&#8221;]\u3002<br \/>\n\u5f53\u7136\uff0c\u8fd9\u5c06\u6267\u884cterraform\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">FROM<\/span><span class=\"s\"> golang:alpine<\/span>\r\n<span class=\"k\">MAINTAINER<\/span><span class=\"s\"> \"HashiCorp Terraform Team &lt;terraform@hashicorp.com&gt;\"<\/span>\r\n\r\n<span class=\"k\">ENV<\/span><span class=\"s\"> TERRAFORM_VERSION=0.10.0<\/span>\r\n\r\n<span class=\"k\">RUN <\/span>apk add <span class=\"nt\">--update<\/span> git bash openssh\r\n\r\n<span class=\"k\">ENV<\/span><span class=\"s\"> TF_DEV=true<\/span>\r\n<span class=\"k\">ENV<\/span><span class=\"s\"> TF_RELEASE=true<\/span>\r\n\r\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> $GOPATH\/src\/github.com\/hashicorp\/terraform<\/span>\r\n<span class=\"k\">RUN <\/span>git clone https:\/\/github.com\/hashicorp\/terraform.git .\/ <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    git checkout v<span class=\"k\">${<\/span><span class=\"nv\">TERRAFORM_VERSION<\/span><span class=\"k\">}<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\r\n<\/span>    \/bin\/bash scripts\/build.sh\r\n\r\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> $GOPATH<\/span>\r\n<span class=\"k\">ENTRYPOINT<\/span><span class=\"s\"> [\"terraform\"]<\/span>\r\n<\/code><\/pre>\n<h2>\u7ed3\u679c<\/h2>\n<p>\u53ea\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff0c\u628a\u300c\u4f55\u3067\u3082\u3044\u3044\u304b\u3089\u3001entrypoint\u3092\u53d6\u308a\u6562\u3048\u305a\u4e0a\u66f8\u304d\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304f\u3002\u300d\u7684\u610f\u601d\u7528\u4e2d\u6587\u91cd\u65b0\u8868\u8fbe\u51fa\u6765\u3002<\/p>\n<p>\u65e0\u8bba\u4ec0\u4e48\u90fd\u53ef\u4ee5\uff0c\u5148\u5c06\u5165\u53e3\u70b9\u8fdb\u884c\u8986\u76d6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">image<\/span><span class=\"pi\">:<\/span> \r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">hashicorp\/terraform:latest<\/span>\r\n  <span class=\"na\">entrypoint<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s1\">'<\/span><span class=\"s\">'<\/span>\r\n\r\n<span class=\"na\">stages<\/span><span class=\"pi\">:<\/span> \r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform_validate<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform_plan<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform_apply<\/span>\r\n\r\n<span class=\"na\">before_script<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"s\">terraform init --upgrade<\/span>\r\n\r\n<span class=\"na\">validate<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">stage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">terraform_validate<\/span>\r\n  <span class=\"na\">script<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform --version<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform validate<\/span>\r\n\r\n<span class=\"na\">plan<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">stage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">terraform_plan<\/span>\r\n  <span class=\"na\">script<\/span><span class=\"pi\">:<\/span> \r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform plan --parallelism=30 -out \"planfile\"<\/span>\r\n  <span class=\"na\">artifacts<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">paths<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">.\/planfile<\/span>\r\n\r\n<span class=\"na\">apply<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">stage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">terraform_apply<\/span>\r\n  <span class=\"na\">script<\/span><span class=\"pi\">:<\/span> \r\n    <span class=\"pi\">-<\/span> <span class=\"s\">terraform apply -input=false \"planfile\"<\/span>\r\n  <span class=\"na\">dependencies<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">plan<\/span>\r\n  <span class=\"na\">when<\/span><span class=\"pi\">:<\/span> <span class=\"s\">manual<\/span>\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u4f7f\u7528GitLab-CI\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u6620\u50cf\u65f6\u9700\u6ce8\u610f\u7684\u4e8b\u9879\u3002 \u9996\u5148 \u4f7f\u7528terraform\u5b98\u65b9\u6620\u50cf [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48480","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>\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879 - 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\/\u5f53\u5728gitlab-ci\u4e2d\u4f7f\u7528terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\" \/>\n<meta property=\"og:description\" content=\"\u5728\u4f7f\u7528GitLab-CI\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u6620\u50cf\u65f6\u9700\u6ce8\u610f\u7684\u4e8b\u9879\u3002 \u9996\u5148 \u4f7f\u7528terraform\u5b98\u65b9\u6620\u50cf [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5f53\u5728gitlab-ci\u4e2d\u4f7f\u7528terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-18T16:01:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T02:31:27+00:00\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\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\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/\",\"name\":\"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-18T16:01:09+00:00\",\"dateModified\":\"2024-04-29T02:31:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\"}]},{\"@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\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879 - 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\/\u5f53\u5728gitlab-ci\u4e2d\u4f7f\u7528terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879","og_description":"\u5728\u4f7f\u7528GitLab-CI\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u6620\u50cf\u65f6\u9700\u6ce8\u610f\u7684\u4e8b\u9879\u3002 \u9996\u5148 \u4f7f\u7528terraform\u5b98\u65b9\u6620\u50cf [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5f53\u5728gitlab-ci\u4e2d\u4f7f\u7528terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-18T16:01:09+00:00","article_modified_time":"2024-04-29T02:31:27+00:00","author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/","name":"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-18T16:01:09+00:00","dateModified":"2024-04-29T02:31:27+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5f53\u5728GitLab-CI\u4e2d\u4f7f\u7528Terraform\u7684\u5b98\u65b9\u955c\u50cf\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879"}]},{"@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\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bd%93%e5%9c%a8gitlab-ci%e4%b8%ad%e4%bd%bf%e7%94%a8terraform%e7%9a%84%e5%ae%98%e6%96%b9%e9%95%9c%e5%83%8f%e6%97%b6%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%ba%8b%e9%a1%b9%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\/48480","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48480"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48480\/revisions"}],"predecessor-version":[{"id":84739,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48480\/revisions\/84739"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}