프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
26_Study(환경 변수)
26_Study(환경 변수)

2023. 4. 21. 18:44부트캠프/DevOps (TIL)

환경 변수

환경 변수란 컴퓨터 운영체제에서 프로세스(process)가 실행되는 환경에 대한 정보를 담은 변수입니다. 예를 들어, 시스템의 임시 디렉토리 경로, 사용자 이름, 시스템 로케일, 프로그램 실행 시 필요한 다양한 경로 등이 이러한 환경 변수로 정의될 수 있습니다. 코딩에서는 주로 이러한 환경 변수를 활용해 프로그램을 실행하는 동안 필요한 정보를 전달하거나, 프로그램 실행 환경에 대한 설정을 변경할 때 사용됩니다.

 

환경 변수는 왜 필요한가?

  • 다양한 프로그램이 하나의 운영체제에서 실행될 때, 그 프로그램들이 공통으로 사용해야 하는 정보를 환경 변수를 통해 지정할 수 있습니다. 예를 들어, 시스템의 임시 디렉토리 경로, 사용자 이름, 시스템 로케일 등이 이러한 환경 변수로 정의될 수 있습니다.
  • 환경 변수는 시스템 전반에 걸쳐 사용되는 설정 정보를 효율적으로 관리할 수 있습니다. 환경 변수를 사용하면 한 번에 설정 정보를 변경할 수 있으므로, 설정 변경이 필요한 경우 모든 프로그램에 일일이 설정을 변경할 필요가 없습니다.
  • 환경 변수는 보안에도 도움이 됩니다. 예를 들어, 암호화된 정보를 저장할 때 환경 변수를 사용하면, 해당 정보를 직접 코드 내에 포함시키는 것보다 보안적인 측면에서 더 안전합니다.
  • 배포되는 기능마다 설정이 달라질 수 있기 때문입니다 새로운 배포마다, 새로운 기능들을 배포하게 됨으로써 설정값이 바뀌게 됩니다. 따라서 코드의 버전을 관리하는 것처럼 설정값의 버전을 관리할 필요가 있습니다.

설정은 왜 환경변수를 통하여 분리해야 할까요?

  • 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있습니다.
  • 설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성도 적습니다.
  • 다른 설정 메커니즘과 달리 언어나 OS에 의존하지 않습니다.
  • 설정을 환경 변수를 통해 분리해야 하는 이유에 대한 참조 레퍼런스
  • 레퍼런스: The Twelve-Factor App

Linux 운영체제에서는 export 명령어를 사용하여 환경 변수를 설정할 수 있습니다.

export 명령어를 사용한 환경 변수 설정

export 명령어는 새로운 환경 변수를 만들거나, 기존 환경 변수의 값을 변경할 때 사용합니다. 다음은 export 명령어를 사용하여 새로운 환경 변수를 만들고, 값을 할당하는 예시입니다

export MY_VARIABLE="Hello World"

위 명령어는 MY_VARIABLE이라는 새로운 환경 변수를 만들고, "Hello World"라는 값을 할당합니다. 이제 이 환경 변수를 사용하여 다른 프로그램에서 필요한 값을 전달할 수 있습니다.

 

코드를 통한 환경 변수 설정

Node.js에서는 process.env 객체를 사용하여 환경 변수를 설정하고 사용할 수 있습니다. 다음은 process.env 객체를 사용하여 MY_VARIABLE이라는 환경 변수를 설정하는 예시입니다.

process.env.MY_VARIABLE = "Hello World";

위 코드는 MY_VARIABLE이라는 환경 변수를 만들고, "Hello World"라는 값을 할당합니다. 이제 이 환경 변수를 사용하여 다른 모듈에서 필요한 값을 전달할 수 있습니다.

 

서비스 내에서 환경 변수 설정하기 (GitHub Actions)

GitHub Actions를 사용하여 CI/CD 파이프라인을 구축할 때, 환경 변수를 설정하여 다양한 작업을 수행할 수 있습니다. 예를 들어, Node.js 앱을 빌드하고 배포하는 작업에서 환경 변수를 사용할 수 있습니다.

 

다음은 GitHub Actions에서 환경 변수를 설정하는 방법입니다.

  1. GitHub 저장소의 Settings 탭으로 이동합니다.
  2. Secrets 메뉴로 이동하여, 새로운 시크릿 값을 추가합니다. 이 시크릿 값은 CI/CD 작업에서 사용될 환경 변수 값입니다.
  3. GitHub Actions 워크플로우 파일(.yml)에서 env 속성을 사용하여 시크릿 값을 환경 변수로 사용할 수 있습니다.
name: CI/CD

on:
    push:
        branches:
            - main

jobs:
    build:
        runs-on: ubuntu-latest
    env:
        MY_VARIABLE: ${{ secrets.MY_SECRET }}
    steps:
    - name: Checkout code
      uses: actions/checkout@v2
    - name: Build and Deploy
      run: |
         npm install
         npm run build
         npm run deploy

위 설정은 CI/CD 작업에서 MY_VARIABLE이라는 환경 변수를 사용하고, 이 값은 저장소의 Secrets에서 가져온 값으로 설정됩니다.

 

 

출처: