<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 為什么需要Terraform ## 由于國內云服務平臺眾多,每個云服務平臺都有自己的api,每個api都非常復雜,云從業者沒有辦法去挨個學習每個平臺的api去管理云平臺的云資源,于是有很多公司便出了很多方案和產品,其中亞馬遜公司的cloudformation(僅僅適用于aws).HashiCorp公司的Terraform(適用于多個云平臺)解決了從網絡組件到實際服務器映像定義基礎架構即代碼的問題,也就是說不管你用什么與云,使用terraform,你大部分的terraform的代碼都很相似(相似但是不是完全一樣),無論是aws,aliyun還是azure他們的大部分terraform代碼基本非常相似. ## Terraform是什么 ## 1. Terraform是由HashiCorp公司在2014年左右推出的開源工具(https://www.hashicorp.com/products/terraform).Terraform 是一個 IT 基礎架構自動化編排工具,也就是自動化管理我們云端的基礎設置,比如網絡,安全,cpu,memory,disk等,也會包括管理包括數據庫,域名,K8s等軟件服務. 2. Terraform只是HashiCorp旗下一款產品,旗下還有Packer Vagrant Vault Nomad Consul等非常有名的產品,如果有事云從業者建議學習使用Terraform旗下的大部分產品 3. HashiCorp目前還沒有IPO上市,目前估值50億美金,據傳會在2021-2022上市 3. HashiCorp跟aws,azure,gcp,alicloud,cisco,oracle等都是合作伙伴,目前github上面光terraform就有26.6K stark和6.6K Fork,contributor有1500多人,看見terraform的龐大的用戶群體和開源支持者 4. 支持市場上大多數主流的云 ![cloud](https://img.kancloud.cn/ed/1e/ed1e0e675f9f2657987f2ca181149a1f_1564x586.jpg) ## Terraform 能做什么 ## 1. 它的口號是 "Write, Plan, and create Infrastructure as Code", 基礎架構即代碼,也就是說它能用代碼來管理這些基礎設施.Terraform 幾乎可以支持所有市面上主流的云服務,也就是說她一同了一套云服務接口,各個廠家通過實現自己的provider來實現對terraform的支持 1.1 阿里云的例子 ``` provider "alicloud" { #這是變量,要用實際AccessKeyId access_key = "xxx" #這是變量,要用實際AccessKeySecret secret_key = "xxx" region = "cn-beijing" #version = "~> 1.5.0" } resource "alicloud_vpc" "vpc" { vpc_name = "my_vpc" cidr_block = "172.16.0.0/16" } resource "alicloud_vswitch" "vswitch" { vpc_id = alicloud_vpc.vpc.id cidr_block = "172.16.0.0/24" zone_id = "cn-beijing-b" vswitch_name = "my_switch" } ``` 2.1 aws 的例子 ``` provider "aws" { #這是變量,要用實際AccessKeyId access_key = "xxx" #這是變量,要用實際AccessKeySecret secret_key = "xxx" region = "us-west-2" } resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" } resource "aws_subnet" "main" { vpc_id = aws_vpc.main.id cidr_block = "10.0.1.0/24" availability_zone_id = "cn-beijing-b" } ``` ## Terraform 的架構 ## 1. Terraform本身是基于插件的架構,可擴展性很強,可以方便程序員對Terraform進行擴展。Terraform從邏輯上可以分為兩層,核心層(Terraform Core)和插件層(Terraform Provider) ![架構](https://img.kancloud.cn/6a/71/6a71273ca75666401c5f3cbaa7168efd_2354x1244.png) 2. terraform執行流程 ![流程](https://img.kancloud.cn/9a/d4/9ad49755a41632123d1fdd6bb4c9e14f_2070x1104.png) 3. 核心層其實就是terraform的命令行工具,它是用go語言開發的,它負責: 2.1. 讀取.tf代碼,并對配置文件和代碼進行變量取值替換 2.2. 資源狀態文件管理 2.3. 依據圖論,對代碼中創建的資源依賴關系進行分析,并創建依賴關系圖譜 2.4. 根據依賴關系圖譜,執行資源先后創建。對于沒有依賴關系的資源,會并行進行創建(缺省10個并行進程),這也是Terraform能夠高效快速管理云資源的原因。 2.5. 用RPC調用插件層 4. 插件層也是由go語言開發的,Terraform有超過250個不同的插件,它們負責 接受核心層的RPC調用和具體提供某一項服務的執行 4.1. Provider負責與外界API的集成,比如騰訊云和阿里云Provider就提供了在云上創建、修改、刪除云資源的功能。這個插件負責和云端API的接口,并提供一層抽象,這樣程序員可以在不了解API細節的情況下,通過terraform來編排資源。它負責:初始化以及外界API通信,外界API的認證,定義云資源與外界服務的關系 4.2. Provisioner負責在資源創建或者刪除完成后,執行一些腳本.比如Puppet Provisioner就可以在云虛擬機資源創建完成后,在該資源上下載、安裝、配置Puppet agent.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看