bare(-metal servers)
====================

config.ymlに\ ``platform: bare`` を設定します

このプラットフォームは、ベアメタルサーバーやクラウドプラットフォームAWSを含む既にプロビジョニングされたサーバーを含む、SSHを介してアクセス可能なサーバーをサポートすることを目的としています。

各ターゲットサーバーのIPアドレスとユーザー名を定義する必要があります。

.. code:: yaml

   instances:
     - node: 1
       Name: igor
       platform: bare
       public_ip: 192.0.2.1
       private_ip: 192.0.2.222
       vars:
         ansible_user: xyzzy

次のことを確認する必要があります

1. TPAは\ ``ansible_user`` としてインスタンスにsshできます

2. ``ansible_user`` には、インスタンスでsudoアクセスがあります

SSHアクセス
-----------

上記の例では、TPAは\ ``xyzzy@192.0.2.1``
にssh接続してインスタンスにアクセスします。

デフォルトでは、TPAは\ ``ssh-keygen``
を実行して、クラスターディレクトリに新しいSSHキーペアを生成します。プライベートキーの名前は\ ``id_cluster_name``
であり、公開キーは\ ``id_cluster_name.pub`` に保存されます。

インスタンスが受け入れる別のキーを使用するように\ ``ssh_key_file: /path/to/id_keyname``
を設定するか、生成されたキーからのアクセスを許可するようにインスタンスを構成する必要がありますたとえば、
``id_cluster_name.pub`` のコンテンツを\ ``~xyzzy/.ssh/authorized_keys``
に追加する\ ``ssh-copy-id`` を使用します。

また、sshがインスタンスのホストキーを検証できることを確認する必要があります。クラスターディレクトリの\ ``known_hosts``
ファイルにエントリを追加するか、TPA生成ホストキーをクラスターディレクトリの\ ``hostkeys/ssh_host_ *_key*``
からインスタンスの\ ``/etc/ssh``
にインストールできます。生成された\ ``tpa_known_hosts``
ファイルには、これらのキーのエントリが含まれています。

たとえば、生成されたユーザーキーを使用してssh接続しますが、既存のホストキーを保持するには、次のことができます。

.. code:: bash

   $ cd ~/clusters/speedy
   $ ssh-copy-id -i id_speedy xyzzy@192.0.2.1
   $ ssh-keyscan -H 192.0.2.1 >> tpa_known_hosts

``tpaexec ping ~/clusters/speedy``
を実行して、動作しているかどうかを確認します。まだない場合は、コマンドに\ ``-vvv``
を追加して、完全なsshコマンドラインを確認します。 （注
Ansibleはsshを呼び出して、インスタンスで\ ``bash -c 'python3 && sleep 0'``
のようなコマンドを実行します。デバッグ中にsshコマンドを手動で実行する場合、これを\ ``'id'``
などの出力を生成して終了するコマンドに置き換えます。）

詳細については

- :ref:`ssh_key_file <ssh_key_file>` 

- :ref:`Managing SSH host keys <Managing SSH host keys>` 

ディストリビューションのサポート
--------------------------------

TPAは、ターゲットインスタンスで実行されているディストリビューションを検出しようとしますが、サポートされていない場合は失敗します。
TPAは現在Debian 10/11/12;またはbuster/bulseye/bookworm、Ubuntu
16.04/18.04/20.04/22.04;またはxenial/bionic/focal/jammy)、およびRHEL/CentOS/Rocky/AlmaLinux
7. x/8.x)\ ``bare`` インスタンスで。

IPアドレス
----------

任意のインスタンスに\ ``public_ip`` 、\ ``private_ip``
、またはその両方を指定できます。

TPAは、これらのIPアドレスを2つの方法で使用します。1つ目は、インスタンスにsshして、展開中にコマンドを実行します。次に、クラスター内の通信を設定するためなど、\ ``/etc/hosts``
またはPostgresの\ ``primary_conninfo`` を設定します。

``public_ip``
を指定すると、デプロイ中にインスタンスにssh接続するために使用されます。
``private_ip``
を指定すると、クラスター内の通信を設定するために使用されます。両方を指定した場合、
``public_ip`` は展開中に使用され、 ``private_ip``
はクラスター通信に使用されます。

いずれかのみを指定した場合、アドレスは両方の目的に使用されます。たとえば、別のネットワーク上のサーバーに\ ``public_ip``
のみを設定したり、閉じたネットワーク内でTPAを実行している場合は\ ``private_ip``
のみを設定したりできます。
(パブリック/プライベートを使用する代わりに、1つのIPアドレスのみを指定する必要がある場合は、\ ``ip_address``
を設定できます。)

新しく始める
------------

``bare``
プラットフォームのクラスターで新しくスタートするには、適切な外部ツールを使用してサーバーを再インストール、再イメージ、または再プロビジョニングし、このドキュメントで説明しているプロセスを繰り返します。新しいサーバーのIPアドレスが異なる場合、または複雑なsshセットアップがある場合は、
:ref:`tpaexec deprovision <tpaexec deprovision>` を実行してローカルに作成されたすべてのファイルを削除してから
:ref:`tpaexec provision <tpaexec provision>` 

それらを再作成し、上記と同様にこのドキュメントのプロセスを繰り返します。
