[DevOps/Terraform/T101] 사전 작업 및 테라폼 설치
사전준비
사용한 OS 환경은 Ubuntu 20.04.5 LTS (wsl2) 이다.
1. AWS IAM User
(1) AWS Identity and Access Management(IAM)이란?
AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어한다.
💡 IAM = Authentication + Authorization
(2) 권한
아래 두 권한을 IAM User에 부여해 줄 것이다.
AdministratorAccess
: 관리자 권한프로그래밍 방식 액세스 권한
: Access/Secret Key
(3) IAM User 생성 및 권한 부여
- IAM > 사용자 > 사용자 추가
- 사용자 이름
- AWS 자격 증명 유형 선택 :
프로그래밍 방식 액세스
/AWS Management Concole 액세스
체크 - 콘솔 비밀번호 :
사용자 지정 비밀 번호
- 비밀번호 재설정 필요 : 체크 해제
-
기존 정책 직접 연결 > AdministratorAccess
-
다음: 검토 > 사용자 만들기 > 사용자 생성 성공
2. AWS CLI v2 설치 및 IAM User 자격 증명 설정
(1) AWS CLI v2 설치
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ sudo apt install unzip
$ ls -al
total 46140
drwxrwxrwx 1 gain gain 4096 Oct 20 19:09 .
drwxrwxrwx 1 gain gain 4096 Oct 18 22:22 ..
drwxrwxrwx 1 gain gain 4096 Oct 18 22:24 .git
-rwxrwxrwx 1 gain gain 88 Oct 18 22:23 README.md
-rw-r--r-- 1 gain gain 47244662 Oct 20 19:09 awscliv2.zip
$ unzip awscliv2.zip
$ sudo ./aws/install
You can now run: /usr/local/bin/aws --version
$ /usr/local/bin/aws --version
aws-cli/2.8.4 Python/3.9.11 Linux/4.4.0-19041-Microsoft exe/x86_64.ubuntu.20 prompt/off
$ aws --version
aws-cli/2.8.4 Python/3.9.11 Linux/4.4.0-19041-Microsoft exe/x86_64.ubuntu.20 prompt/off
(2) IAM User 자격 증명 설정
$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-2
Default output format [None]:
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************A3UL shared-credentials-file
secret_key ****************IIA1 shared-credentials-file
region ap-northeast-2 config-file ~/.aws/config
# 페이저 사용 비활성화
export AWS_PAGER=""
3. 실습에 편리한 tool 설치 : watch, jq, tree 등
watch
: 명령을 반복적으로 실행하여 출력을 표시함으로써 실시간 모니터링이 가능한 유틸리티jq
: JSON 포맷의 데이터를 다루는 커맨드라인 유틸리티tree
: 폴더의 하위 구조를 계층적으로 표시해 주는 유틸리티
$ sudo apt install update
$ sudo apt update
$ sudo apt install tree jq watch
테라폼 설치
1. 테라폼 - Ubuntu 20.04.5 LTS (WSL2)
Install Terraform - HashiCorp Learn
-
Prerequisite : curl, gnupg, software-properties-common 설치
$ sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
-
HashiCorp GPG key 다운
$ wget -O- https://apt.releases.hashicorp.com/gpg | \ > gpg --dearmor | \ > sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
-
Key’s fingerprint 확인
$ gpg --no-default-keyring \ > --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \ > --fingerprint gpg: directory '/home/gain/.gnupg' created gpg: /home/gain/.gnupg/trustdb.gpg: trustdb created /usr/share/keyrings/hashicorp-archive-keyring.gpg ------------------------------------------------- pub rsa4096 2020-05-07 [SC] E8A0 32E0 94D8 EB4E A189 D270 DA41 8C88 A321 9F7B uid [ unknown] HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com> sub rsa4096 2020-05-07 [E]
-
lsb_release -cs
: 현재 내 시스템의 배포 릴리즈 코드명을 찾아준다.$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \ > https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \ > sudo tee /etc/apt/sources.list.d/hashicorp.list deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com focal main
-
HashiCorp로부터 패키지 정보를 다운받고 Terraform을 설치한다!
$ sudo apt update && sudo apt-get install terraform
-
terraform 버전 확인
$ terraform version Terraform v1.3.3 on linux_amd64
2. 자동완성 설정
- 자동완성 적용
$ touch ~/.bashrc $ terraform -install-autocomplete
- 확인
$ cat ~/.bashrc | grep complete complete -C /usr/bin/terraform terraform
Github에 코드 저장하기
형상 관리 툴인 Github를 사용하면 다른 팀 구성원과 코드 공유도 가능하고, 인프라의 변경 내용 추적 및 커밋 로그를 통한 디버깅이 가능해 진다.
$ ls -al
total 46160
drwxrwxrwx 1 gain gain 4096 Oct 21 19:24 .
drwxrwxrwx 1 gain gain 4096 Oct 18 22:22 ..
drwxrwxrwx 1 gain gain 4096 Oct 18 22:24 .git
drwxr-xr-x 1 gain gain 4096 Oct 20 23:44 .terraform
-rw-r--r-- 1 gain gain 1152 Oct 20 23:44 .terraform.lock.hcl
-rwxrwxrwx 1 gain gain 88 Oct 18 22:23 README.md
drwxr-xr-x 1 gain gain 4096 Oct 19 17:18 aws
-rw-r--r-- 1 gain gain 47244662 Oct 20 19:09 awscliv2.zip
-rw-r--r-- 1 gain gain 911 Oct 21 19:23 main.tf
-rw-r--r-- 1 gain gain 6139 Oct 21 19:24 terraform.tfstate
-rw-r--r-- 1 gain gain 179 Oct 21 19:24 terraform.tfstate.backup
$ git remote -v
origin https://github.com/gain-yoo/terraform-study.git (fetch)
origin https://github.com/gain-yoo/terraform-study.git (push)
$ vi .gitignore
$ cat .gitignore
.terraform*
*.tfstate
*.tfstate.backup
aws*
.terraform
테라폼이 Git에 임시 스크래치 디렉터리로 사용*.tfstate
테라폼이 상태를 저장하는 데 사용
$ git add .
$ git commit -m "Week 01 - Chapter 01"
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <gain@DESKTOP-94ANG27.localdomain>) not allowed
$ git config --global user.email "rkdlsdb@gmail.com"
$ git config --global user.name "gain-yoo"
$ git config --global user.name
gain-yoo
$ git config --global user.email
rkdlsdb@gmail.com
$ git commit -m "Week 01 - Chapter 01"
[main 7dc682b] Week 01 - Chapter 01
2 files changed, 47 insertions(+), 2 deletions(-)
create mode 100644 .gitignore
create mode 100644 main.tf
$ git pull origin main
$ git push -f origin main
Username for 'https://github.com': gain-yoo
Password for 'https://gain-yoo@github.com':
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 905 bytes | 452.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://github.com/gain-yoo/terraform-study.git
+ 8b03b5f...fc8081c main -> main (forced update)
Leave a comment