20190620_Multi_Cloud_Day.pdf
by
nezumisannn
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Multi Cloud IaC realized by Terraform
Slide 2
Slide 2 text
Agenda » 自己紹介 » マルチクラウドに求めること » マルチクラウドの課題 » Terraformとは » Terraformで何が出来るのか » Terraformの実行方法 » まとめ 2
Slide 3
Slide 3 text
自己紹介 resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname = “ねずみさん家。” company = “beyond” job = “Site Reliability Engineer” twitter = “@yktr_sre” skills = [“terraform”,”packer”] } 3
Slide 4
Slide 4 text
“What do you ask for MultiCloud” 4
Slide 5
Slide 5 text
良いとこ取り 良い所だけを組み合わせたい... 5
Slide 6
Slide 6 text
Why » コスト/性能の最適化 ⋄ ベンダーごとに当然異なる » DR対策 ⋄ クラウド自体の障害への備え » クラウドロックインの回避 ⋄ 特定のクラウドに依存しない » 最適なサービスの利用 ⋄ 利用したいものを幅広く選定できる 6
Slide 7
Slide 7 text
Problem » 構成の複雑化 ⋄ 構成が複数クラウドに跨る » 学習コストの増加 ⋄ 複数のクラウドを理解する必要性 » 標準化が難しい ⋄ クラウドごとの差異の吸収 7
Slide 8
Slide 8 text
Solution » 構成の複雑化 ⋄ Infrastructure as code » 学習コストの増加 ⋄ 気合いでなんとかする » 標準化が難しい ⋄ 統一的に記述できる言語を選定 8
Slide 9
Slide 9 text
What is Terraform » インフラオーケストレーションツール » HashiCorp社のOSSでGolangで開発 » 豊富なProviderの提供 ⋄ GCP ⋄ Alibaba Cloud ⋄ Oracle Cloud » HCLという独自言語で記述する 9
Slide 10
Slide 10 text
Terraformで出来ること » マルチプロバイダ ⋄ 種類に関わらず統一言語(HCL)で記述 » コードでのインフラ定義/管理(IaC) » 作成/変更/削除の自動化と人的ミスが減少 » インフラCI/CDとの親和性が高い 10
Slide 11
Slide 11 text
HCLの優位性 API Google gcloud compute networks create Alibaba aliyun vpc CreateVpc OCI oci network vcn create 11
Slide 12
Slide 12 text
HCLの優位性 Terraform Google HCL Alibaba HCL OCI HCL 12
Slide 13
Slide 13 text
HCLの種類 » Provider ⋄ クラウドの種類と認証情報を明示する » Resource ⋄ Terraformで管理する対象の基本単位 » Data Source » Provisioner » State » Backend » Module 13
Slide 14
Slide 14 text
Provider 14 provider "provider_name" { -> provider setting here }
Slide 15
Slide 15 text
Provider provider "google" { credentials = "../credentials/multi-cloud-terraform.json" project = "test-project" region = "asia-northeast2" } 15
Slide 16
Slide 16 text
Provider provider "alicloud" { access_key = "${var.credential["alicloud_access_key"]}" secret_key = "${var.credential["alicloud_secret_key"]}" region = "${var.credential["region"]}" } 16
Slide 17
Slide 17 text
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
Slide 18
Slide 18 text
Variable variable "access_key" { type = "string" default = "Your Access Key here" } 18
Slide 19
Slide 19 text
Variable variable "credential" { type = "map" default = { access_key = "Your Access Key here" secret_key = "Your Secret Key here" region = "Your Region here" } } 19
Slide 20
Slide 20 text
Resource resource "resource_type" "resource_name" { -> resource setting here } 20
Slide 21
Slide 21 text
Resource resource "google_compute_network" "example" { name = "example-vpc" description = "example-vpc" auto_create_subnetworks = true } 21
Slide 22
Slide 22 text
Resource resource "alicloud_vpc" "example" { name = "example-vpc" cidr_block = "10.0.0.0/8" } 22
Slide 23
Slide 23 text
Resource resource "oci_core_vcn" "example" { cidr_block = "192.168.0.0/16" compartment_id = "${var.compartment_id}" display_name = "example-vcn" } 23
Slide 24
Slide 24 text
Terraformの実行 Write Plan Apply 24 Destroy
Slide 25
Slide 25 text
Terraformの実行 » Write ⋄ 作成したいリソースをHCLで記述する » Plan ⋄ HCLの構文チェックとドライラン » Apply ⋄ デプロイ » Destroy ⋄ 作成したリソースを全て削除する 25
Slide 26
Slide 26 text
実行すると... 26
Slide 27
Slide 27 text
まとめ » マルチクラウドに求めるものは「良いとこ取り」 » 課題を無視すると「良いとこ取れない」 » TerraformでマルチクラウドIaCをやろう » HCLを覚える必要がありますがそこは気合いで! 27
Slide 28
Slide 28 text
THANKS! Any questions? You can find me at » @yktr_sre »
[email protected]
28