Atlas 프로젝트 파일 발표

며칠 전 Atlasv0.4.1를 출시했습니다. a multitude의 개선 및 수정 사항과 함께 한동안 계획했던 기능인 Project Files의 릴리스를 발표하게 되어 기쁩니다.

프로젝트 파일은 Atlas로 작업하는 동안 여러 환경을 설명하고 상호 작용하는 방법을 제공합니다. 프로젝트 파일은 각각 환경을 설명하는 하나 이상의 atlas.hcl 블록을 포함하는 env라는 이름의 파일입니다. 각 환경에는 스키마 정의 파일이 있는 위치에 대한 참조, 데이터베이스 URL 및 Atlas에서 관리하는 데이터베이스의 스키마 배열이 있습니다.

// Define an environment named "local".
env "local" {
  // Declare where the schema definition file resides.
  src = "./schema/project.hcl"

  // Define the URL of the database which is managed in
  // this environment.
  url = "mysql://localhost:3306"

  // Define the URL of the Dev Database for this environment.
  // See: https://atlasgo.io/dev-database
  dev = "mysql://localhost:3307"

  // The schemas in the database that are managed by Atlas.
  schemas = ["users", "admin"]
}

env "dev" {
  // ... a different env
}


CLI를 사용하는 개발자에게 더 나은 경험을 제공해야 할 필요성에서 프로젝트 파일이 생성되었습니다. 예를 들어 Atlas를 사용하여 데이터베이스 스키마에 대한 마이그레이션을 계획한다고 가정합니다. 이 경우 마이그레이션을 계획하기 위해 이와 유사한 명령을 실행합니다.

atlas migrate diff --dev-url mysql://root:password@localhost:3306 --to file://schema.hcl --dir file://migrations --format atlas


프로젝트 파일을 사용하여 local라는 환경을 정의할 수 있습니다.

env "local" {
    url = "mysql://root:password@localhost:3306"
    dev = "mysql://root:password@localhost:3307"
    src = "./schema.hcl"
    migration_dir {
        url = "file://migrations"
        format = atlas
    }
}


그런 다음 migrate diff 플래그를 사용하여 이 환경에 대해 --env 명령을 실행합니다.

atlas migrate diff --env local


또는 Atlas를 사용하여 스테이징 환경에 스키마를 적용한다고 가정합니다. 프로젝트 파일이 없으면 다음을 사용합니다.

atlas schema apply -u mysql://root:[email protected]:3306 --dev-url mysql://root:password@localhost:3307 -f schema.hcl


프로젝트 파일을 사용하여 동일한 작업을 수행하려면 staging라는 다른 환경을 정의합니다.

env "staging" {
  url = "mysql://root:[email protected]:3306"
  dev = "mysql://root:password@localhost:3307"
  src = "./schema.hcl"
}


그런 다음 다음을 실행합니다.

atlas schema apply --env staging


자격 증명을 입력 값으로 전달



와 유사하게 프로젝트 파일도 . 즉, 프로젝트 파일에서 블록을 정의variable하여 파일을 평가할 때 제공해야 하는 값을 선언할 수 있습니다. 이 메커니즘은 소스 제어 데이터베이스 자격 증명에 대한 커밋을 방지하는 데 사용할 수 있으며 사용해야 합니다. 이렇게 하려면 먼저 db_password라는 변수를 정의합니다.

variable "db_password" {
  type = string
}


그런 다음 모든 연결 문자열의 데이터베이스 암호를 이 변수에 대한 참조로 바꿉니다. 예를 들면 다음과 같습니다.

env "staging" {
  url = "mysql://root:${var.db_password}@db.ariga.dev:3306"
  dev = "mysql://root:${var.db_password}@localhost:3307"
  src = "./schema.hcl"
}


암호 입력 변수를 제공하지 않고 schema apply를 실행하면 오류 메시지가 표시됩니다.

Error: missing value for required variable "db_password"


입력 변수를 제공하려면 다음을 실행하십시오.

atlas schema apply --env staging --var db_password=pass


입력 변수는 input values to schema files 으로 전달하여 다른 많은 사용 사례에 사용할 수 있습니다.

무엇 향후 계획



이 게시물에서는 개발자가 데이터베이스 스키마에 대한 변경 사항을 관리하기 위한 보다 유창한 워크플로우를 생성할 수 있도록 Atlas에 최근 추가된 새로운 기능인 Project Files을 소개했습니다. 앞으로 몇 주 동안 특정 환경을 기본 환경으로 표시(대부분의 경우 --env를 지정해야 할 필요성 완화) 및 multi-file schema definitions을 지원하는 등 개발 흐름에 몇 가지 개선 사항을 추가할 예정입니다.

질문이 있으신가요? 피드백? 우리 팀 찾기on our Discord server .

좋은 웹페이지 즐겨찾기