CircleCI에서 환경 변수 사용

3260 단어 CircleCIAWS

소개



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를 사용하여 확인하십시오.

좋은 웹페이지 즐겨찾기