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``
ファイルにエントリを追加するか、クラスターディレクトリの\ ``hostkeys/ssh_host_ *_key*``
からTPAで生成されたホストキーをインスタンスの\ ``/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:`Use a different ssh key <ssh_key_file>` 

-  :ref:`Manage ssh host keys for bare instances <Managing SSH host keys>` 

配布サポート
------------

TPAは、ターゲットインスタンスで実行されているディストリビューションを検出しようとしますが、サポートされていない場合は失敗します。
TPAは現在、Debian（8/9/10;またはjessie/stretch/buster）、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つの方法で使用します。最初に、デプロイ中にインスタンスにsshしてコマンドを実行します。第二に、クラスター内の通信をセットアップするため、たとえば、
``/etc/hosts`` またはPostgresの\ ``primary_conninfo`` を設定します。

``public_ip``
を指定すると、デプロイ中にインスタンスにsshするために使用されます。
``private_ip``
を指定すると、クラスター内の通信のセットアップに使用されます。両方を指定すると、展開中に\ ``public_ip``
が使用され、クラスター通信に\ ``private_ip`` が使用されます。

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