Vaultをインストール・セットアップしてみたので、そのときのメモになります。
想定する環境を説明します。Vaultについては、Integrated Storage (Raft)
を利用して、クラスターを構成します。
3台のサーバでクラスターを構成してみます。
Ubuntu 20.04 LTS
にインストールします。
1
2
3
4
5
% cat /etc/lsb-release
DISTRIB_ID = Ubuntu
DISTRIB_RELEASE = 20.04
DISTRIB_CODENAME = focal
DISTRIB_DESCRIPTION = "Ubuntu 20.04.2 LTS"
apt
リポジトリがあるので、そこからインストールします。公式解説ページはこちら 。
以下のコマンドを実行して、GPGキーを追加します。
1
2
3
% curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $( lsb_release -cs) main"
各サーバー上で以下のコマンドを実行して、Vault
のインストールを行います。
1
% sudo apt-get update && sudo apt-get install vault
以下のものが導入されるようです:
vault
のバイナリーsystemd
設定ファイル/opt/vault
ディレクトリが作成される/opt/vault/data
はデータ格納用を意図していると思われる/opt/vault/tls
はオレオレ証明書を作成して格納しているようです/etc/vault.d
が作成される/etc/vault.d/vault.hcl
が標準の設定ファイルとしてデプロイされる 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
% openssl x509 -text -noout -in /opt/vault/tls/tls.crt
Certificate:
Data:
Version: 3 ( 0x2)
Serial Number: 7e:28:fd:b0:56:83:69:a9:d0:08:8c:26:f5:18:60:1e:42:17:16:02
Signature Algorithm: sha256WithRSAEncryption
Issuer: O = HashiCorp, CN = Vault
Validity
Not Before: Jun 7 23:23:17 2021 GMT
Not After : Jun 6 23:23:17 2024 GMT
Subject: O = HashiCorp, CN = Vault
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: ( 4096 bit)
[ …snip…]
セットアップの手順を説明していきます。
各サーバ上の/etc/vault.d/vault.hcl
を、以下の内容で上書きします。なお、下の例はvault01
サーバの例です。適宜、IPアドレス・ホスト名など読み替えてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ui = true
disable_mlock = true
storage "raft" {
path = "/opt/vault/data"
# ノード名はサーバごとに変わりますので置き換えてください
node_id = "vault01"
# 再接続先のIPアドレスもサーバごとに変わりますので置き換えてください
retry_join {
leader_api_addr = "http://192.168.10.143:8200"
}
retry_join {
leader_api_addr = "http://192.168.10.144:8200"
}
}
# ここも変わりますので置き換えてください。
api_addr = "http://192.168.10.142:8200"
cluster_addr = "http://192.168.10.142:8201"
# HTTPS listener
listener "tcp" {
address = "0.0.0.0:8200"
cluster_address = "0.0.0.0:8201"
# SSL通信は今回は使用しない
tls_disable = true
# tls_cert_file = "/opt/vault/tls/tls.crt"
# tls_key_file = "/opt/vault/tls/tls.key"
}
どこでもいいので、以下のコマンドを実行し、どこかのサーバでVaultを起動します。
1
% sudo systemctl start vault
vault
コマンドに接続先サーバを指示するため、VAULT_ADDR
環境変数を指定します:
1
% export VAULT_ADDR = http://192.168.10.142:8200
後は通常通り、vault operator init
コマンドを実行します。すると、リカバリーキーとInitial Root Token
が発行されます。vault operator unseal
コマンドでunsealします。
それ以外のサーバーでは、sudo systemctl start vault
を実行してから、vault operator unseal
コマンドでunsealします。
vault status
コマンドを実行して、storage Type
がraft
、HA Enabled
がtrue
であることを確認します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
% vault status
Key Value
--- -----
Recovery Seal Type shamir
Initialized true
Sealed false
Total Recovery Shares 5
Threshold 3
Version 1.7.3
Storage Type raft
Cluster Name vault-cluster-e2a49833
Cluster ID 08252ea2-3816-419e-7f67-2d8929c438bb
HA Enabled true
HA Cluster https://192.168.10.144:8201
HA Mode active
Active Since 2021-06-26T15:14:28.755516837Z
Raft Committed Index 31294
Raft Applied Index 31294
vault operator raft list-peers
コマンドを実行すると、適切にセットアップされていれば、どこかのサーバーがleader
に、その他がfollower
として表示されます。
1
2
3
4
5
6
kazu634@vault01% vault operator raft list-peers
Node Address State Voter
---- ------- ----- -----
vault01 192.168.10.142:8201 follower true
vault02 192.168.10.143:8201 follower true
vault03 192.168.10.144:8201 leader true
Integrated storage (raft)
を利用している際に、ノードの異常などを検知して、クラスターリーダーの変更などをする機能をautopilot
と呼んでいます。この機能の状態をvault operator raft autopilot state
コマンドで確認できます。Healthy
がtrue
であることを確認します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
kazu634@vault01% vault operator raft autopilot state
Healthy: true
Failure Tolerance: 1
Leader: vault03
Voters:
vault03
vault01
vault02
Servers:
vault01
Name: vault01
Address: 192.168.10.142:8201
Status: voter
Node Status: alive
Healthy: true
Last Contact: 3.880838102s
Last Term: 10
Last Index: 31293
vault02
Name: vault02
Address: 192.168.10.143:8201
Status: voter
Node Status: alive
Healthy: true
Last Contact: 1.404623564s
Last Term: 10
Last Index: 31293
vault03
Name: vault03
Address: 192.168.10.144:8201
Status: leader
Node Status: alive
Healthy: true
Last Contact: 0s
Last Term: 10
Last Index: 31293
その他のセットアップ関連です。
sudo systemctl enable vault
コマンドを実行します。