Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20190620_Multi_Cloud_Day.pdf

 20190620_Multi_Cloud_Day.pdf

nezumisannn

June 20, 2019
Tweet

More Decks by nezumisannn

Other Decks in Technology

Transcript

  1. Multi Cloud IaC
    realized by Terraform

    View Slide

  2. Agenda
    » 自己紹介
    » マルチクラウドに求めること
    » マルチクラウドの課題
    » Terraformとは
    » Terraformで何が出来るのか
    » Terraformの実行方法
    » まとめ
    2

    View Slide

  3. 自己紹介
    resource “my_profile” “nezumisannn” {
    name = “Yuki.Teraoka”
    nickname = “ねずみさん家。”
    company = “beyond”
    job = “Site Reliability Engineer”
    twitter = “@yktr_sre”
    skills = [“terraform”,”packer”]
    }
    3

    View Slide

  4. “What do you ask for
    MultiCloud”
    4

    View Slide

  5. 良いとこ取り
    良い所だけを組み合わせたい...
    5

    View Slide

  6. Why
    » コスト/性能の最適化
    ⋄ ベンダーごとに当然異なる
    » DR対策
    ⋄ クラウド自体の障害への備え
    » クラウドロックインの回避
    ⋄ 特定のクラウドに依存しない
    » 最適なサービスの利用
    ⋄ 利用したいものを幅広く選定できる
    6

    View Slide

  7. Problem
    » 構成の複雑化
    ⋄ 構成が複数クラウドに跨る
    » 学習コストの増加
    ⋄ 複数のクラウドを理解する必要性
    » 標準化が難しい
    ⋄ クラウドごとの差異の吸収
    7

    View Slide

  8. Solution
    » 構成の複雑化
    ⋄ Infrastructure as code
    » 学習コストの増加
    ⋄ 気合いでなんとかする
    » 標準化が難しい
    ⋄ 統一的に記述できる言語を選定
    8

    View Slide

  9. What is Terraform
    » インフラオーケストレーションツール
    » HashiCorp社のOSSでGolangで開発
    » 豊富なProviderの提供
    ⋄ GCP
    ⋄ Alibaba Cloud
    ⋄ Oracle Cloud
    » HCLという独自言語で記述する
    9

    View Slide

  10. Terraformで出来ること
    » マルチプロバイダ
    ⋄ 種類に関わらず統一言語(HCL)で記述
    » コードでのインフラ定義/管理(IaC)
    » 作成/変更/削除の自動化と人的ミスが減少
    » インフラCI/CDとの親和性が高い
    10

    View Slide

  11. HCLの優位性
    API
    Google gcloud compute networks create
    Alibaba aliyun vpc CreateVpc
    OCI oci network vcn create
    11

    View Slide

  12. HCLの優位性
    Terraform
    Google HCL
    Alibaba HCL
    OCI HCL
    12

    View Slide

  13. HCLの種類
    » Provider
    ⋄ クラウドの種類と認証情報を明示する
    » Resource
    ⋄ Terraformで管理する対象の基本単位
    » Data Source
    » Provisioner
    » State
    » Backend
    » Module
    13

    View Slide

  14. Provider
    14
    provider "provider_name" {
    -> provider setting here
    }

    View Slide

  15. Provider
    provider "google" {
    credentials = "../credentials/multi-cloud-terraform.json"
    project = "test-project"
    region = "asia-northeast2"
    }
    15

    View Slide

  16. Provider
    provider "alicloud" {
    access_key = "${var.credential["alicloud_access_key"]}"
    secret_key = "${var.credential["alicloud_secret_key"]}"
    region = "${var.credential["region"]}"
    }
    16

    View Slide

  17. Provider
    provider "oci" {
    tenancy_ocid = "${var.tenancy_ocid}"
    user_ocid = "${var.user_ocid}"
    fingerprint = "${var.fingerprint}"
    private_key_path = "${var.private_key_path}"
    region = "${var.region}"
    }
    17

    View Slide

  18. Variable
    variable "access_key" {
    type = "string"
    default = "Your Access Key here"
    }
    18

    View Slide

  19. Variable
    variable "credential" {
    type = "map"
    default = {
    access_key = "Your Access Key here"
    secret_key = "Your Secret Key here"
    region = "Your Region here"
    }
    }
    19

    View Slide

  20. Resource
    resource "resource_type" "resource_name" {
    -> resource setting here
    }
    20

    View Slide

  21. Resource
    resource "google_compute_network" "example" {
    name = "example-vpc"
    description = "example-vpc"
    auto_create_subnetworks = true
    }
    21

    View Slide

  22. Resource
    resource "alicloud_vpc" "example" {
    name = "example-vpc"
    cidr_block = "10.0.0.0/8"
    }
    22

    View Slide

  23. Resource
    resource "oci_core_vcn" "example" {
    cidr_block = "192.168.0.0/16"
    compartment_id = "${var.compartment_id}"
    display_name = "example-vcn"
    }
    23

    View Slide

  24. Terraformの実行
    Write Plan Apply
    24
    Destroy

    View Slide

  25. Terraformの実行
    » Write
    ⋄ 作成したいリソースをHCLで記述する
    » Plan
    ⋄ HCLの構文チェックとドライラン
    » Apply
    ⋄ デプロイ
    » Destroy
    ⋄ 作成したリソースを全て削除する
    25

    View Slide

  26. 実行すると...
    26

    View Slide

  27. まとめ
    » マルチクラウドに求めるものは「良いとこ取り」
    » 課題を無視すると「良いとこ取れない」
    » TerraformでマルチクラウドIaCをやろう
    » HCLを覚える必要がありますがそこは気合いで!
    27

    View Slide

  28. THANKS!
    Any questions?
    You can find me at
    » @yktr_sre
    » [email protected]
    28

    View Slide