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
ジャンプホストを介してインスタンスに接続する必要がある場合は、
config_yml のjumphost
トップレベルセクションでその詳細を指定します。
jumphost:
name: myjumphost
user: my_username
identity_file: ~/.ssh/id_ed25519
TPAは、ジャンプホスト用に生成されたssh構成にHost
セクションを作成し、各ホストにProxyJump 指示子を追加します。
プロビジョニングの直後に 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に新しいインスタンスを追加して再実行すると、既存のインスタンスに影響を与えることなく新しいインスタンスが表示されます。