Windows 10 환경에서 Terraform을 이용한 AWS 자원 배포 - 1. 환경구성
IaC 도구 중 하나인 Terraform을 사용해 AWS 자원을 관리하는 CloudNet 스터디를 진행
코드형 인프라(Infrastructure as Code, IaC) 란?
수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 의미함
스터디의 기본 실습 환경이 Mac 또는 Linux의 Bash Shell 이기에
윈도우 10 환경에서 실습을 위한 환경구성을 별도로 수행함
환경 구성
- 윈도우10 명령 프롬프트(cmd)를 활용
1. 임의의 경로로 이동 후 실습 디렉토리 생성
C:\Users\user>cd c:\
c:\>mkdir terraform_study
c:\>cd terraform_study
2. AWS CLI(Command Line Interface) 프로그램 설치
c:\terraform_study>curl -O https://awscli.amazonaws.com/AWSCLIV2.msi
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 29.8M 100 29.8M 0 0 10.6M 0 0:00:02 0:00:02 --:--:-- 10.6M
c:\terraform_study>msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
c:\terraform_study>
-> 명령어 실행 후 Setup 창이 활성화 되며 안내에 따라 AWS CLI 프로그램 설치
-> 설치 완료 후 cmd 창 종료 후 재실행 (환경변수 적용 확인을 위함)
C:\Users\user>cd c:\terraform_study
c:\terraform_study>aws
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:
aws help
aws <command> help
aws <command> <subcommand> help
aws: error: the following arguments are required: command
-> 정상 설치 확인
3. terraform 명령어 설치
c:\Users\user>cd c:\terraform_study
c:\terraform_study>curl -O https://releases.hashicorp.com/terraform/1.3.2/terraform_1.3.2_windows_amd64.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 18.7M 100 18.7M 0 0 10.4M 0 0:00:01 0:00:01 --:--:-- 10.4M
c:\terraform_study>tar -xf terraform_1.3.2_windows_amd64.zip
c:\terraform_study>terraform version
Terraform v1.3.2
on windows_amd64
Your version of Terraform is out of date! The latest version
is 1.3.3. You can update by downloading from https://www.terraform.io/downloads.html
-> 정상 설치된 것을 확인함
c:\terraform_study>
c:\terraform_study>cd ..
c:\>terraform version
'terraform' is not recognized as an internal or external command,
operable program or batch file.
-> 하지만 다른 경로에서는 terraform 명령어를 인식하지 못함
-> 이를 위해 환경변수를 새로 추가
4. 환경변수 경로 추가
- 환경변수를 새로 추가할 때 윈도우 GUI를 활용하는 방법 (일반적으로 추천하는 방법)
-> Windows 로고 key + Pause Break
-> 고급 시스템 설정
-> 환경 변수
-> Path 란에 실행파일 경로를 추가 - 환경변수를 cmd 창에서 새로 추가하는 방법 (권장하지 않지만, 귀찮을 때)
-> cmd 창에서 적용할 때 path 길이의 제한 등으로 인해 기존 환경변수가 잘리거나 의도하지 않은 path 설정이 될 수 있으므로 주의
c:\>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\PuTTY\;C:\Program Files (x86)\NetSarang\Xshell 7\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Amazon\AWSCLIV2\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
c:\>set path=%path%c:\terraform_study;
c:\>terraform version
Terraform v1.3.2
on windows_amd64
Your version of Terraform is out of date! The latest version
is 1.3.3. You can update by downloading from https://www.terraform.io/downloads.html
c:\>
-> path가 정상 적용됨을 확인
-> 하지만 set 명령어는 임시 적용이며, 현재 명령을 수행한 cmd 창에서만 유효함
-> 영구 적용을 위해서는 setx 명령어를 사용(권장하지 않는 방법)
c:\>for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set my_user_path=%B
c:\>set my_user_path=%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
c:\>setx PATH "%my_user_path%c:\terraform_study"
SUCCESS: Specified value was saved.
c:\>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\PuTTY\;C:\Program Files (x86)\NetSarang\Xshell 7\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Amazon\AWSCLIV2\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;c:\terraform_study;
c:\>
c:\>terraform version
Terraform v1.3.2
on windows_amd64
Your version of Terraform is out of date! The latest version
is 1.3.3. You can update by downloading from https://www.terraform.io/downloads.html
-> 정상 동작 확인
-> setx를 사용하면 GUI 환경변수 설정 화면에서도 적용된 것을 확인
5. jq 명령어 설치
- CLI 환경에서 JSON을 처리하는데 사용하는 명령어
- 해당 스터디에서는 cmd창에서 JSON 결과값을 편하게 가공하기 위해 사용
windows 용 1.6 버전을 다운받아 환경변수로 설정한 폴더에 위치 및 jq.exe로 파일이름 변경
c:\terraform_study>rename jq-win64.exe jq.exe
c:\terraform_study>
c:\terraform_study>jq
jq - commandline JSON processor [version 1.6]
Usage: jq [options] <jq filter> [file...]
jq [options] --args <jq filter> [strings...]
jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
jq is a tool for processing JSON inputs, applying the given filter to
its JSON text inputs and producing the filter's results as JSON on
standard output.
The simplest filter is ., which copies jq's input to its output
unmodified (except for formatting, but note that IEEE754 is used
for number representation internally, with all that that implies).
For more advanced filters see the jq(1) manpage ("man jq")
and/or https://stedolan.github.io/jq
Example:
$ echo '{"foo": 0}' | jq .
{
"foo": 0
}
For a listing of options, use jq --help.
-> 정상 동작 확인
참고자료
- IaC란? : https://www.redhat.com/ko/topics/automation/what-is-infrastructure-as-code-iac
- jq명령어 다운로드 : https://stedolan.github.io/jq/download/
- setx 사용법 출처 : https://stackoverflow.com/questions/19287379/how-do-i-add-to-the-windows-path-variable-using-setx-having-weird-problems