CircleCI에서 환경 변수 사용
소개
CircleCI에서 AWS EC2에 액세스할 때 특정 IP만 허용하고 싶었기 때문에 AWS 보안 그룹 ID를 config.yml에 하드 코딩했습니다.
그렇게 좋지 않기 때문에 CircleCI 환경 변수를 사용하도록 변경했으므로 그 방법을 남겨 둡니다.
방법
아래의 공식 문서를 참고로 변경했습니다.
Using Contexts
사전 준비
우선, CircleCI의 [Settings] - [Contexts]에서 "Create Context"를 선택.
컨텍스트 이름을 입력하고 Create 버튼을 누릅니다.
이번에는 'aws_context'를 입력했습니다.
컨텍스트가 추가되므로 그쪽을 선택합니다.
+ Add Environment Variable에서 환경 변수를 추가합니다.
환경 변수를 설정합니다.
이번에는 Name에 "AWS_SG", Value에 보안 그룹 ID를 지정하고 Add를 누릅니다.
그러면 config.yml을 수정합니다.
변경 전이 이쪽.
변경 전
version: 2.1
jobs:
build:
docker:
~省略~
steps:
~省略~
- run:
name: authorize-security-group-ingress
command: |
IP=`curl -s ifconfig.me`
echo "#!/bin/bash" > ./sg.sh
echo "aws configure set region ap-northeast-1" >> ./sg.sh
echo "aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxxxxxxxx --protocol tcp --port 22 --cidr ${IP}/32" >> ./sg.sh
bash ./sg.sh
~省略~
sg-xxxxxxxxxxxxxx는 AWS 보안 그룹의 ID입니다.
여기를 환경 변수에서 가져오도록 변경합니다.
변경 후
version: 2.1
jobs:
build:
docker:
~省略~
steps:
~省略~
- run:
name: authorize-security-group-ingress
command: |
IP=`curl -s ifconfig.me`
echo "#!/bin/bash" > ./sg.sh
echo "aws configure set region ap-northeast-1" >> ./sg.sh
echo "aws ec2 authorize-security-group-ingress --group-id ${AWS_SG} --protocol tcp --port 22 --cidr ${IP}/32" >> ./sg.sh
bash ./sg.sh
~省略~
workflows:
build:
jobs:
- build:
context: aws_context
수정은 이상으로 완료되었습니다만, 공식 문서대로 하면(자) 에러가 나오는 곳이 있었습니다.
공식 문서에서는 - build
가 되고 있는 곳을 이하와 같이, - build:
와 같이 :
가 필요하게 된다고 생각하므로 주의가 필요합니다.
workflows:
build:
jobs:
- build:
context: aws_context
이상으로 완료입니다.
확실히 커밋하기 전에 circleci config validate -c .circleci/config.yml
를 사용하여 확인하십시오.
Reference
이 문제에 관하여(CircleCI에서 환경 변수 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shhmd92/items/0d16379a4f24492e8e91
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래의 공식 문서를 참고로 변경했습니다.
Using Contexts
사전 준비
우선, CircleCI의 [Settings] - [Contexts]에서 "Create Context"를 선택.
컨텍스트 이름을 입력하고 Create 버튼을 누릅니다.
이번에는 'aws_context'를 입력했습니다.
컨텍스트가 추가되므로 그쪽을 선택합니다.
+ Add Environment Variable에서 환경 변수를 추가합니다.
환경 변수를 설정합니다.
이번에는 Name에 "AWS_SG", Value에 보안 그룹 ID를 지정하고 Add를 누릅니다.
그러면 config.yml을 수정합니다.
변경 전이 이쪽.
변경 전
version: 2.1
jobs:
build:
docker:
~省略~
steps:
~省略~
- run:
name: authorize-security-group-ingress
command: |
IP=`curl -s ifconfig.me`
echo "#!/bin/bash" > ./sg.sh
echo "aws configure set region ap-northeast-1" >> ./sg.sh
echo "aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxxxxxxxx --protocol tcp --port 22 --cidr ${IP}/32" >> ./sg.sh
bash ./sg.sh
~省略~
sg-xxxxxxxxxxxxxx는 AWS 보안 그룹의 ID입니다.
여기를 환경 변수에서 가져오도록 변경합니다.
변경 후
version: 2.1
jobs:
build:
docker:
~省略~
steps:
~省略~
- run:
name: authorize-security-group-ingress
command: |
IP=`curl -s ifconfig.me`
echo "#!/bin/bash" > ./sg.sh
echo "aws configure set region ap-northeast-1" >> ./sg.sh
echo "aws ec2 authorize-security-group-ingress --group-id ${AWS_SG} --protocol tcp --port 22 --cidr ${IP}/32" >> ./sg.sh
bash ./sg.sh
~省略~
workflows:
build:
jobs:
- build:
context: aws_context
수정은 이상으로 완료되었습니다만, 공식 문서대로 하면(자) 에러가 나오는 곳이 있었습니다.
공식 문서에서는
- build
가 되고 있는 곳을 이하와 같이, - build:
와 같이 :
가 필요하게 된다고 생각하므로 주의가 필요합니다.workflows:
build:
jobs:
- build:
context: aws_context
이상으로 완료입니다.
확실히 커밋하기 전에
circleci config validate -c .circleci/config.yml
를 사용하여 확인하십시오.
Reference
이 문제에 관하여(CircleCI에서 환경 변수 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shhmd92/items/0d16379a4f24492e8e91텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)