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

OCI技術資料 : リソース・マネージャ(Resource Manager)概要

OCI技術資料 : リソース・マネージャ(Resource Manager)概要

OCIの技術説明資料 リソース・マネージャ(Resource Manager)の概要編 (Level 100) です。

Oracle Cloud Infrastructure リソース・マネージャ(Resource Manager)は、Terraform実行エンジンがOCI上に実装されたIaCを実現するOracleマネージドサービスで、OCIリソースのデプロイメントと操作を自動化できます。

2023/04/1 新規作成

#oci #OCI #Resource Manager #Terraform

More Decks by Oracle Cloud Infrastructure ソリューション・エンジニア

Other Decks in Technology

Transcript

  1. リソース・マネージャ概要
    OCI Resource Manager Level 100
    Oracle Cloud Infrastructure 技術資料
    2023年4月

    View Slide

  2. Safe harbor statement
    以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、
    情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以
    下の事項は、マテリアルやコード、機能を提供することを確約するものではないため、購買
    決定を行う際の判断材料になさらないで下さい。
    オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊
    社の裁量により決定され、変更される可能性があります。
    Copyright © 2023, Oracle and/or its affiliates
    2

    View Slide

  3. • Infrastructure as Codeはサーバーやネットワークなどのインフラ構成をプログラムのようなコードで記述し、そのコード
    を用いてインフラ構成の管理やプロビジョニングの自動化を行うこと
    • オンプレミスからクラウド、マルチクラウドやコンテナ化と、ITインフラの変遷が進んでく中で、ITインフラやサーバの構成の
    変更の頻度は多くなった
    • 構成の変更にかかる手間などを解決するための手段の一つがIaC
    • コードやインフラの設定を記載、それを実行することで自動的に構成の変更などが可能になる
    “IaC”とは
    Copyright © 2023, Oracle and/or its affiliates
    3
    Infrastructure as Code
    Subnet B
    VCN
    Subnet A
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balancer
    Database
    System
    variable "compartment_ocid" {}
    variable "region" {}
    provider "oci" {
    region = "${var.region}"
    }
    resource "oci_core_virtual_network" "vcn1" {
    cidr_block = "10.0.0.0/16"
    dns_label = "vcn1"
    compartment_id = "${var.compartment_ocid}"
    display_name = "vcn1"
    }

    プロビジョニング

    View Slide

  4. マルチクラウドオーケストレーションツール
    TerraformはHashiCorp社が開発しているオーケストレーションツールの一つ
    • インフラストラクチャのライフサイクルを自動化する構成管理ツール
    • 主要なクラウドベンダーをはじめ、対応プロバイダー(300+)がプラグインとして用意
    • 状態を記録するステート(State)ファイルを持ち、冪等性(何度実行してもOK)を保証
    • リソースの依存関係をプロバイダーが定義し、ツールが処理するためユーザーは考慮不要
    インフラストラクチャ分野のマルチクラウド向けオーケストレーションツールとしては現在最も優勢
    Terraformとは
    Copyright © 2023, Oracle and/or its affiliates
    4

    View Slide

  5. 大規模かつ変更が多いシステムを簡単に運用できる
    Terraformの特徴
    • Repeatability(再現性)
    コードで記述されているので、何度でも再利用可能
    • Idempotency(冪等性)
    コードを何度実行しても同じ結果を得られる
    • Agility(機敏性)
    変更からプロビジョニングまで迅速な開発サイクルを回せる
    • Auditability(監査性)
    コードの変更を追跡できる
    お客様が得られるメリット
    • 生産性の向上
    変更にかかる工数を減らし、スピーディに反映
    • リスクの軽減
    変更箇所を事前に確認でき、人的ミスを軽減
    • 統合性の向上
    複数のチームが協力して共通のインフラストラクチャを構築
    • 複雑性の軽減
    複数のリソースを集中管理し、環境の標準化を推進
    • コンプライアンスの向上
    変更の追跡ができ、ガバナンスを強化
    IaCのメリット
    Copyright © 2023, Oracle and/or its affiliates
    5

    View Slide

  6. 6
    Terraform – 基本機能
    Terraform は以下の基本的なリソース管理の機能を提供する(CRUD操作に近い)
    機能 内容 コマンド
    リソースの作成
    • 設定ファイルに基づいて、依存関係を考慮して
    リソースを作成する
    • 作成可能なリソースは Provider に依存する
    $ terraform apply
    リソースの更新
    • 設定ファイルに基づいてリソースの変更(例えば、リソース名の変
    更等)を行う
    • 変更不可の場合には、リソースを削除のうえ作成するという挙
    動になる
    $ terraform apply
    リソースの削除
    • オプション指定なしの場合には全削除、依存関係を考慮して
    削除する
    • オプション指定で特定のリソースのみ削除も可能
    $ terraform destroy
    リソースの状態確認
    • 現在のリソースの状態を確認する $ terraform show
    リソースの依存関係確認
    • 各リソースの依存関係を確認する $ terraform graph
    Copyright © 2023, Oracle and/or its affiliates

    View Slide

  7. 7
    Terraform – アーキテクチャ
    Terraform Core
    Provider
    Terraform Plugins
    Provisioners
    Client Library
    GO 言語
    HTTP(S)
    Cloud
    *.tf JSON
    設定ファイル
    OR
    State ファイル
    .tfstat
    e
    ① 管理するリソースの状態を State ファイル(terraform.tfstate) で管理
    ②Terraform は 設定ファイルを読み込んで、
    state ファイルとの状態を比較し、
    どのリソースに対してどの順序でアクションを起こすか決定
    ③実際のリソースに対するアクションは、REST API をラップした Provider で実
    行される
    ④実行後にリソースの状態が State ファイルに保存される
    ① ④


    Copyright © 2023, Oracle and/or its affiliates

    View Slide

  8. OCIリソースのデプロイメントと操作を自動化するOracleマネージドサービス(無償)
    Terraform-as-a-Service
    • Terraform実行エンジンがOCI上に実装
    • HCL(HashiCorp Configuration Language)
    で記述されたTerraformの標準ファイルを使用
    • 状態(State)をOCI上で集中管理
    OCIネイティブに統合
    • OCIの全てのリソースに対するCRUD処理
    • OCIコンソール、API、IAM、AuditなどのOCI標準機
    能が利用可能
    • OCIのリソースとのインタラクション機能
    (Discovery/ドリフト検出)
    リソースマネージャとは
    Copyright © 2023, Oracle and/or its affiliates
    8
    Resource
    Manager

    View Slide

  9. 9
    スタンドアロンTerraform vs. OCI Resource Manager
    スタンドアロン Terraform の課題を解消するためのソリューションが OCI Resource Manager
    State ファイルの管理方法
    terraform 実行ユーザ
    の管理方法
    複数環境の管理方法
    課題
    OCI
    RM
    • RMが管理するため、
    ユーザは意識する必要なし
    • 誰がどのような操作でリソースの
    stateを変化させたかを追うことも
    可能
    • OCI の IAM と完全に統合され
    ているため、誰がどのような
    権限でリソースに関する操作を
    行うことができるかを管理可能
    • Stack. と呼ばれる単位で
    複数の Terraform 設定ファイルを
    一括管理可能
    Copyright © 2023, Oracle and/or its affiliates

    View Slide

  10. スタック
    • OCI リソースのまとまり
    • 構成情報をTerraform設定ファイル(.tf)で
    保持
    ジョブ
    • スタックに対する操作 : Plan, Apply,
    Destroy
    Stateファイル
    • 状態を保持するファイル (.tfstate)
    • Resource Manager では状態ファイルを
    自動的に生成して更新
    • ファイルの手動編集は不可
    • スタック毎の状態ロックをサポート
    OCI Resource Manager の基本構造
    Copyright © 2023, Oracle and/or its affiliates
    10
    ジョブ
    1
    ジョブ2 ジョブ3
    State ファイル
    Destroy
    Apply
    Plan
    ログ
    スタック1 スタック2

    .tf ファイル
    Resource
    Manager

    View Slide

  11. Terraform構成:
    HCL言語で定義された.tfファイル
    .tfファイルにOCIのリソースを記述する
    リソースマネージャの構成要素:Terraform構成/スタック
    Copyright © 2023, Oracle and/or its affiliates
    11

    resource oci_core_vcn this {
    dns_label = var.vcn_dns_label
    cidr_block = var.vcn_cidr
    compartment_id = var.compartment_ocid
    display_name = var.vcn_display_name
    }
    resource oci_core_internet_gateway this {
    compartment_id = var.compartment_ocid
    vcn_id = oci_core_vcn.this.id
    }

    スタック:
    OCIのリソースがまとまった一連のTerraform構成
    通常はフォルダやzipファイルでまとめられる
    例:インスタンスをプロビジョニングする時のスタック
    .tfファイル スタック
    provider.tf :認証情報のファイル
    output.tf :出力情報に関するファイル
    compute.tf :コンピュートに関するファイル
    availability-domains.tf :ADに関するファイル
    tf-compute

    View Slide

  12. 計画・適用・破棄
    計画(Plan):インフラストラクチャの変更の表示
    現在の状態ファイル(Stateファイル)と設定ファイルを比
    較して、変更があれば表示させる
    例:VCN1からVCN2に名前を変更
    リソースマネージャの構成要素:ジョブ
    Copyright © 2023, Oracle and/or its affiliates
    12
    Old 設定ファイル
    New設定ファイル
    Old Stateファイル
    ①更新 ②計画(plan)
    # oci_core_vcn.this will be updated in-place
    ~ resource "oci_core_vcn" "this" {

    defined_tags = {}
    ~ display_name = "VCN1"" -> ""VCN2"
    dns_label = "vcn"
    freeform_tags = {}
    }
    + リソースが作成されることを示します。
    - リソースが破棄されることを示します。
    ~ リソースがインプレースで更新されることを示します。
    -/+ リソースが破棄および再作成されることを示します。
    変更部分はログに出力される
    VCN1
    Subnet A
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balanc
    er
    スタック
    ③比較して差分表示
    "VCN1" -> "VCN2"

    View Slide

  13. 計画・適用・破棄
    適用(apply):
    スタックの変更計画に基づいてインフラストラクチャの変更
    を実際に適用します
    Stateファイルも新しいものに書き換えられます。
    破棄(destroy):
    スタックにあるインフラストラクチャを削除します。
    スタックのジョブ履歴および状態は、破棄ジョブの実行後
    も残ります。
    リソースマネージャの構成要素:ジョブ
    Copyright © 2023, Oracle and/or its affiliates
    13
    New設定ファイル Old Stateファイル
    New Stateファイル
    ②更新
    "VCN1" -> "VCN2"
    Subnet A
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balanc
    er
    スタック
    VCN2
    Subnet A
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balanc
    er
    スタック
    New Stateファイル
    更新
    空の Stateファイル
    "VCN1" -> "VCN2"
    ①適用(apply)
    ③ログに出力

    View Slide

  14. 14
    OCI Resource Manager 基本の実行フロー – Terraformに類似
    ① スタックを作成し
    Terraform構成ファイルを登録
    https://docs.cloud.oracle.com/iaas/Content/ResourceManager/Concepts/resourcemanager.htm#workflow
    ② Plan を実行して
    変更されるリソースを確認
    ①' 問題や変更があれば
    Terraform 構成ファイルを編集し
    スタックを更新
    ③ Apply を実行
    ④ Stateと実行ログを確認 ⑤ Destroy を実行し
    作成したリソースを破棄
    Copyright © 2023, Oracle and/or its affiliates

    View Slide

  15. 事前に作成されたTerraform構成
    一般的なシナリオで想定されるクラウド構成がテンプレートとして用意されています
    スタックの作成:テンプレート
    Copyright © 2023, Oracle and/or its affiliates
    16

    View Slide

  16. Terraform構成をリモートに格納
    CI/CDを実現するために統合ソース・コード制御システムを利用可能
    以下のソースコード制御システムが使用できる(2023年4月時点)
    • Bitbucketクラウド
    • Bitbucketサーバー
    • DevOps
    • GitHub
    • GitLab
    スタックの作成:ソース・コード制御システム
    Copyright © 2023, Oracle and/or its affiliates
    17

    View Slide

  17. デプロイされたリソースをTerraform 構成、状態ファイルとしてキャプチャする機能
    • 手動管理インフラストラクチャからResource Manager制御インフラストラクチャに移行
    • HCL構文を使用して Oracle Cloud Infrastructure リソースを表す方法の学習
    • 別のテナンシーまたはコンパートメントで既存のインフラストラクチャを複製または再構築
    テナンシやコンパートメントにあるリソースからスタックを生成
    スタックの作成:リソース・ディスカバリー機能
    Copyright © 2023, Oracle and/or its affiliates
    18
    testVCN1
    Subnet A
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balanc
    er
    Compartment
    スタック
    provider.tf
    var.tf
    load_balancer.tf
    compute.tf
    discovery_file
    コンパートメント内のリソースを
    スタックへ

    View Slide

  18. 障害が発生した時や手動で変更した時に生じる差分を表示
    Resource Manager が最後に実行した状態(=state
    ファイルの情報) と、OCIの実際のリソースの状況の差分
    = 構成ドリフト を検出する機能
    レポートに出力可能で、差分は色付きで表示される
    ドリフト検出
    Copyright © 2023, Oracle and/or its affiliates
    19
    testVCN1
    Subnet A
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balanc
    er
    testVCN1
    Subnet B
    Virtual
    Machine
    Virtual
    Machine
    Load
    Balanc
    er
    実際の構成
    Stateファイルの構成

    View Slide

  19. 過去に適用したジョブのスタック構成をロールバックすることが可能
    スタックのロールバック
    Copyright © 2023, Oracle and/or its affiliates
    20
    「計画ロールバック」と「適用ロールバック」が表示されることで、ロールバックしていることを判断できる

    View Slide

  20. このレッスンでは、次のことを学習しました
    • リソースマネージャはTerraformをベースとしたマネージドなOCIのツール
    • IaCを実現すると、インフラストラクチャのプロビジョニングを簡単に集中管理できる
    • GUIでプロビジョニングから破棄まで簡単に行える
    まとめ
    Copyright © 2023, Oracle and/or its affiliates
    21

    View Slide

  21. 日本語マニュアル – リソースマネージャ
    • https://docs.oracle.com/ja-jp/iaas/Content/ResourceManager/home.htm
    リソースマネージャのトラブルシューティング
    • https://docs.oracle.com/ja-jp/iaas/Content/ResourceManager/troubleshooting.htm
    Terraform OCIリファレンス
    • https://registry.terraform.io/providers/oracle/oci/latest/docs
    リソースマネージャ 関連の技術情報
    Copyright © 2023, Oracle and/or its affiliates
    22

    View Slide

  22. Oracle Cloud Infrastructure マニュアル (日本語 / 英語)
    • https://docs.cloud.oracle.com/iaas/api/ - APIリファレンス
    • https://docs.cloud.oracle.com/ja-jp/iaas/Content/General/Reference/aqswhitepapers.htm - テクニカ
    ル・ホワイト・ペーパー
    • https://docs.cloud.oracle.com/iaas/releasenotes/ - リリースノート
    • https://docs.cloud.oracle.com/ja-jp/iaas/Content/knownissues.htm - 既知の問題(Known Issues)
    • https://docs.cloud.oracle.com/ja-jp/iaas/Content/General/Reference/graphicsfordiagrams.htm -
    OCIアイコン・ダイアグラム集(PPT、SVG、Visio用)
    ※ 日本語版は翻訳のタイムラグのため情報が古い場合があります。最新情報は英語版をご確認ください
    Oracle Cloud Infrastructure マニュアル・ドキュメント
    Copyright © 2023, Oracle and/or its affiliates
    23

    View Slide

  23. Oracle Cloud Infrastructure 活用資料集
    • https://oracle-japan.github.io/ocidocs/
    チュートリアル - Oracle Cloud Infrastructureを使ってみよう
    • https://oracle-japan.github.io/ocitutorials/
    Oracle Cloud ウェビナーシリーズ
    • https://www.oracle.com/goto/ocws-jp
    Oracle 主催 セミナー、ハンズオン・ワークショップ
    • https://www.oracle.com/search/events/_/N-2bu/
    Oracle Cloud Infrastructure – General Forum (英語)
    • https://cloudcustomerconnect.oracle.com/resources/9c8fa8f96f/summary
    Oracle Cloud Infrastructure トレーニング・技術フォーラム
    Copyright © 2023, Oracle and/or its affiliates
    24

    View Slide

  24. Thank you
    Copyright © 2023, Oracle and/or its affiliates
    25

    View Slide

  25. View Slide

  26. Our mission is to help people
    see data in new ways, discover
    insights,
    unlock endless possibilities.

    View Slide