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)のドキュメントは、下記で確認できます。
- https://galaxy.ansible.com/ui/repo/published/nutanix/ncp/docs/
- NDB を対象としたモジュールは、ntnx_ndb から始まる名前のものです。
今回は、下記のような 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 のタスクで取得したものです。
Ansible でのクローンDB 作成
Playbook は、下記のように実行します。
$ ansible-playbook clone-ndb-postgres-db.yml
少し待つと、クローン DB が作成されます。
クローン DB として、「vectordb-clone-01」が作成されました。
DB の情報を確認できる画面で、「説明をご覧ください」リンクから、接続情報を確認できたりします。(postgres ユーザのパスワードは記載されていませんが、Playbook の YAML で指定したものです)
以上。