Creating Postgres users
=======================

展開中にPostgresユーザーを作成するには、 ``cluster_vars``
の下の\ ``postgres_users``
またはconfig.ymlの特定のインスタンスの\ ``vars``
のリストにエントリを追加します。

.. code:: yaml

   cluster_vars:
     postgres_users:
     - username: example

     - username: otheruser
       generate_password: true
       role_attrs:
       - superuser
       - replication
       granted_roles:
       - r1
       - r2

上記の例では、2人のユーザーを作成します（repmgrやbarmanなど、TPA自分自身が作成することを決定したユーザーを除く）。

各エントリは、作成する\ ``username`` を指定する必要があります。

``granted_roles``
リスト内のロールは、新しく作成されたユーザーに付与されます。

``role_attrs`` リストには、特定の `CREATE ROLE options <https://www.postgresql.org/docs/12/sql-createrole.html>`_ が含まれる場合があります

``[NO]SUPERUSER`` 、\ ``[NO]CREATEDB`` 、\ ``[NO]LOGIN``
（ユーザーまたはロールを作成するため）など

パスワード生成
--------------

デフォルトでは、TPAはユーザーのランダムなパスワードを生成し、クラスターのインベントリ内の\ ``<username>_password``
という名前のボールト暗号化変数に保存します。後で値を取得できます。

.. code:: bash

   $ tpaexec show-password ~/clusters/speedy example
   beePh~iez6lie4thi5KaiG%eghaeT]ai

config.ymlでパスワードを明示的に指定することはできませんが、代わりに別の\ ``<username>_password``
をインベントリーに保存できます。

.. code:: bash

   $ tpaexec store-password ~/clusters/speedy example --random
   $ tpaexec show-password ~/clusters/speedy example
   )>tkc}}k1y4&epaJ?;NJ:luT{C7D*<p
   $ tpaexec store-password ~/clusters/speedy example
   Password:
   $ tpaexec show-password ~/clusters/speedy example
   terrible insecure password
   $

ユーザーにパスワードをまったく持たせたくない場合は、
``generate_password: false`` を設定できます。
