Terraform CLI & Configuration File
Terraform CLI(Command)의 사용법은 아래와 같습니다.
# Terraform [global Options] <subcommand> [args]
Usage: terraform [global options] <subcommand> [args]
The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructure All other commands: console Try Terraform expressions at an interactive command prompt fmt Reformat your configuration in the standard style force-unlock Release a stuck lock on the current workspace get Install or upgrade remote Terraform modules graph Generate a Graphviz graph of the steps in an operation import Associate existing infrastructure with a Terraform resource login Obtain and save credentials for a remote host logout Remove locally-stored credentials for a remote host metadata Metadata related commands output Show output values from your root module providers Show the providers required for this configuration refresh Update the state to match remote systems show Show the current state or a saved plan state Advanced state management taint Mark a resource instance as not fully functional untaint Remove the 'tainted' state from a resource instance version Show the current Terraform version workspace Workspace management Global options (use these before the subcommand, if any): -chdir=DIR Switch to a different working directory before executing the given subcommand. -help Show this help output, or the help for a specified subcommand. -version An alias for the "version" subcommand. |
주로 많이 사용하는 Command는?
init / plan / apply / destroy / refresh / validate / show 정도?
CLI명령시에, Log를 더 자세히 보고 싶다면?
아래와 같이 Terraform Log를 tace로 변경하면 됩니다.
$ export TF_LOG=trace
$ terraform init 2024-08-19T15:38:11.849+0900 [INFO] Terraform version: 1.9.2 2024-08-19T15:38:11.899+0900 [DEBUG] using github.com/hashicorp/go-tfe v1.51.0 2024-08-19T15:38:11.899+0900 [DEBUG] using github.com/hashicorp/hcl/v2 v2.20.0 2024-08-19T15:38:11.900+0900 [DEBUG] using github.com/hashicorp/terraform-svchost v0.1.1 2024-08-19T15:38:11.900+0900 [DEBUG] using github.com/zclconf/go-cty v1.14.4 2024-08-19T15:38:11.900+0900 [INFO] Go runtime version: go1.22.4 2024-08-19T15:38:11.900+0900 [INFO] CLI args: []string{"C:\\terraform\\terraform.exe", "init"} 2024-08-19T15:38:11.905+0900 [DEBUG] Attempting to open CLI config file: C:\Users\user\AppData\Roaming\terraform.rc 2024-08-19T15:38:11.906+0900 [INFO] Loading CLI configuration from C:\Users\user\AppData\Roaming\terraform.rc 2024-08-19T15:38:11.907+0900 [DEBUG] Explicit provider installation configuration is set 2024-08-19T15:38:11.907+0900 [INFO] Checkpoint disabled. Not running. api/terraform/terraform-remote-registry/providers/registry.terraform.io/hashicorp/aws/index.json - Using previously-installed hashicorp/aws v5.63.0 |
Terraform의 구성파일(configuration)은
모든 Terraform 작업 디렉토리에 적용되는 CLI동작에 대한 사용자별 설정을 구성합니다.
Terraform 구성파일 : .terraformrc 또는 terraform.rc
[위치]
Linux : ~/.terraformrc
Windows : $env:APPDATA/terraform.rc
(C:\Users\<Username>\AppData\Roaming)
ex) Terraform Provider 설치를 위한 설정파일 Settings |
~/.terraform.rc provider_installation { direct { exclude = ["registry.terraform.io/*/*"] } network_mirror { url = "https://<private.repository>/artifactory/api/terraform/providers/" } } |
추가 팁!
매번 다운받는 Provider Plugin의 용량이 신경쓰인다면??
[Provider Plugin Cache]
기본적으로 Terraform init을 하면 Provider Plugin을 현재 작업 디렉토리의 하위 디렉토리에 자체적으로 생성하게 됩니다.
그러면, 여러구성이 있는경우? 각 구성별로 Provider는 동일한데, 각자의 작업 디렉토리 밑에 Provider를 모두 다운로드하게 됩니다.
Provider의 크기가 상당히 크기 때문에, 구성이 많을수록 용량을 많이 차지하거나 기본동작이 느릴 수 있습니다. 따라서, Terraform 에서는 선택적으로 로컬 디렉토리를 공유 Plugin Cache 폴더로 허용하여 사용할 수 있습니다.
Plugin Cache를 활성화 하려면, Plugin_cache_dir 설정을 사용합니다.
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache" |
(위의 디렉토리는 이미 존재해야 합니다. Terraform은 스스로 디렉토리를 만들지 않습니다. )
(terraform.rc 파일에 설정을 작성하는 것은 영구적인 설정 방법입니다. )
Linux에서는 Plugin-cache에 있는 실행 파일에 대한 심볼릭링크를 생성하여, 실행파일이 중복되지 않고 사용할 수 있게 해주지만,
Windows에서는 불행히도… 심볼릭링크가 없으므로, 실행파일을 Plugin-Cache 폴더에서 복제해와서. 실행파일을 중복되게 생성합니다.
임시적인 세팅방법은?
export TF_PLUGIN_CACHE_DIR="$HOME/.terraform.d/plugin-cache" |