Publicité

Contenu connexe

Présentations pour vous(20)

Similaire à ゼロからはじめるTerraformでのDevOps2021(20)

Publicité

Dernier(20)

ゼロからはじめるTerraformでのDevOps2021

  1. 株式会社ネットワールド SI技術本部 ソリューションアーキテクト課 海野 航 Nutanix DevOps Night #1 ゼロからはじめる Terraform での DevOps 2021
  2. 2 Copyright © 2021 Networld Corporation All Rights Reserved. もくじ • はじめに : DevOps と Infrastructure as Code • Infrastructure as Code のいいところ • Terraform × Nutanix の初歩! AHV 仮想マシンのプロビジョニングの流れ • HCL コードの解説 • まとめ
  3. Copyright © 2021 Networld Corporation All Rights Reserved. はじめに : DevOps と Infrastructure as Code
  4. 4 Copyright © 2021 Networld Corporation All Rights Reserved. 本日のポイント DevOps を実装するための Infrastructure as Code とは何なのかを知る Terraform と Nutanix の 組み合わせ を知る HashiCorp Configuration Language (HCL) を知る
  5. 5 Copyright © 2021 Networld Corporation All Rights Reserved. DevOps と IaC の定義 (諸説ある…) DevOps Infrastructure as Code ✓ Developer (開発者) と Operator (運用者) が協力する、あるいはチーム 分けなどをすることなく一緒に作業を する文化。 ✓ これにより従来よりも高速にアプリや サービスを提供することができる。 ビジネスを加速させて、より高い市場 競争力を得ることが目的。 ✓ DevOps を実現する手法のひとつ。 • その他の手法には… CI/CD、マイクロサービス、モニ タリングとロギングなどがある。 ✓ インフラをコードとして管理すること。 ここでのインフラはCPUやメモリや ディスク、ネットワークなどを示す。
  6. 6 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform は IaC を実現するツールです 6 インフラ CPUやメモリ、ディスクといったリソース、 あるいは仮想マシンやアプライアンスそのもの コードで 表現すること を
  7. 7 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform は世界での実績ナンバーワンの IaC 製品 再利用可能な ソースコードとして インフラの構成を 定義する 多様なインフラを ワークフローを 変えることなく 導入する 出典 : Terraformで超サクッとループで リソースを用意する方法 https://dev.classmethod.jp/cloud/ aws/terraform-network-variable/ 出典 : Azure 上の HashiCorp Terraform https://azure.microsoft.com/ja- jp/solutions/devops/terraform/ エンタープライズクラウドでも Terraform 使ったらいいじゃん!
  8. 8 Copyright © 2021 Networld Corporation All Rights Reserved. インフラを使いたい人が、セルフサービスで使えるように 8 導 入 前 導 入 後 例えば ソフト開発者 例えば ソフト開発者 インフラ要件 (作業指示書) Terraform の コード (HCL) インフラ SE が 作業を実施 Terraform が プロビジョニング 開発者が 要求した リソース 開発者が 要求した リソース
  9. Copyright © 2021 Networld Corporation All Rights Reserved. Infrastructure as Code のいいところ
  10. 10 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform : IaC を導入して得られる効果 • インフラ構築・改変・廃棄の 正確性とスピードの向上 • コード化によるインフラの可視化で 管理性向上 (バージョン管理やレビューが容易に) • Nutanix やその他各種オンプレミス製品、 クラウドサービスの使用感やポリシーの統一 • これらによるコストの削減
  11. 11 Copyright © 2021 Networld Corporation All Rights Reserved. 操作手順のコピペは難しいけど、コードはコピペできる IaC ではない Infrastructure as Code ✓ マニュアルベースによる手作業 ✓ 自動化のハードルの高さ (インフラであんまり RPA とか使わない気が…) ✓ コードベースによる高い再現性 ✓ 高度に自動化され、実行が簡単
  12. 12 Copyright © 2021 Networld Corporation All Rights Reserved. 何かあったときの履歴管理、意外と重要ではありませんか? IaC ではない Infrastructure as Code ✓ Excel や Word によるパラメータシート ✓ 人間の意識に頼る変更履歴の管理 ✓ 実際のパラメータそのものを含むコード ✓ バージョン管理システムとの親和性
  13. 13 Copyright © 2021 Networld Corporation All Rights Reserved. 当たり前ですが… • コードを作成するための時間は、手作業の数倍~数十倍かかる (テストなども考慮する) • 初期構築のように、一般的には1回しかやらないものを コード化しても、現実的には効果が低い • ツールや環境のバージョンアップに伴うコードの修正作業の発生 • イレギュラーな手作業を挟んだときに、リカバリー負荷が 高いことがある • コードを習得するための学習コストがかかる なんでもかんでも IaC にすればいいわけではない
  14. 14 Copyright © 2021 Networld Corporation All Rights Reserved. HashiCorp Configuration Language HashiCorp Terraform の専用言語 • 特徴 ₋宣言型のアーキテクチャ (Ansibleは手続き型) ₋インフラの状態を宣言するように記述するようなイメージ ₋Terraform 対応してる製品やサービスが多いので、汎用性が高い ₋コード内にコメントを書きやすく、学習コストが比較的低い ₋Web 上に情報が多い ₋プロビジョニングは得意だが、OS 内の細かな設定はどちらかと言えば苦手 (そういうのはシェルを使ったり、Ansible と組み合わせる)
  15. 15 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform の最重要成果物 : TFSTATE ファイル Terraform が管理しているリソースの状態を示すファイル • 役割 ₋Terraform によってプロビジョニングされると同時に JSON 形式で生成される ₋これを参照・比較することによって、対象となるリソースの現在の状態や その遷移がわかる
  16. Copyright © 2021 Networld Corporation All Rights Reserved. Terraform × Nutanix の初歩! AHV 仮想マシンのプロビジョニングの流れ
  17. 17 Copyright © 2021 Networld Corporation All Rights Reserved. 注意事項 今回紹介する内容について、 Nutanix ならびに HashiCorp では ノンサポートです OSS 版の Terraform は コミュニティサポートです ( Terraform のサポートが必要な場合は有償版を!) 個人的に聞かれたら できるだけがんばります
  18. 18 Copyright © 2021 Networld Corporation All Rights Reserved. 今回の前提条件 • Terraform 環境の前提条件 ₋Windows 10 バージョン 20H2 ₋Terraform 0.14.8 (2021年3月17日時点で最新) ₋Nutanix AOS 5.15 • GitHub リポジトリ ₋https://github.com/unnowataru/terraform-nutanix-sample
  19. 19 Copyright © 2021 Networld Corporation All Rights Reserved. 仮想マシン プロビジョニングまでの流れ 仮想マシンのディスクイメージ化 UUID の確認と取得 ( ネットワーク / ディスクイメージ ) Terraform のインストール例 コードの作成 Terraform の実行 ( init / plan / apply )
  20. 20 Copyright © 2021 Networld Corporation All Rights Reserved. このセクションのゴール • Terraform を使って コード で VM をプロビジョニングする
  21. 21 Copyright © 2021 Networld Corporation All Rights Reserved. 事前準備 : 仮想マシンのディスクイメージ化 • Terraform を使ってプロビジョニングしたい仮想マシンの テンプレート を ディスクイメージ に変換します image.create <target-img> image_type=kDiskImage clone_from_vmdisk=vm:<taget-vm>:scsi.0 ここでは <unnow-win2016template> という仮想マシンを <unnow_win2016_img> というイメージに変換しようとしている 参考ブログ : NTNX>日記 VM から Acropolis Image Service のディスクイメージを作成する。 http://blog.ntnx.jp/entry/2017/05/06/133123
  22. 22 Copyright © 2021 Networld Corporation All Rights Reserved. UUID の確認 • ネットワークの UUID : net.list • ディスクイメージの UUID : image.list <0> という名前のネットワークに接続させたい <unnow_win2016_img> を使いたい
  23. 23 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • Terraform のダウンロード https://www.terraform.io/ からダウンロード
  24. 24 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • 展開して生成されたフォルダーを任意の場所に配置
  25. 25 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • 環境変数 Path の設定
  26. 26 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • 動作確認 : コマンドプロンプトから “terraform -version”
  27. 27 Copyright © 2021 Networld Corporation All Rights Reserved. コードの作成 • GitHub から [ main.tf ] と [ terraform.tfvars ] と [ versions.tf ] をコピペ https://github.com/unnowataru/terraform-nutanix-sample
  28. 28 Copyright © 2021 Networld Corporation All Rights Reserved. コードの作成 • 任意のフォルダーに [ main.tf ] と [ terraform.tfvars ] と [ versions.tf ] をコピペして新規作成 https://github.com/unnowataru/terraform-nutanix-sample
  29. 29 Copyright © 2021 Networld Corporation All Rights Reserved. コードの作成 • terraform.tfvars のパラメータを各環境固有のものに置き換える
  30. 30 Copyright © 2021 Networld Corporation All Rights Reserved. terraform init • コマンドプロンプトにて main.tf と terraform.tfvars を 配置したフォルダーに移動して “terraform init” を実行
  31. 31 Copyright © 2021 Networld Corporation All Rights Reserved. terraform init • “terraform init” を実行すると、Nutanixのプロバイダーに応じた プラグインが自動的にダウンロードされる
  32. 32 Copyright © 2021 Networld Corporation All Rights Reserved. terraform plan • コマンドプロンプトにて “terraform plan” を実行 • 特に問題がなければ”terraform apply”が実行可能な状態に遷移
  33. 33 Copyright © 2021 Networld Corporation All Rights Reserved. terraform apply • コマンドプロンプトにて “terraform apply” を実行
  34. 34 Copyright © 2021 Networld Corporation All Rights Reserved. terraform apply • プロビジョニング完了
  35. 35 Copyright © 2021 Networld Corporation All Rights Reserved. DEMO VIDEO (4分ぐらい)
  36. Copyright © 2021 Networld Corporation All Rights Reserved. HCL コードの解説
  37. 37 Copyright © 2021 Networld Corporation All Rights Reserved. ちょっとテクニカルな解説 : Terraform のコード 37 provider : 対象製品を定義 variable : 変数を定義 data : 既存リソースから情報を取り込む resource : 実際に作成するリソースを記述
  38. 38 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf variable : 変数を定義するセクション ユーザー名やクラスターの情報、プロビジョニングしたい仮想マシンの 名前、スペックやネットワークなどを変数として定義している。
  39. 39 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf provider : インフラを定義するセクション ここでは nutanix としているが、AWS や Azure など プロビジョニング対象となるインフラをここで定義する。 ポートをデフォルトから変更している場合は注意しましょう。
  40. 40 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf data : 既存のリソースから情報を取り込む 変数で指定したオブジェクトから情報を取り込み、プロビジョニングに 利用できるようにする。 この例では、既存のクラスターの情報を確認し、プロビジョニングする 対象のクラスターとして設定している。
  41. 41 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf resource : 実際に作成するリソースを定義 変数で指定した情報や data で取り込んだ情報を利用して、対象となる インフラにリソースをプロビジョニング(作成)する。 当然のことながら、HCLはプログラミング言語なので、演算子なども きちんと使える。 ここでは変数 “count” に応じて仮想マシンの名前を1から指定した数字 まで、前ゼロ3桁でプロビジョニングするような仕組みになっている。 HCLで定義されている文字列 自分で名前を付けるオブジェクト
  42. 42 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : terraform.tfvars パスワードやアクセスキーのお漏らしには注意しましょう!!
  43. Copyright © 2021 Networld Corporation All Rights Reserved. まとめ と ポイント
  44. 44 Copyright © 2021 Networld Corporation All Rights Reserved. ポイント • OSS 版 Terraform 単体では CI/CD を実現する ハードルが高いので、Terraform Cloud や その他の CI/CD ツールと組み合わせて実装する • とりあえず Terraform で AHV の仮想マシンを プロビジョニングするだけなら比較的カンタン
  45. 45 Copyright © 2021 Networld Corporation All Rights Reserved. まとめ Terraform を導入して得られる効果 • インフラ構築・改変・廃棄の 正確性とスピードの向上 • コード化によるインフラの可視化で 管理性向上 (バージョン管理やレビューが容易に) • Nutanix やその他各種オンプレミス製品、 クラウドサービスの使用感やポリシーの統一 • これらによるコストの削減 Terraform によるプロビジョニングと管理はあくまでも手段! 本当に目指すべきは DevOps によるビジネスの加速!
Publicité