Terraform Enterprise をUbuntu にインストールする

 Ubuntu(仮想マシン)上にTerraform Enterprise(以下TFE) をインストールしてみました。


前提条件

用意する環境として、事前にこちらのドキュメントに沿って、準備しておきます。

手順

Ubuntu のインストールと準備

2vCPU/8GB メモリ、仮想ディスクとしては、64GB(Thin provisioning) で用意し、その上にUbuntu 20.04 LTS をインストールしました。※Requirement としては、4vCPU/8GB が推奨されているので、Production 用途では4vCPU 以上をアサインする様にします。

その上で、この仮想マシン上に、Docker をインストールしています。※バージョン指定無く、インストールしましたが、Recommend である "19.03.11" をインストールした方が良さそうです。

TFE インストールには証明書が必要になるため、certbot コマンドで証明書を発行します。
この環境ではGoogle Cloud DNS を使っています。仮想マシンにアサインしたIP アドレスを <HOSTNAME>.<MYDOMAIN> のAレコードとして登録しています。
$ certbot --server https://acme-v02.api.letsencrypt.org/directory \
-d "<HOSTNAME>.<MYDOMAIN>" --manual --preferred-challenges dns-01 certonly \
--work-dir ./<HOSTNAME>/wd \
--config-dir ./<HOSTNAME>/cfg \
--logs-dir ./<HOSTNAME>/logs

案内に従ってステップを進めていくと、DNS TXT レコード とそれに対応する value が表示されるので、その組合せをGoogle Cloud DNS に登録します。
名前解決出来るまでしばらく時間が掛かりますが、以下のコマンドで登録したDNS TXT レコードの value が返ってくればOKです。
nslookup -q=txt _acme-challenge.<HOSTNAME>.<MYDOMAIN>

クエリが通ったら、プロンプトでEnter を入力し、処理を終えます。
Congratulations! Your certificate and chain have been saved at: と出力されていれば、無事処理が終わっています。
 

Terraform Enterprise のインストール

インストールスクリプトを実行します。
$ curl https://install.terraform.io/ptfe/stable | sudo bash
Determining local address
The installer was unable to automatically detect the private IP address of this machine.
Please choose one of the following network interfaces:
[0] ens160	aaa.bbb.ccc.ddd
[1] docker0	172.17.0.1
Enter desired number (0-1): 0
The installer will use network interface 'ens160' (with IP address 'aaa.bbb.ccc.ddd').
Determining service address
The installer was unable to automatically detect the service IP address of this machine.
Please enter the address or leave blank for unspecified.
Service IP address: aaa.bbb.ccc.ddd
Does this machine require a proxy to access the Internet? (y/N) N
The installed version of Docker (20.10.7) may not be compatible with this installer.
The recommended version is 19.03.11
Do you want to proceed anyway? (y/N) y
 
Docker で利用されているNetwork インターフェースでは "無い" 方を選択し、ステップを進めていきます。 処理が成功すると、以下の様に出力されるので、別途ブラウザを開いて、後続のステップを進めていきます。
...<SNIP>...
Pulling latest replicated-operator image
stable-2.52.0: Pulling from replicated/replicated-operator
Image docker.io/replicated/replicated-operator:stable-2.52.0 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
69692152171a: Already exists
b8d1591cc3e8: Pull complete
99408039ae2c: Pull complete
f9266063add8: Pull complete
3669a4e3d61c: Pull complete
69bf04578910: Pull complete
bc03da138eb1: Pull complete
Digest: sha256:bd80d36e0a6dfe0ef8a50e858db9680418a072cd53f084caf4b488a294d8fcb9
Status: Downloaded newer image for replicated/replicated-operator:stable-2.52.0
docker.io/replicated/replicated-operator:stable-2.52.0
Tagging replicated-operator image
Stopping replicated-operator service
Installing replicated-operator service
Starting replicated-operator service
Created symlink /etc/systemd/system/docker.service.wants/replicated-operator.service → /etc/systemd/system/replicated-operator.service.

Operator installation successful

To continue the installation, visit the following URL in your browser:

  http://aaa.bbb.ccc.ddd:8800


ブラウザでガイドされるステップに従って進めていきます。
 
取得しておいたLet's Encrypt の証明書アップロードしていきます。./<HOSTNAME>/cfg/live/<HOSTNAME>.<DOMAIN> 配下にあるファイルを利用して、Private Key とCertificate それぞれアップロードします。
続いて、ライセンスファイルをアップロードします。
 
インストールタイプの選択をします。今回は、Airgapped 環境ではないので、Online を選択し、後続のステップに進みます。

 
ライセンスのアクティベーション処理に進みます。
こちらはライセンス取得時に入力したEmail アドレスにActivation Code が送信される形になっています。 
 
この後、TFE のDashboard の <Settings> からEnryption Password を設定します

暫くすると、TFE のDashboard にあるステータスがStarted になります。これでTFE が稼働している状態ですので、<Open> Link をクリックして、TFE のユーザー作成、Organization 作成を実施します。

Terraform Enterprise の確認

<Open> Link をクリックすると、Create an account のページが開くので、TFE のアカウントを作成します。アカウントが作成されたら、引き続きOrganization を作成します。
無事作成が済んだら、初期セットアップ完了です。
 
あとは、Terraform Cloud と同じで、Workspace を作成し、Terraform の設定していき、Configuration を流していく形になります。Pre-Install Checklist をちゃんとパスした構成であれば、大きく躓くこと無く、TFE のインストールが出来ました。

参考までに、TFE をインストールした環境では以下のリソースがDocker コンテナとして稼働しています。
$ docker ps
CONTAINER ID   IMAGE                                                                    COMMAND                  CREATED       STATUS       PORTS                                                                                                                                                                                NAMES
a730e1355b0c   aaa.bbb.ccc.ddd:9874/hashicorp-atlas:CIRC-132698-eb61e4df7f               "/usr/bin/init.sh ba…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_sidekiq
866b0489e145   aaa.bbb.ccc.ddd:9874/hashicorp-atlas:CIRC-132698-eb61e4df7f               "/usr/bin/init.sh ba…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_atlas
d215aed55aed   aaa.bbb.ccc.ddd:9874/hashicorp-tf-registry:CIRC-15414-d83fb774            "setup-ssl /usr/bin/…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_registry_worker
484627c28183   aaa.bbb.ccc.ddd:9874/hashicorp-tf-registry:CIRC-15414-d83fb774            "setup-ssl /usr/bin/…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_registry_api
0508cf9d4d63   aaa.bbb.ccc.ddd:9874/hashicorp-terraform-build-worker:CIRC-581-2eb3feb    "start-tbw /terrafor…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_build_worker
d7ab6ad9f3ac   aaa.bbb.ccc.ddd:9874/hashicorp-archivist:CIRC-725-8541c8d                 "/usr/bin/wait-for-t…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_archivist
7ee46efba8f6   aaa.bbb.ccc.ddd:9874/hashicorp-terraform-build-manager:CIRC-393-4a4f999   "/usr/bin/tbm-start"     2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_build_manager
0031c3aa7567   aaa.bbb.ccc.ddd:9874/hashicorp-tfe-backup-restore:136-85409d0             "/usr/bin/wait-for-t…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_backup_restore
1d5c7da12026   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-vault:CIRC-299-6cec545                "vault-start"            2 hours ago   Up 2 hours   0.0.0.0:8201->8201/tcp                                                                                                                                                               ptfe_vault
0dab16ab225e   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-postgres:3cdf36a                      "docker-entrypoint.s…"   2 hours ago   Up 2 hours   5432/tcp                                                                                                                                                                             ptfe-postgres
314094b07dd0   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-rabbitmq:9e22de8                      "/start.sh rabbitmq-…"   2 hours ago   Up 2 hours   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp                                                                                                                                  rabbitmq
9e4a6b586f42   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-nginx:0c904f0                         "/docker-entrypoint.…"   2 hours ago   Up 2 hours   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:23001->8080/tcp                                                                                                                    ptfe_nginx
a62862d21566   aaa.bbb.ccc.ddd:9874/hashicorp-slug-ingress:CIRC-598-a632d29              "/usr/bin/slug-ingre…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_slug_ingress
2bf01b6089cc   aaa.bbb.ccc.ddd:9874/hashicorp-tfe-telegraf:1.16.3-alpine                 "/entrypoint.sh tele…"   2 hours ago   Up 2 hours   8092/udp, 8125/udp, 8094/tcp                                                                                                                                                         telegraf
5a06a394eb7b   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-nomad:a67323f                         "nomad-run"              2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_nomad
e855f690aa68   aaa.bbb.ccc.ddd:9874/hashicorp-outbound-http-proxy:9e4920a                "dumb-init -- /entry…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_outbound_http_proxy
a62758e9486f   aaa.bbb.ccc.ddd:9874/hashicorp-tfe-influxdb:1.8-alpine                    "/entrypoint.sh infl…"   2 hours ago   Up 2 hours   8086/tcp                                                                                                                                                                             influxdb
3c2a5131fc83   aaa.bbb.ccc.ddd:9874/hashicorp-terraform-state-parser:CIRC-421-b86da4e    "/terraform-state-pa…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_state_parser
e758d2e72f0a   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-redis:18a8d83                         "docker-entrypoint.s…"   2 hours ago   Up 2 hours   6379/tcp                                                                                                                                                                             ptfe_redis
ee3767969c43   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-base:439f3fd                          "/anchor-sleep.sh"       2 hours ago   Up 2 hours                                                                                                                                                                                        anchor_isolation_network
4534a628f738   aaa.bbb.ccc.ddd:9874/hashicorp-ptfe-health-check:CIRC-171-797def4         "/root/ptfe-health-c…"   2 hours ago   Up 2 hours                                                                                                                                                                                        ptfe_health_check
e1e8c2509d74   registry.replicated.com/library/statsd-graphite:1.1.8-20210517           "/usr/bin/supervisor…"   2 hours ago   Up 2 hours   0.0.0.0:49158->2003/tcp, :::49158->2003/tcp, 0.0.0.0:49157->2004/tcp, :::49157->2004/tcp, 0.0.0.0:49156->2443/tcp, :::49156->2443/tcp, 0.0.0.0:49154->8125/udp, :::49154->8125/udp   replicated-statsd
cbead5b6b07e   registry.replicated.com/library/retraced:1.3.43                          "/src/replicated-aud…"   2 hours ago   Up 2 hours   0.0.0.0:9873->3000/tcp, :::9873->3000/tcp                                                                                                                                            retraced-api
346e2b8567ee   registry.replicated.com/library/retraced:1.3.43                          "/src/replicated-aud…"   2 hours ago   Up 2 hours   3000/tcp                                                                                                                                                                             retraced-processor
96745fe85b21   registry.replicated.com/library/retraced:1.3.43                          "/bin/sh -c '/usr/lo…"   2 hours ago   Up 2 hours   3000/tcp                                                                                                                                                                             retraced-cron
a19422672e3e   registry.replicated.com/library/retraced-nsq:1.3.43                      "/bin/sh -c nsqd"        2 hours ago   Up 2 hours   4150-4151/tcp, 4160-4161/tcp, 4170-4171/tcp                                                                                                                                          retraced-nsqd
df66273713fa   registry.replicated.com/library/retraced-postgres:1.3.43                 "docker-entrypoint.s…"   2 hours ago   Up 2 hours   5432/tcp                                                                                                                                                                             retraced-postgres
a922fb5e3b89   registry.replicated.com/library/premkit:v1.3.8                           "/usr/bin/premkit da…"   2 hours ago   Up 2 hours   80/tcp, 443/tcp, 2080/tcp, 0.0.0.0:9880->2443/tcp, :::9880->2443/tcp                                                                                                                 replicated-premkit
f7c8f3e8feb4   replicated/replicated-operator:current                                   "/usr/bin/replicated…"   2 hours ago   Up 2 hours                                                                                                                                                                                        replicated-operator
9215f399a62f   replicated/replicated-ui:current                                         "/usr/bin/replicated…"   2 hours ago   Up 2 hours   0.0.0.0:8800->8800/tcp, :::8800->8800/tcp                                                                                                                                            replicated-ui
ddc6ef050137   replicated/replicated:current                                            "/usr/bin/entrypoint…"   2 hours ago   Up 2 hours   0.0.0.0:9874-9879->9874-9879/tcp, :::9874-9879->9874-9879/tcp                                                                                                                        replicated

このブログの人気の投稿