[Cloud] Orchestration 2.0 - creating an instance

原文はこちら。
https://blogs.oracle.com/pshuff/entry/orchestration_2_0_creating_an

今日はインスタンスの定義方法を見て、Oracle Orchestrationの評価を引き続き実施します。昨日はWordPressインスタンスをOracle Marketplaceのイメージから作成し、storage要素の構造の内部を見るところからはじめました。今日は、Computeインスタンスを記述する bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance.json ファイルを見ることで、引き続きBitnami WordPress instance のプロビジョニングを進めることにします。Bitnamiからのデフォルトインストールでは、このファイルを作成します。今回の例では、デフォルトではなくWordPress_4_5_3と呼ばれるインスタンスを作成し、ストレージのサイズも、Marketplaceが最小要件として推奨しているものにあわせ、デフォルトの10GBから60GBに変更しています。

bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance.json

orchestrationファイルを見ると、以下のような定義を確認できることでしょう。
{"relationships": [],
    "account": "/Compute-metcsgse00028/default",
    "description": "",
    "schedule": {
        "start_time": "2016-07-21T19:46:32Z",
        "stop_time": null
    },
    "oplans": [
        {
            "obj_type": "launchplan",
            "ha_policy": "active",
            "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance",
            "objects": [
                {
                    "instances": [
                        {
                            "networking": {
                                "eth0": {
                                    "seclists": [
                                        "/Compute-metcsgse00028/default/default"
                                    ],
                                    "nat": "ippool:/oracle/public/ippool"
                                }
                            },
                            "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012/b531af9b-e075-4a51-a867-449fd948d374",
                            "storage_attachments": [
                                {
                                    "volume": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
                                    "index": 1
                                }
                            ],
                            "boot_order": [
                                1
                            ],
                            "hostname": "a2d1e4.compute-metcsgse00028.oraclecloud.internal.",
                            "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012",
                            "shape": "oc3",
                            "attributes": {
                                "userdata": {},
                                "nimbula_orchestration": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance"
                            },
                            "imagelist": "/Compute-metcsgse00028/marketplace01-user@oracleads.com/bitnami-wordpress-4.5.3-0-linux-oel-6.7-x86_64",
                            "sshkeys": [
                                "/Compute-metcsgse00028/cloud.admin/2016"
                            ],
                            "tags": []
                        }
                    ]
                }
            ]
        }
    ],
    "user": "/Compute-metcsgse00028/cloud.admin",
    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance"
}
このファイルは以下のように省略できます。
{
    "relationships": [],
    "account": "/Compute-metcsgse00028/default",
    "description": "",
    "schedule": {…},
    "oplans": […],
    "user": "/Compute-metcsgse00028/cloud.admin",
    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage"
}
これはまさしくstorageの定義のものと類似していることに注目してください。違いは、oplansパラメータ・フィールドに現れています。instanceの定義の場合、obj_typeをlaunchplanとして定義します。このlaunchplanパラメータの詳細はドキュメントに記載されています。
Oracle® Cloud Using Oracle Compute Cloud Service (IaaS)
Object Type: Launch Plan
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-6F0236B7-97B0-48D1-B234-437AC0C61344.htm#GUID-6F0236B7-97B0-48D1-B234-437AC0C61344__LAUNCHPLANATTRIBUTES-5901680F
launchplanオブジェクト・タイプに必要なフィールドは、instanceパラメータです。その他のフィールドは全て任意項目です。instancesフィールドはドキュメントのインスタンスについて記載された箇所に詳細があります。
Oracle® Cloud Using Oracle Compute Cloud Service (IaaS)
Instance Attributes
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-6F0236B7-97B0-48D1-B234-437AC0C61344.htm#GUID-6F0236B7-97B0-48D1-B234-437AC0C61344__INSTANCEATTRIBUTES-9574D7F3
shapeパラメータが唯一必須のパラメータで、他のパラメータは任意です。今回のインスタンスのoplansフィールドは以下のようになっています。
"obj_type": "launchplan",
"ha_policy": "active",
"label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance",
"objects": [
    {
        "instances": [
            {
                "networking": {
                    "eth0": {
                        "seclists": [
                            "/Compute-metcsgse00028/default/default"
                        ],
                        "nat": "ippool:/oracle/public/ippool"
                    }
                },
                "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012/b531af9b-e075-4a51-a867-449fd948d374",
                "storage_attachments": [
                    {
                        "volume": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
                        "index": 1
                    }
                ],
                "boot_order": [
                    1
                ],
                "hostname": "a2d1e4.compute-metcsgse00028.oraclecloud.internal.",
                "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012",
                "shape": "oc3",
                "attributes": {
                    "userdata": {},
                    "nimbula_orchestration": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance"
                },
                "imagelist": "/Compute-metcsgse00028/marketplace01-user@oracleads.com/bitnami-wordpress-4.5.3-0-linux-oel-6.7-x86_64",
                "sshkeys": [
                    "/Compute-metcsgse00028/cloud.admin/2016"
                ],
                "tags": []
            }
        ]
    }
]
この定義では、オブジェクト・タイプはlaunchplanです。ha_policyは有効、つまりインスタンスが障害時には再起動します。ラベルはComputeインスタンスの名前です。Bitnamiがインストールするデフォルトのラベルは、"bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance" ですが、この例では、WordPress_4_5_3_instance としておきます。オブジェクト・パラメータは定義の中身を保持しています。必須のフィールドshapeがあり、これはoc3サイズのインスタンスとして今回のインスタンスを定義しています。名前(name)だけでなく、デフォルトのセキュリティ・リスト・アソシエーションを使ってネットワーク接続(network)も設定しています。デフォルトのセキュリティ・リストでは、SSHでLinuxインスタンスへ接続しアプリケーションを構成することを許可する22番ポートが開けられています。前回のエントリの通り、1個のストレージボリュームがアタッチされています。名前でボリュームをアタッチし、論理単位1で関連付けていることに注目してください。ブートローダにヒントを与えてブートファイルからこのイメージを起動するだけでなく、SSHキーをインスタンスに関連付けて、システムが立ち上がり、稼働したらログインできるように、オプションの属性も定義しています。このファイルの唯一の追加情報はこのシステムに到達するために使われるhostname(ホスト名)です。この例では、ホスト名としてa2d1e4.compute-metcsgse00028.oraclecloud.internalを使っています。これはOracle Cloud Serviceが提供するDNSサービスを通じて利用可能な内部ホスト名です。

bitnami-wordpress-4.5.3-0-linux-20160721144012_master.json

3個目のファイルはインスタンスにとってのマスタJSONファイルです。Bitnamiが作成する今回のインスタンス用のデフォルトのファイル名はbitnami-wordpress-4.5.3-0-linux-20160721144012_master.json です。このファイルにおける主要な違いは、oplan obj_typeがorchestrationであり、relationshipsエントリがnullではない、という点です。orchestrationというobj_typeは、Oracle Cloud Serviceに対し、このファイルはインスタンスおよびロード、起動方法を説明するために使われるファイルであることを伝えています。relationshipsパラメータは、起動時に参照が必要な2個のプランがあることを示しています。インスタンスを記述する "bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance" ファイルが必要で、このファイルは"bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage"に対して依存関係があります。ストレージファイルは、立ち上げおよびインスタンスの稼働に必要なディスクを定義します。複数のディスクがある場合には、複数の依存関係を並べます。このファイルの完全版は以下のようになっています。
{
    "relationships": [
        {
            "to_oplan": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
            "oplan": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance",
            "type": "depends"
        }
    ],
    "account": "/Compute-metcsgse00028/default",
    "description": "",
    "schedule": {
        "start_time": "2016-07-21T19:40:33Z",
        "stop_time": null
    },
    "oplans": [
        {
            "obj_type": "orchestration",
            "ha_policy": "",
            "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
            "objects": [
                {
                    "info": {
                        "errors": {}
                    },
                    "status": "ready",
                    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
                    "status_timestamp": "2016-07-21T19:45:16Z",
                    "uri": null
                }
            ]
        },
        {
            "obj_type": "orchestration",
            "ha_policy": "",
            "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance",
            "objects": [
                {
                    "info": {
                        "errors": {}
                    },
                    "status": "ready",
                    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_instance",
                    "status_timestamp": "2016-07-21T19:47:16Z",
                    "uri": null
                }
            ]
        }
    ],
    "user": "/Compute-metcsgse00028/cloud.admin",
    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_master"
}
これらの2個のファイルはインスタンスとストレージとインスタンス間の関係を定義しています。Computeコンソールの中でOrchestraionを見ると、オーケストレーションの表示、開始、削除、サイズ変更、ダウンロードができることがわかります。インスタンス実行中であれば、インスタンスを停止することができます。


オーケストレーションを表示すると、[download the json code](JSONコードのダウンロード)があり、デスクトップにJSONコードをダウンロードすることができます。インスタンスの削除機能は、Instanceタブからこのタブに移動しました。インスタンスを削除するには、Orchestrationタブでインスタンスを停止してから、インスタンスを構成するコンポーネントを削除する必要があります。Resize Instance(インスタンスのサイズ変更)だけはComputeインスタンスでのみ現れます。これを使えば、様々なシェイプにインスタンスを大きくしたり小さくすることができます。ストレージのサイズアップ、サイズダウンはできません。ストレージのサイズを大きくするには、orchestrationファイルを編集してサイズを変更する必要があります(現時点ではサイズダウンはサポートしていません)。重要なこととして、現時点ではこのUIでJSONファイルの編集はサポートされておりません。JSONファイルを編集する必要がある場合には、ダウンロードして自身のデスクトップで編集し、その後別の名前でアップロードする必要があります。アップロードはOrchestrationタブのUpload Orchestrationボタンを使って実施します。

昨日はストレージのオーケストレーションを構成するstorage JSONファイルを見てきました。今日はインスタンスを定義するinstanceおよびmasterオーケストレーションファイルを見てきました。これら3個のファイルは全てインスタンスおよびインスタンスの起動方法を定義する助けとなるものです。説明に使ったサンプルは、Linuxインスタンス上でPHPの使えるApache HTTP ServerとMySQLを作成するシンプルな例ですが、WordPressをこの構成上に載せ、インスタンスへのログイン、管理が可能になるようセキュリティポートを定義し、HTTP、HTTPSポートを通じて見ることができるようにしています。オーケストレーションを定義してしまえば、REST APIを使ってインスタンスの自動化(立ち上げ、停止など)を実施できます。インスタンスに障害が発生した場合には、スローされるエラーや例外をキャッチするためにEnterprise Managerのようなツールを使用して、再起動の機能を開始することができます。また、使用率が一定期間にわたって閾値を超えていれば、Enterprise Managerを使用してサービスの再構成や変更が可能です。Amazonの場合、これを実現するためにCloudFormationを使用していますが、これは、Amazon AWSサービスでのみ使えます。OracleはEnterprise Managerを使いますが、その理由は、これらのスクリプトや監視ツールはオンプレミスのサーバ、貴社データセンターで稼働する仮想インスタンス、Oracle Cloudもしくは他社のクラウドサービスで動作するComputeインスタンスのために使うことができるからです。

0 件のコメント:

コメントを投稿