NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

NDB で PostgreSQL のクローン DB を作成してみる。(Ansible)

Nutanix Database Service(NDB)で PostgreSQL のクローン DB を、Ansible で作成してみます。

今回の内容です。

今回の環境

NDB Server は、2.5.5.1 です。

そして、PostgreSQL のクローン元 DB は、下記の手順で構築したものです。NDB ノクローンは、ベクトル DB の Copy Data Management などでも利用できそうです。

クローン元 DB には、タイムマシンでスナップショットを作成してあります。

  • タイムマシン名:pgsql15-02_TM
  • スナップショット名: snap-01

Ansible の実行環境として、Nutanix Dev Station を利用しています。

今回の Ansible(ansible-playbook コマンド)のバージョンです。

$ ansible-playbook --version
ansible-playbook [core 2.16.6]
  config file = None
  configured module search path = ['/home/vscode/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.12/site-packages/ansible
  ansible collection location = /home/vscode/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.12.3 (main, Apr 24 2024, 11:17:35) [GCC 12.2.0] (/usr/local/bin/python)
  jinja version = 3.0.3
  libyaml = True

Ansible Playbook(YAML ファイル)の用意

NDB の Ansible Collection(nutanix.ncp)のドキュメントは、下記で確認できます。

 

今回は、下記のような Ansible Playbook を作成しました。

clone-ndb-postgres-db.yml

  • L9-L11: NDB Server の接続情報を指定(Nutanix クラスタではなく)
  • L17-L18: filters で DB UUID などがうまく指定できなかったので、すべてのスナップショットを取得して、次のタスクで「snap-01」の UUID を取得。
  • L25: 今回のクローン元スナップショット名は、snap-01
    • このスナップショットは、事前作成しておきます。
    • 今回の Playbook では、同名スナップショットが複数存在すると動作しないかもしれません。
  • L34: 作成するクローン DB の名前は、vectordb-clone-01
  • L41: 作成するクローン DB の DB サーバー VM の名前は、vectordb-clone-vm-01
  • L42: クローン作成される DB サーバー VMの、NDB Drive ユーザのパスワード
  • L49: クローン作成される DB サーバー VM に SSH 接続するための公開鍵
  • L52: PostgreSQL DB に接続する postgres ユーザのパスワード
  • L55: スナップショット(snap-01)を作成してあるタイムマシンの名前
  • L56: クローン元スナップショットの UUID を指定します。これは L15~L25 のタスクで取得したものです。

gist.github.com

 

Ansible でのクローンDB 作成

Playbook は、下記のように実行します。

$ ansible-playbook clone-ndb-postgres-db.yml

少し待つと、クローン DB が作成されます。

クローン DB として、「vectordb-clone-01」が作成されました。

DB の情報を確認できる画面で、「説明をご覧ください」リンクから、接続情報を確認できたりします。(postgres ユーザのパスワードは記載されていませんが、Playbook の YAML で指定したものです)

以上。

 

©2024 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。