Using PGD CLI
=============

PGD CLIとは何ですか?
--------------------

PGD
CLIは、PGDクラスターに接続して管理する便利な方法です。これを使用するには、PGDスーパーユーザー権限または同等のユーザーが必要です。スーパーユーザー権限を持つPGDユーザーは
:ref:`bdr_superuserのロールとレプリケーション <bdr_superuserのロールとレプリケーション>`  です。同等のユーザーの例は、EDB Cloud
Service分散高可用性クラスターのedb_adminです。

..  Important Setting passwords::
   PGD CLIは対話型でパスワードの入力を求めません。次のいずれかの方法を使用してパスワードを渡す必要があります。

- 
`.pgpass <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_ にエントリを追加します。これには、ホスト、ポート、データベース名、ユーザー名、パスワードが含まれます。

- ``PGPASSWORD`` 環境変数にパスワードを設定する。

- 接続文字列にパスワードを含めます。

他のオプションは複数のデータベースでうまく拡張できないか、パスワードの機密性が危険にさらされるため、最初のオプションをお勧めします。

.. ::
   ## PGD CLIの実行

:ref:`installed pgd-cli <installing>` を取得したら、 ``pgd``
コマンドを実行してPGDコマンドラインインターフェイスにアクセスします。
``pgd``
コマンドには、ユーザー名とパスワードとともに、接続するホスト、ポート、データベースに関する詳細が必要です。

PGD 6.5から、 PGD
CLIがBDR拡張機能がインストールされていない通常のPostgresデータベースに接続する場合、あいまいな接続エラーで失敗する代わりに、明確な警告が表示されます。

データベース接続文字列を渡す
----------------------------

``--dsn`` フラグを使用して、データベース接続文字列を\ ``pgd``
コマンドに渡します。 ``--dsn``
フラグを使用して接続文字列を渡す場合、構成ファイルは必要ありません。構成ファイルが存在する場合でも、フラグが優先されます。例

.. code:: sh

   pgd nodes list --dsn "host=bdr-a1 port=5432 dbname=pgddb user=enterprisedb"

データベース接続文字列DSNは、 ``PGD_CLI_DSN``
環境変数を使用して設定することもできます。例

.. code:: sh

   export PGD_CLI_DSN="host=bdr-a1 port=5432 dbname=pgddb user=enterprisedb"
   pgd nodes list

``--dsn``
フラグは環境変数より優先されるため、両方が設定されている場合、\ ``--dsn``
値が使用されます。

コマンドオプションの説明については、 `PGD CLI Command reference <https://www.enterprisedb.com/docs/pgd/latest/reference/cli/command_ref/>`_ を参照してください。

構成ファイルの指定
------------------

``pgd-cli-config.yml`` ファイルが\ ``/etc/edb/pgd-cli``
または\ ``$HOME/.edb/pgd-cli`` にある場合、\ ``pgd``
はそれを使用します。オプションの\ ``-f`` または\ ``--config-file``
フラグを使用して、この動作をオーバーライドできます。例

.. code:: sh

   pgd nodes list -f /opt/my-config.yml
   __OUTPUT__
   Node Name Group Name   Node Kind Join State Node Status
   - -------- ------------ --------- ---------- -----------
   kaftan    dc1_subgroup data      ACTIVE     Up         
   kaolin    dc1_subgroup data      ACTIVE     Up         
   kaboom    dc1_subgroup data      ACTIVE     Up  

出力形式の指定
--------------

``-o`` または\ ``--output``
フラグを使用して、デフォルトの出力形式をJSONに変更します。例

.. code:: sh

   pgd nodes list -o json
   [
     {
       "node_name": "kaftan",
       "node_group_name": "dc1_subgroup",
       "node_kind_name": "data",
       "join_state": "ACTIVE",
       "node_status": "Up",
       "node_id": 3490219809,
       "node_seq_id": 2,
       "node_local_dbname": "pgddb"
     },
     {
       "node_name": "kaolin",
       "node_group_name": "dc1_subgroup",
       "node_kind_name": "data",
       "join_state": "ACTIVE",
       "node_status": "Up",
       "node_id": 2111777360,
       "node_seq_id": 1,
       "node_local_dbname": "pgddb"
     },
     {
       "node_name": "kaboom",
       "node_group_name": "dc1_subgroup",
       "node_kind_name": "data",
       "join_state": "ACTIVE",
       "node_status": "Up",
       "node_id": 2710197610,
       "node_seq_id": 3,
       "node_local_dbname": "pgddb"
     }
   ]

PGD CLIは、次の出力形式をサポートしています。

.. csv-table::
  :header: Setting,Format,Description
  :widths: 12,10,25
  :align: left
  :class: longtable

  `simple`,Tabular,単純な表形式ビュー。 (デフォルト)。
  `json`,JSON,フォーマットなしの生データを表示します。一部のコマンドでは、JSON出力には、追加のフィールドや詳細なメッセージなど、表形式出力より多くのデータが表示される場合があります。
  `psql`,PSQL,PSQL出力のスタイルの表形式ビュー。フォーマット。
  `modern`,Tabular,ボックス文字を使用してテーブルを区切る表形式ビュー。
  `markdown`,Markdown,`pgd assess`などの一部のコマンドの長い形式の非表形式出力を生成するマークダウンスタイルの出力。

コマンドラインヘルプへのアクセス
--------------------------------

サポートされているコマンドをリストするには、次を入力します。

.. code:: sh

   pgd --help

特定のコマンドとそのパラメーターのヘルプが必要な場合は、\ ``pgd <command_name> --help``
と入力してください。例

.. code:: sh

   pgd nodes list --help

..  Note Avoiding stale data::
   PGD CLIは、クラスターから分離されたノードにまだ接続している場合、クラスターの状態に関する古いデータを結果ことができます。 `pgd-cli-config.yml` ファイルを編集するか、`--dsn` 設定を変更して、クラスター内のアクティブなノードに接続していることを確認します。
