環境要件
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ユーザーのパスワードと、使用する認証方式のバージョン番号を設定する必要があります。バージョン番号が指定されていない場合、クライアントはターゲットobshellのバージョンに基づいて適切な認証方式のバージョンを自動的に選択します。説明
ターゲットobshellの身元がSingle Agentの場合、PasswordAuthを設定する必要はありません。
また、指定されたバージョンのクライアントを作成することもできます。例は以下のとおりです。
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メソッドのリクエストが成功した後、即座に返す方法です。2つ目は、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 自分がMASTERになる 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)