tpaexec provision#

プロビジョニングは、クラスターに必要なインスタンスとその他のリソースを作成します。

このプロセスの正確な詳細は、クラスターの構成中に選択したアーキテクチャたとえば M1 とプラットフォームたとえば awscliを使用してボリューム属性を変更する の両方に依存します。

プロビジョニングステージの最後に、基本的なオペレーティングシステムがインストールされた必要な数のインスタンスができます。TPAは、ssh経由でアクセスできますルートにsudoを使用します。

前提条件#

クラスターをプロビジョニングする前に、 クラスター構成 を使用してクラスター構成を生成する必要があります

そして、必要に応じてconfig.ymlを編集して構成を微調整します。

プラットフォーム依存の追加の手順が必要になる場合があります。たとえば、AWS APIアクセスキーペアを取得してEC2インスタンスをプロビジョニングするか、LXDまたはDockerをセットアップしてコンテナをプロビジョニングする必要があります。詳細については、プラットフォームのドキュメントを参照してください。

クイックスタート#

tpaexec provision ~/clusters/speedy
PLAY [Provision cluster]  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  **** **
...

TASK [Set up EC2 instances]  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ***
changed: [localhost] => (item=us-east-1:uproar)
changed: [localhost] => (item=us-east-1:unravel)
changed: [localhost] => (item=us-east-1:kinsman)
...

TASK [Generate ssh_config file for the cluster]  ****  ****  ****  ****  ****  ****  ****  ****  ***
changed: [localhost]

PLAY RECAP  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****
localhost                  : ok=163  changed=35   unreachable=0    failed=0    skipped=44   rescued=0    ignored=2

real    4m42.726s
user    0m39.101s
sys     0m15.687s

このコマンドは、大量の出力を生成しますさらに詳細な出力が必要な場合は、コマンドに-v 、-vv などを追加します。出力は、クラスターディレクトリのansible.log にも記録されます。これは、環境変数ANSIBLE_LOG_PATH を目的のログファイルのパスと名前に設定することによりオーバーライドできます。

エラーなしで完了した場合は、 tpaexec deploy の実行に進んでソフトウェアのインストールと構成を行うことができます。

オプション#

クラウドインスタンスをプロビジョニングするときは、インスタンスが、それらを担当する人間まで直接追跡可能であることを確認することが特に重要です。デフォルトでは、TPAはtpaexec provision を実行しているユーザーのログイン名が所有するものとしてEC2インスタンスにタグ付けします。

名前を変更するには--owner <name> を指定しますたとえば、ユーザー名がpostgresやec2-userのような汎用的なものである場合。イニシャル、「名、姓」、またはその他を一意に識別するために使用できます。

指定した他のオプションはAnsibleに渡されます。

インスタンスへのアクセス#

プロビジョニングが完了すると、インスタンスにSSH接続できるようになります。インスタンスが起動してSSHホストキーをインストールできるようにするために少し遅延した後。上記の出力に示されているように、tpaexecは使用できるssh_configファイルを生成します。

cd ~/clusters/speedy
cat ssh_config
Host *
    Port 22
    IdentitiesOnly yes
    IdentityFile "id_speedy"
    UserKnownHostsFile known_hosts tpa_known_hosts
    ServerAliveInterval 60

Host uproar
    User admin
    HostName 3.88.255.205
Host unravel
    User admin
    HostName 54.80.99.142
Host kinsman
    User admin
    HostName 54.165.229.179

ホストにログインするには、コマンド ssh -F ssh_config の後にホスト名を使用します。例 ssh -F ssh_config uproar

プロビジョニングの直後に tpaexec deploy を実行できます。インスタンスが起動するまで、必要なだけ待機します。インスタンスが起動するのを待ったり、展開を開始する前にssh接続したりする必要はありません。

生成されたファイル#

プロビジョニングプロセス中に、多数の新しいファイルがクラスターディレクトリに作成されます。

ls ~/clusters/speedy
total 240
- rw-r--r-- 1 ams ams 193098 Aug  4 17:59 ansible.log
drwxr-xr-x 2 ams ams   4096 Aug  4 17:38 commands
- rw-r--r-- 1 ams ams   1442 Aug  4 17:54 config.yml
lrwxrwxrwx 1 ams ams     51 Aug  4 17:38 deploy.yml ->
                             /opt/EDB/TPA/architectures/M1/deploy.yml
drwxr-xr-x 2 ams ams   4096 Aug  4 17:38 hostkeys
- rw------- 1 ams ams   1675 Aug  4 17:38 id_speedy
- rw------- 1 ams ams   1438 Aug  4 17:38 id_speedy.ppk
- rw-r--r-- 1 ams ams    393 Aug  4 17:38 id_speedy.pub
drwxr-xr-x 4 ams ams   4096 Aug  4 17:50 inventory
- rw-r--r-- 1 ams ams   2928 Aug  4 17:50 tpa_known_hosts
- rw-r--r-- 1 ams ams    410 Aug  4 17:50 ssh_config
- rw-r--r-- 1 ams ams   3395 Aug  4 17:59 vars.json
drwxr-xr-x 2 ams ams   4096 Aug  4 17:38 vault

私たちはすでにssh configファイルを研究しました。これは、 `id *filesクラスター用に生成されたSSHキーペアとtpa_known_hostsインスタンスにインストールされたhostkeys/` の署名を参照します。

vars.json ファイルは、--cached の後続の呼び出しでtpaexec provision によって使用される場合があります。

inventory/ ディレクトリには、静的および動的インベントリーファイルと、config.ymlのグループおよびホスト変数定義が含まれています。

cat inventory/00-speedy
[tag_Cluster_speedy]
uproar ansible_host=3.88.255.205 node=1 platform=aws
unravel ansible_host=54.80.99.142 node=2 platform=aws
kinsman ansible_host=54.165.229.179 node=3 platform=aws
cat inventory/group_vars/tag_Cluster_speedy/01-speedy.yml
cluster_name: speedy
cluster_tag: tag_Cluster_speedy
edb_repositories: []
failover_manager: repmgr
keyring_backend: system
postgres_flavour: postgresql
postgres_version: 14
preferred_python_version: python3
ssh_key_file: id_speedy
tpa_version: v23.33-24-g4c0909d1
cat inventory/host_vars/kinsman/01-instance_vars.yml
ansible_user: admin
location: main
region: us-east-1
role:

- barman

- log-server

- witness
upstream: uproar
volumes:

- device: /dev/xvda

- device: /dev/sdf
  volume_for: barman_data

config.ymlの変数を変更し、プロビジョニングを再実行すると、これらのファイルが更新されます。構成を変更しない場合、何も起こりません。 config.ymlに新しいインスタンスを追加して再実行すると、既存のインスタンスに影響を与えることなく新しいインスタンスが表示されます。