사전준비

사용한 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 생성 및 권한 부여

  1. IAM > 사용자 > 사용자 추가
    • 사용자 이름
    • AWS 자격 증명 유형 선택 : 프로그래밍 방식 액세스 / AWS Management Concole 액세스 체크
    • 콘솔 비밀번호 : 사용자 지정 비밀 번호
    • 비밀번호 재설정 필요 : 체크 해제

    image

  2. 기존 정책 직접 연결 > AdministratorAccess

    image

  3. 다음: 검토 > 사용자 만들기 > 사용자 생성 성공

    image

2. AWS CLI v2 설치 및 IAM User 자격 증명 설정

(1) AWS CLI v2 설치

최신 버전의 AWS CLI 설치 또는 업데이트

$ 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

  1. Prerequisite : curl, gnupg, software-properties-common 설치

     $ sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
    
  2. HashiCorp GPG key 다운

     $ wget -O- https://apt.releases.hashicorp.com/gpg | \
     >     gpg --dearmor | \
     >     sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
    
  3. 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]
    
  4. 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
    
  5. HashiCorp로부터 패키지 정보를 다운받고 Terraform을 설치한다!

     $ sudo apt update && sudo apt-get install terraform
    
  6. terraform 버전 확인

     $ terraform version
     	Terraform v1.3.3
     	on linux_amd64
    

2. 자동완성 설정

  1. 자동완성 적용
    $ touch ~/.bashrc
    $ terraform -install-autocomplete
    
  2. 확인
    $ 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)

Categories:

Updated:

Leave a comment