tpaexec provision

Provisionは、クラスターに必要なインスタンスとその他のリソースを作成します。

このプロセスの正確な詳細は、クラスターの構成中に選択したアーキテクチャ(

M1 など)とプラットフォーム( 認証情報に関する奇妙なAWSエラー

など)の両方によって異なります。

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

前提条件

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

(およびconfig.ymlを編集して、必要に応じて構成を微調整します)。

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

クイックスタート

[tpa]$ tpaexec provision ~/clusters/speedy

PLAY [Provision cluster]  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  **** **
...

TASK [Set up EC2 instances]  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ***
changed: [localhost] => (item=us-east-1:quirk)
changed: [localhost] => (item=us-east-1:keeper)
changed: [localhost] => (item=us-east-1:zealot)
changed: [localhost] => (item=us-east-1:quaver)
changed: [localhost] => (item=us-east-1:quavery)
...

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

PLAY RECAP  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****  ****
localhost                  : ok=128  changed=20   unreachable=0    failed=0

real    2m19.386s
user    0m51.819s
sys     0m27.852s

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

エラーなしで完了した場合は、

tpaexec deploy の実行に進み、ソフトウェアをインストールして構成できます。

オプション

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

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

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

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

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

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

Host quirk
    User admin
    HostName 54.227.207.189
Host keeper
    User admin
    HostName 34.229.111.196
Host zealot
    User admin
    HostName 18.207.108.211
Host quaver
    User admin
    HostName 54.236.36.251
Host quavery
    User admin
    HostName 34.200.214.150
[tpa]$ ssh -F ssh_config quirk
Linux quirk 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Aug  4 12:31:28 2018 from 136.243.148.74
admin@quirk:~$ sudo -i
root@quirk:~#

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

生成されたファイル

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

[tpa]$ 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

これは、 `id ** ファイル(クラスター用に生成されたSSHキーペア)とtpa_known_hosts(インスタンスにインストールされたthehostkeys/` の署名)を参照します。

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

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

[tpa]$ cat inventory/00-speedy
[tag_Cluster_speedy]
quirk ansible_host=54.227.207.189 node=1 platform=aws
keeper ansible_host=34.229.111.196 node=2 platform=aws
zealot ansible_host=18.207.108.211 node=3 platform=aws
quaver ansible_host=54.236.36.251 node=4 platform=aws
quavery ansible_host=34.200.214.150 node=5 platform=aws

[tpa]$ cat inventory/group_vars/tag_Cluster_speedy/01-speedy.yml
cluster_name: speedy
cluster_tag: tag_Cluster_speedy
postgres_version: 15
tpa_version: v23.10-22-g30c1d5ea
tpa_2q_repositories: []
vpn_network: 192.168.33.0/24

[tpa]$ cat inventory/host_vars/zealot/02-topology.yml
role:

- barman

- log-server

- openvpn-server

- monitoring-server

- witness
upstream: quirk

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