20190620_Multi_Cloud_Day.pdf

 20190620_Multi_Cloud_Day.pdf

2e2c49f6f3fa33b8f5aad5841774c211?s=128

nezumisannn

June 20, 2019
Tweet

Transcript

  1. Multi Cloud IaC realized by Terraform

  2. Agenda » 自己紹介 » マルチクラウドに求めること » マルチクラウドの課題 » Terraformとは »

    Terraformで何が出来るのか » Terraformの実行方法 » まとめ 2
  3. 自己紹介 resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname =

    “ねずみさん家。” company = “beyond” job = “Site Reliability Engineer” twitter = “@yktr_sre” skills = [“terraform”,”packer”] } 3
  4. “What do you ask for MultiCloud” 4

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

  6. Why » コスト/性能の最適化 ⋄ ベンダーごとに当然異なる » DR対策 ⋄ クラウド自体の障害への備え »

    クラウドロックインの回避 ⋄ 特定のクラウドに依存しない » 最適なサービスの利用 ⋄ 利用したいものを幅広く選定できる 6
  7. Problem » 構成の複雑化 ⋄ 構成が複数クラウドに跨る » 学習コストの増加 ⋄ 複数のクラウドを理解する必要性 »

    標準化が難しい ⋄ クラウドごとの差異の吸収 7
  8. Solution » 構成の複雑化 ⋄ Infrastructure as code » 学習コストの増加 ⋄

    気合いでなんとかする » 標準化が難しい ⋄ 統一的に記述できる言語を選定 8
  9. What is Terraform » インフラオーケストレーションツール » HashiCorp社のOSSでGolangで開発 » 豊富なProviderの提供 ⋄

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

    インフラCI/CDとの親和性が高い 10
  11. HCLの優位性 API Google gcloud compute networks create Alibaba aliyun vpc

    CreateVpc OCI oci network vcn create 11
  12. HCLの優位性 Terraform Google HCL Alibaba HCL OCI HCL 12

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

    Data Source » Provisioner » State » Backend » Module 13
  14. Provider 14 provider "provider_name" { -> provider setting here }

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

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

    region = "${var.credential["region"]}" } 16
  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
  18. Variable variable "access_key" { type = "string" default = "Your

    Access Key here" } 18
  19. Variable variable "credential" { type = "map" default = {

    access_key = "Your Access Key here" secret_key = "Your Secret Key here" region = "Your Region here" } } 19
  20. Resource resource "resource_type" "resource_name" { -> resource setting here }

    20
  21. Resource resource "google_compute_network" "example" { name = "example-vpc" description =

    "example-vpc" auto_create_subnetworks = true } 21
  22. Resource resource "alicloud_vpc" "example" { name = "example-vpc" cidr_block =

    "10.0.0.0/8" } 22
  23. Resource resource "oci_core_vcn" "example" { cidr_block = "192.168.0.0/16" compartment_id =

    "${var.compartment_id}" display_name = "example-vcn" } 23
  24. Terraformの実行 Write Plan Apply 24 Destroy

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

    Apply ⋄ デプロイ » Destroy ⋄ 作成したリソースを全て削除する 25
  26. 実行すると... 26

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

  28. THANKS! Any questions? You can find me at » @yktr_sre

    » teraoka@beyondjapan.com 28