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