Pulumi로 인프라 구축하기 (1)
요즘은 인프라를 Infrastructure as Code(IaC) 도구를 많이 사용하고 있다.
Terraform 같은 도구도 있는데, 회사에서 요즘 Pulumi 괜찮다더라. 이걸로 IaC 코드를 짜고 공부를 좀 해보는게 어떻겠냐는 소리를 조금 들었다. 회사에서도 도움이 될 것 같고, 좋은 경험이 될 것 같아 조금 공부하고 코드 작성 해보겠다고 했다.
Pulumi의 특징
다양한 클라우드 플랫폼을 지원한다. AWS, Azure, Google Cloud, Kubernetes 등 여러 클라우드 플랫폼을 지원하고 있다.
많은 사람들이 사용하는 프로그래밍 언어로 인프라 코드를 작성할 수 있다.
현재는 Node.js(JavaScript, TypeScript), Python, Go, .Net(C#, F#, VB), Java, YAML로 코드를 작성할 수 있다.
다른 도구(Terraform, AWS CloudFormation 등)에서 Pulumi로 Migration 하기 쉽다.
여기를 클릭해 Migration 방법 등을 확인할 수 있다.
Migrate from...
Migrate from an existing infrastructure management solution to Pulumi.
www.pulumi.com
Java로 IaC 코드 작성하여 AWS 자동 생성
조건은 간단하다. AWS 계정이 있고 Java 11 이상, 그리고 Maven 3.6.1 이상이면 된다.
공식 홈페이지에서 하라는대로 작성해보자.
brew install pulumi/tap/pulumi
정상적으로 설치되면 사진과 같이 버전정보를 얻을 수 있다.
이후 AWS CLI를 통해 정보를 얻는다.
aws sts get-caller-identity
이후 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY를 설정해야 한다.
IAM의 사용자에서 사용자를 하나 생성하자.
간단하게 설정하기 위해 root 권한(AdministratorAccess)를 부여했고, 생성했다.
그리고 사진과 같이 엑세스 키를 생성하였다.
비밀 엑세스 키는 지금이 아니면 볼 수 없으니 참고하자.
그리고 Terminal에서 export를 활용해 ACCESS, SECRET KEY를 입력한다. (PROFILE 이름도 같이 입력해야 한다)
export AWS_ACCESS_KEY_ID="<YOUR_ACCESS_KEY_ID>"
export AWS_SECRET_ACCESS_KEY="<YOUR_SECRET_ACCESS_KEY>"
export AWS_PROFILE="<YOUR_PROFILE_NAME>"
그리고 원하는 경로에 폴더를 생성한다.
나는 홈 디렉토리의 Desktop에 생성했다.
cd ~/Desktop
mkdir pulumi-start-aws
cd pulumi-start-aws
pulumi new aws-java
순차적으로 입력하면 https://app.pulumi.com/account/tokens 에서 access token을 발급 받아 입력해야 한다.
사진처럼 설정하고 키를 등록했다.
그러면 프로젝트를 설정할 수 있는데, 원해는대로 입력하자.
전부 입력하면 정상적으로 생성되는데, 필자의 경우에는 mvn 경로지정을 안해 오류가 나타나 지정을 해줬다.
wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
tar -xvf apache-maven-3.9.9-bin.tar.gz
export PATH=$PATH:~/Desktop/apache-maven-3.9.9
이후 프로젝트를 실행하면 정상적으로 빌드가 된다.