環境要件
obshell-sdk-pythonはPython 3.0以降のバージョンに適用されます。
環境内のobshellが実行状態にあることを確認する必要があります。
手順
説明
このセクションでは、OceanBaseクラスタのデプロイを例に、obshell-sdk-pythonの使用方法を紹介します。任意のOBServerノードで以下の手順を実行するだけです。
obshell-sdk-pythonのインストール
pip install obshellクライアントの作成
from obshell import ClientSet from obshell.auth import PasswordAuth def main(): client = ClientSet("10.10.10.1", 2886, PasswordAuth("****", "v1"))例の
10.10.10.1は対象obshellノードのIPアドレス、2886は対象obshellノードのサービスポート番号です。実際の状況に応じて、対応するIPとポート番号に変更してください。PasswordAuthはobshellリクエスト時に使用されるセキュリティ認証方式であり、対象obshellが存在するクラスタのroot@sysユーザーのパスワードと、使用する認証方式のバージョン番号を設定する必要があります。バージョン番号を指定しない場合、clientは対象obshellのバージョンに応じて適切な認証方式のバージョンを自動選択します。説明
対象obshellの身元がSingle Agentの場合、PasswordAuthを設定する必要はありません。
また、指定したバージョンのclientを作成することもできます。例は以下のとおりです。
from obshell import ClientV1 from obshell.auth import PasswordAuth def main(): client = ClientV1("10.10.10.1", 2886, PasswordAuth("****", "v1"))OceanBaseクラスタのデプロイ
obshell-sdk-pythonは、OceanBaseクラスタを作成するための2種類のメソッドを提供しています。1つは、obshellに対応するAPIメソッドをリクエストして成功した後、すぐに戻る方法です。もう1つは、obshellにAPIをリクエストして成功した後、obshellのタスク実行完了を待ってから戻る方法です。前者はタスクが非同期で実行され、後者はタスクが同期で実行されます。
このセクションでは、1-1-1クラスタのデプロイを例に、コードは以下のとおりです:
タスクの非同期実行タスクの同期的実行from obshell import ClientSet from obshell.auth import PasswordAuth def main(): client = ClientSet("10.10.10.1", 2886, PasswordAuth("****")) # 自身をMASTERに加入させる dag = client.v1.join("10.10.10.1", 2886, "zone1") client.v1.wait_dag_succeed(dag-generic_id) # フォロワーをクラスターに加入させる dag = client.v1.join("10.10.10.2", 2886, "zone2") client.v1.wait_dag_succeed(dag_generic_id) dag = client.v1.join("10.10.10.3", 2886, "zone3") client.v1.wait_dag_succeed(dag_generic_id) # 各OBServerノードのパラメータを設定する configs = { "datafile_size": "24G", "log_disk_size": "24G", "cpu_count": "16", "memory_limit": "16G", "system_memory": "8G", "enable_syslog_recycle": "true", "enable_syslog_wf": "true"} dag = client.v1.config_observer(configs, "GLOBAL", []) client.v1.wait_dag_succeed(dag_generic_id) # OceanBaseクラスタの設定情報を設定する dag = client.v1.config_obcluster("test-sdk", 11, "****") client.v1.wait_dag_succeed(dag_generic_id) # クラスタを初期化する dag = client.v1.init() client.v1.wait_dag_succeed(dag_generic_id) # 現在のクラスタの状態情報を取得する status = client.v1.get_status() print(status)from obshell import ClientSet from obshell.auth import PasswordAuth def main(): client = ClientSet("10.10.10.1", 2886, PasswordAuth("****")) # join で自分自身をマスターにする client.v1.join_sync("10.10.10.1", 2886, "zone1") # フォロワーをクラスターに追加する client.v1.join_sync("10.10.10.2", 2886, "zone2") client.v1.join_sync("10.10.10.3", 2886, "zone3") # 各OBServerノードのパラメータを設定する configs = { "datafile_size": "24G", "log_disk_size": "24G", "cpu_count": "16", "memory_limit": "16G", "system_memory": "8G", "enable_syslog_recycle": "true", "enable_syslog_wf": "true"} client.v1.config_observer_sync(configs, "GLOBAL", []) # OceanBaseクラスタの設定情報を設定する client.v1.config_obcluster_sync("test-sdk", 11, "****") # クラスタを初期化する client.v1.init_sync() # 現在のクラスタの状態情報を取得する status = client.v1.get_status() print(status)