bare(-metal servers)

config.ymlでplatform: bare を設定します

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

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

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できます

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

たとえば、生成されたユーザーキーでsshし、既存のホストキーを保持するには、次のようにします。

$ 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' などの出力を生成して終了するコマンドに置き換えます。

詳細については:

  • Use a different ssh key

  • Manage ssh host keys for bare instances

配布サポート

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

IPアドレス

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

TPAはこれらのIPアドレスを2つの方法で使用します。最初に、デプロイ中にインスタンスにsshしてコマンドを実行します。 2番目に、クラスター内の通信を設定します。たとえば、 /etc/hosts またはPostgresのprimary_conninfo を設定します。

public_ip を指定すると、展開中にインスタンスへのsshに使用されます。 private_ip を指定すると、クラスター内の通信の設定に使用されます。両方を指定した場合、展開中にpublic_ip が使用され、クラスター通信にprivate_ip が使用されます。

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