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

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

.. 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`` を設定できます。
