반응형
Pulumi 로컬 세팅 방법 정리
# pulumi사용하기전에 Login을 해줘야하는데 클라우드가 아닌 로컬에 세팅할경우엔 아래와같은 명령어를 실행
pulumi login --local
# Logged in to JAEYUNGui-MacBookPro.local as jaeyunglee (file://~)
# login에 대한 정보를 어디에 저장할지 지정
pulumi login file:///Users/jaeyunglee/Desktop/jaeyung/pulumi_test
# Logged in to JAEYUNGui-MacBookPro.local as jaeyunglee (file:///Users/jaeyunglee/Desktop/jaeyung/pulumi_test)
# ls -al 을 실행하면 .pulumi 라는 폴더가 생성됨
# 이제 pulumi에 대한 프로젝트 생성
# pulumi new [이름] 명령어는 아무것도없는 폴더에서 진행되어야함
pulumi new --secrets-provider=passphrase
# 각종 정보 입력
# 중요한 정보
# 1. template 잘선택 (ex. aws면 aws-python)
# 2. passphrase를 기억해야함
export PULUMI_CONFIG_PASSPHRASE=$(위에서 입력한 값)
# (optional) 만약 aws 리소스 생성이라면 아래와같이 access key, secret key설정해줘야함
export AWS_ACCESS_KEY_ID=""
export AWS_SECRET_ACCESS_KEY=""
# pulumi up 실행
# aws-python에서는 샘플코드로 s3버킷 생성하는 코드가 들어있음
pulumi up
만일 pulumi template을 사용안할 경우에는
- Pulumi.yaml파일이 최상위 디렉토리에 존재하며 아래와같은 코드형식으로 저장되어야함
name: <project>
runtime:
name: python
backend:
url: s3://<bucket>[?region=<region>&profile=<profile>]
만일 Pulumi State를 s3에 저장하고 싶을경우 (S3 세팅 방법)
# AWS config가 세팅되어있다라는 가정하에
pulumi login s3://BUCKET_NAME
s3 버킷 생성
- 작업하면서 알았지만 pulumi up할때는 무조건 __main__.py 파일을 봄. 따라서 별도로 파이썬 코드 파일을 생성했더라도 __main__.py 파일에 import가 안되어있으면 리소스 반영이 안됨.
# s3.py
import pulumi
import pulumi_aws as aws
example = aws.s3.BucketV2("example",
bucket="my-tf-test-bucket",
tags={
"Name": "My bucket",
"Environment": "Dev",
})
# __main__.py
"""An AWS Python Pulumi program"""
import s3 # 위에서 생성한 s3.py import
AWS 계정 생성 관련
유저 생성 및 콘솔 로그인 초기 패스워드 확인방법
- 매 유저의 Console Access 는 UserLoginProfile 요소가 존재하게되면 자동으로 Access가 가능
- 초기 비밀번호에 대한 패턴 설정은 AccountPasswordPolicy에서 설정이 가능함
- https://www.pulumi.com/registry/packages/aws/api-docs/iam/accountpasswordpolicy/
- Access Key & Secret Key 얻는법
- 아래 코드에서 pulumi.export를 통해 얻어올수있지만 secretKey같은경우에는 block처리가 되어있음. 따라서 다음과같은 pulumi CLI로 얻어올수있음
- pulumi.export 는 pulumi up 명령어를 수행할때 output으로 지정된 값을 볼수있음
- "pulumi stack output {user}_secretKey --show-secrets"
- 아래 코드에서 pulumi.export를 통해 얻어올수있지만 secretKey같은경우에는 block처리가 되어있음. 따라서 다음과같은 pulumi CLI로 얻어올수있음
jaeyung_lee = aws.iam.User("jaeyung_lee", name="jaeyung_lee")
jaeyung_lee_group = aws.iam.UserGroupMembership("jaeyung_lee_group",
user = jaeyung_lee,
groups= [devops])
# console login 설정
example_user_login_profile = aws.iam.UserLoginProfile("example",
user = jaeyung_lee.name,
password_reset_required=True # 처음 접근시 패스워드 재설정
)
pulumi.export("password_str", example_user_login_profile.password) # 초기 패스워드 확인가능
# AccessKey, SecretKey 설정
user_access_key = aws.iam.AccessKey(f"{user}_access_key", user=user_info.name)
pulumi.export(f"{user}_accessKey", user_access_key.id)
pulumi.export(f"{user}_secretKey", user_access_key.secret)
TMI
- Pulumi는 하나의 Project에서 여러개의 Stack이 존재 할 수 있음. 따라서 Stack별 폴더 생성할때는 아래와같은 방식으로 해야할것같음
- Project의 폴더를 생성하고
- Stack에 대한 폴더를 생성하고 진입 (cd Project/Stack)
- pulumi new --stack [STACK_NAME] --name [PROJECT_NAME]
- Pulumi.yaml 파일에 name은 Project명을 따라간다
- 만약에 stack을 생성하지않고 project만 생성하고싶을 경우에는 pulumi new -g 옵션을 활용한다 (근데 이건 Pulumi를 잘모른다면 비추천같음
반응형
'Develop > DevOps' 카테고리의 다른 글
[Grafana] Helm chart grafana 생성 동시에 초기 대시보드 구축방법 (0) | 2024.07.15 |
---|---|
[Git] .gitignore를 환경에 따라 쉽게 생성하는법 (0) | 2024.07.02 |
[DevOps] github action에서 author.email을 다른방식으로 얻는방법 (0) | 2024.06.24 |
[k8s] Daemonsets에서 띄운 pod의 hostname을 nodename으로 변경하기 (feat. promtail) (0) | 2024.03.20 |
[Kibana] Elasticsearch를 master, data node로 변경한 이후 kibana stack monitoring dashboard에 접근안될때 (0) | 2024.03.04 |