<p>tfenv๋Š” terraform์„ ์„ค์น˜ํ•  ๋•Œ .terraform-version ํŒŒ์ผ์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.</p>

์— ๋งŒ๋“  2019๋…„ 08์›” 12์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tfutils/tfenv

๋ฌธ์ œ

.terraform-version ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ํŠธ๋ฆฌ์— ์‚ฌ์šฉํ•  Terraform ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ •๊ธฐ์ ์œผ๋กœ .terraform-version ์˜ ๋‚ด์šฉ์— ์ •๊ทœ์‹ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ tfenv install ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‹œ์Šคํ…œ์— ์ ์ ˆํ•œ Terraform ๋ฒ„์ „์ด ์—†์„ ๊ฒฝ์šฐ ์ด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด tfenv๊ฐ€ ๋‚ด .terraform-version ํŒŒ์ผ์„ ์„ค์น˜๋œ ์ •ํ™•ํ•œ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

$ echo "latest:^0.12" > .terraform-version
$ tfenv install
....
$ terraform version
Terraform v0.12.6
$ cat .terraform-version
0.12.6

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

ํŠน๋ณ„ํžˆ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ .terraform-version ์˜ ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •

  • OS: MacOS ๋ชจํ•˜๋น„(10.14.6)
  • ์…ธ: ๋ฐฐ์‰ฌ 5.0.7
  • TFEnv ๋ฒ„์ „: 1.0.1

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@e-nomem ์ •๋ง ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ tfenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ์•ˆํ•  ๋•Œ tfenv-install ๋์— tfenv-use ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Terraform ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์ง€๊ธˆ ๋‹น์žฅ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธ€๋กœ๋ฒŒ ๊ธฐ๋ณธ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋™์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

## Default, use version file
$ tfenv install
(just installs version from file, no tfenv-use required)

$ tfenv install 0.12.6
(just installs, but when detecting an interactive shell, it asks what you want)
Do you want to set Terraform 0.12.6 as your global default (y/n)? y
Updating global version in /Users/benny/.terraform-version... done

$ tfenv install 0.12.6 --global
(installs and sets the default)

๋ชจ๋“  7 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์šฐ๋ ค๋ฉ๋‹ˆ๋‹ค. ์กฐ์†ํžˆ ์กฐ์‚ฌํ•  ๊ฒƒ

tfenv-use ๊ฐ€ ๋ฒ„์ „ ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ๊ธฐ ๋•Œ๋ฌธ์— tfenv-install ๋์— tfenv-use ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ „์—ญ ๋ฒ„์ „ ํŒŒ์ผ๋งŒ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๊ณ  ์ „์—ญ ๋ฒ„์ „ ํŒŒ์ผ์ด ์ด๋ฏธ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— tfenv-use ๋Œ€ํ•œ ํ˜ธ์ถœ์€ ์„ค์น˜์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@e-nomem ์ •๋ง ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ tfenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ์•ˆํ•  ๋•Œ tfenv-install ๋์— tfenv-use ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Terraform ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์ง€๊ธˆ ๋‹น์žฅ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธ€๋กœ๋ฒŒ ๊ธฐ๋ณธ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋™์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

## Default, use version file
$ tfenv install
(just installs version from file, no tfenv-use required)

$ tfenv install 0.12.6
(just installs, but when detecting an interactive shell, it asks what you want)
Do you want to set Terraform 0.12.6 as your global default (y/n)? y
Updating global version in /Users/benny/.terraform-version... done

$ tfenv install 0.12.6 --global
(installs and sets the default)

์‰˜ ๋ณ€์ˆ˜๋ผ๋„ ์ ์–ด๋„ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์‹คํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” tf 0.11์—์„œ 0.12๋กœ์˜ ๋ณต์žกํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋กค์•„์›ƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์‹  0.12๋ฅผ ์ถ”์ ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์™ธ๋ถ€ CI์—์„œ tfenv install ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค .terraform-version์ด ํŠน์ • ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์—์„œ์™€ ๊ฐ™์ด. ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด tfenv install ์˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ TFENV_NOOVERWRITE์™€ ๊ฐ™์€ ๊ฒƒ์„ ์„ค์ •ํ•˜์—ฌ ์ด ๊ธฐ๋Šฅ์„ ๋Œ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์œผ๋กœ ๋งŒ์กฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ณ„ .terraform-version ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ๋ฉด ํŒŒ์ผ ์‚ฌ์šฉ์ด ๊ฑฐ์˜ ๋ฌด์šฉ์ง€๋ฌผ์ด ๋˜๊ณ  ๋ˆ„๊ตฐ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ์†Œ์Šค ์ œ์–ด์— ๋ณ€๊ฒฝ์„ ์ปค๋ฐ‹ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋œ ๋ฒ„์ „์„ _์ˆ˜์ •_ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ tfenv ๋ช…๋ น์œผ๋กœ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

tfenv ์‚ฌ์šฉ์ด .terraform-version ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
์ด ์ž‘์—…์„ ์ค‘์ง€ํ•˜๋ฉด tfenv๋ฅผ ๋ฐœํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฒ„์ „ ํŒŒ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญํ•œ ๋ฒ„์ „์„ ์–ป์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๋ ค๋Š” ์ƒ๊ฐ์„ ํ™˜์˜ํ•˜์ง€๋งŒ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ์˜ณ์€ ์ผ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ƒ๊ฐ์„ ์ฐพ๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์ œ ์ƒ๊ฐ์—๋Š” tfenv ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋”๋ผ๋„ ๊ทธ ํŒŒ์ผ์— _์ ˆ๋Œ€_ ์“ฐ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์„ _์ฝ๊ธฐ ์ „์šฉ_์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํ”„๋กœ์ ํŠธ์— ๊ณ ์ • ๋ฒ„์ „์˜ Terraform์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ž์‹ ์˜ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒƒ์€ tfenv ์˜ _users_์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

tfenv install ๋ฐ tfenv use ๋ช…๋ น์€ ๋ช…๋ น์ค„์— ๋ฒ„์ „์ด ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ .terraform-version ํŒŒ์ผ์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น์€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋ฒ„์ „์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์ด ์‹คํŒจํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์ค„ ๋˜๋Š” .terraform-version ๋‚ด์—์„œ ๋ฒ„์ „์„ ์ง€์ •ํ•ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. .terraform-version ํŒŒ์ผ์€ ๋ฌด์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰