一度設定すると忘れがちなので、備忘を兼ねて。
まとめ
以下が Terraform の required_providers
や required_version
などで使えるバージョン制約演算子の一覧と、それぞれの意味・具体例です。
制約式 | 意味 | 具体例 | マッチするバージョン範囲 |
---|---|---|---|
= 1.12.1 |
完全に一致 | version = "= 1.12.1" |
ちょうど 1.12.1 |
1.12.1 |
= 1.12.1 と同義 |
version = "1.12.1" |
ちょうど 1.12.1 |
!= 1.0.0 |
それ以外 | version = "!= 1.0.0" |
1.0.0 以外(1.0.1, 1.1.0, …) |
> 1.0.0 |
より大きい | version = "> 1.0.0" |
1.0.1, 1.2.0, … |
>= 1.0.0 |
以上 | version = ">= 1.0.0" |
1.0.0, 1.0.1, 2.0.0, … |
< 2.0.0 |
未満 | version = "< 2.0.0" |
1.x 系すべて(1.0.0~1.999.999) |
<= 2.0.0 |
以下 | version = "<= 2.0.0" |
2.0.0 とそれ以前 |
~> 6.0.0 |
悲観的演算子 パッチアップのみ許容 |
version = "~> 6.0.0" |
>= 6.0.0 かつ < 6.1.0 。つまり6.1.0以降や7.Xは含まれない。 |
~> 6.0 |
悲観的演算子 マイナーアップまで許容 |
version = "~> 6.0" |
>= 6.0.0 かつ < 7.0.0 。つまり、7.X以降は含まれない。 |
>= 1.0.0, < 2.0.0 |
範囲指定(複数制約の組み合わせ) | version = ">= 1.0.0, < 2.0.0" |
1.0.0から1.x系最新まで(2.0.0以上は除外) |
>= 1.0.0, != 1.5.0 |
範囲+除外 | version = ">= 1.0.0, != 1.5.0" |
1.0.0以上かつ1.5.0以外 |
ポイント
=
(または省略)= 1.2.3
や"1.2.3"
は同じ意味。- 厳密にそのバージョンのみを許可します。
大小比較演算子 (
!=
,>
,>=
,<
,<=
)- 範囲指定や除外に使えます。
- 複数の制約を「カンマ区切り」で同時に指定可能(論理 AND 相当)。
~>
(悲観的演算子)- 最もよく使われる形式です。
右辺を分解し、最後の要素を固定して上位桁への影響を抑制。
~> A.B.C
→>= A.B.C
かつ< A.(B+1).0
~> A.B
→>= A.B.0
かつ< (A+1).0.0
組み合わせ
- 例えば
">= 1.0.0, < 2.0.0"
や">= 1.0.0, != 1.5.0"
のように複数の条件を AND で指定できます。
- 例えば
以上です。