버전 제한조건 지정

버전 제약 조건을 사용하여 Terraform 템플릿이나 Ansible 플레이북에 사용할 Terraform, Terraform 프로바이더 또는 Ansible 버전을 지정할 수 있습니다.

Schematics는 특정 버전의 IBM Cloud 제공자 플러그인, 기타 Terraform 제공자(예: REST API 제공자) 및 Ansible 실행 파일을 각각 패키징하는 다중 이미지를 동시에 지원합니다. 각 이미지는 IBM Cloud에서 빌드되고, 테스트되고, 확인됩니다. 포함된 Terraform 제공자 버전은 특정 Terraform CLI 버전에 맞게 테스트되고 패키징됩니다.

버전 제약 조건을 사용하여 Terraform 템플릿이나 Ansible 플레이북에 필요한 버전을 명시하는 것이 권장되는 관행입니다. 이 방법을 사용하면 Terraform, Terraform 제공자 또는 Ansible이 중요 변경사항을 도입할 수 있는 새 버전을 공개하는 경우에도 템플리트 및 플레이북이 계속 작동하도록 할 수 있습니다.

Schematics 이미지 및 패키징된 Terraform 제공자 개요

ibmcloud schematics version 명령을 사용하여 Schematics 이미지 및 각 이미지에 패키징된 Terraform 제공자와 Ansible 실행 파일 버전의 목록을 검색합니다. 예를 들어, 다음 CLI 출력에서는 IBM Cloud 제공자 플러그인의 최신 버전이 Terraform v1.1에서 테스트되었습니다.

Schematics은(는) 해당 이미지에서 IBM Cloud Provider Plug-in for Terraform 바이너리의 가장 최근 버전 5개를 지원합니다. 자세한 정보는 최신 릴리스를 참조하십시오. 다음은 Terraform 템플리트에서 IBM Cloud 제공자를 사용할 때 따라야 하는 몇 가지 제한조건입니다.

Terraform v1.0 이상 버전을 사용하는 것이 좋습니다.

  • Terraform v0.13 이상을 사용하는 경우, 템플리트에서 임의로 IBM Cloud 제공자의 버전을 선택할 수 있습니다.그런 다음, Schematics은(는) 자동으로 IBM Cloud 제공자를 캐시에서 로컬로 다운로드하거나 HCL(HashiCorp Configuration Language) Terraform 레지스트리에서 원격으로 다운로드합니다.

사전 정의된 Schematics 이미지를 사용하려면 원하는 제공자 버전이 포함된 Terraform 템플리트에서 IBM Cloud 제공자 플러그인의 버전을 명시적으로 선언해야 합니다. 자세한 정보는 Terraform CLI 및 Terraform 제공자에 대한 버전 제한조건 지정을 참조하십시오.

Ansible 실행 파일의 기본 버전은 변경할 수 없습니다. 참조된 Ansible 역할 및 콜렉션의 버전만 지정할 수 있습니다.

ibmcloud schematics version
  Template Type   Version
  terraform       terraform_v1.4
  Additional terraform Providers   Version
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  IBM Cloud Provider               v1.38.2
  Template Type   Version
  terraform       terraform_v1.5
  Additional terraform Providers   Version
  IBM Cloud Provider               v1.38.2
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Template Type   Version
  terraform       terraform_v1.6
  Additional terraform Providers   Version
  Ansible Provisioner              v2.3.3
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Template Type   Version
  terraform       terraform_v1.7
  Additional terraform Providers   Version
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Ansible Provisioner              v2.3.3
  Template Type   Version
  terraform       terraform_v1.8
  Additional terraform Providers   Version
  ansible                          v2.9.27
  IBM Cloud Provider               v1.38.2
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.9
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.10
  Additional terraform Providers   Version
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  Ansible Provisioner              v2.3.3
  ansible                          v2.9.27
  Template Type   Version
  terraform       terraform_v1.11
  Additional terraform Providers   Version
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Template Type   Version
  terraform       terraform_v1.12
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  IBM Cloud Provider               v1.38.2
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.13
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  IBM Cloud Provider               v1.38.2
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.14
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  IBM Cloud Provider               v1.38.2
  Provider for REST API            v1.10.0
  OK

Terraform CLI 및 Terraform 제공자에 대한 버전 제한조건 지정

Terraform 버전 제한조건을 사용하여 Terraform CLI 버전 및 사용할 제공자의 버전을 지정하도록 선택할 수 있습니다. 버전 제약 조건을 지정하는 방법에 대한 자세한 내용은 Terraform 문서를 참조하십시오.

Terraform CLI에 대한 버전 제한조건

Schematics 워크스페이스를 생성하고 v1.4 와 같은 Terraform 버전을 선택하면, Terraform 템플릿은 Schematics 에 설정된 기본 패치 버전을 사용하여 실행됩니다. 예를 들어, terraform_v1.4을(를) 선택하면 템플리트는 Terraform v0.13.4를 사용하여 적용됩니다. 최신 버전을 가져오기 위해 Schematics에 Terraform 엔진을 적용하도록 required_providers 정의에 provider 블록을 사용할 수 있습니다.

Schematics에서 설정된 기본 MAJOR.MINOR.PATH 버전보다 상위 버전만 지정할 수 있습니다. 코드 블록에서 version = "x.x.x"은(는) IBM Cloud 제공자 버전을 나타냅니다.

terraform {
    required_providers {
        version = "1.39.1"
    }
}

Terraform 구성 파일의 기본 MAJOR.MINOR.PATH보다 더 높은 Terraform required_versions을(를) 지정할 수 있습니다. 코드 블록에서 required_version = ">=1.0.0, <2.0"은(는) Terraform 버전을 나타냅니다.

terraform {
required_version = ">=1.0.0, <2.0"
  required_providers {
    ibm = {
      source = "IBM-Cloud/ibm"
    }
  }
}

Terraform 제공자에 대한 버전 제한조건

사전 정의된 Schematics 이미지를 사용하려면 원하는 제공자 버전이 포함된 Terraform 템플리트에서 IBM Cloud 제공자 플러그인의 버전을 명시적으로 선언해야 합니다.

IBM Cloud 제공자 플러그인 버전이 Terraform 템플리트에서 선언되지 않으면 최신 버전의 제공자 플러그인이 Schematics에서 자동으로 사용됩니다.

사전 정의된 Schematics 이미지를 지정하는 예제:

다음 예제는 IBM Cloud 제공자 플러그인 v1.39.1용으로 빌드된 Schematics 이미지를 사용하는 방법을 보여줍니다. 이 이미지에는 REST API 제공자와 같은 기타 제공자의 특정 버전이 포함되어 있습니다.

terraform {
    required_providers {
        ibm = {
        source = "IBM-Cloud/ibm"
        version = "v1.39.1"
    }
    }

특정 Terraform 제공자 버전을 사용하는 예제:

다른 IBM Cloud 제공자 플러그인 버전을 사용하거나 Terraform 구성 파일을 다른 외부 제공자(예: AWS, Helm 또는 Kubernetes)의 특정 버전으로 고정하려면 다음 구문을 사용하십시오.

terraform {
    required_providers {
        ibm = {
        source = "IBM-Cloud/ibm"
        version = "~> 1.38.1"
    }
    aws = {
        version = ">= 2.7.0"
        source = "hashicorp/aws"
    }
    }

Ansible에서 버전 제한조건 지정

Schematics 현재는 최신 Ansible 버전( v2.9.27 )만 지원합니다. Schematics 조치를 작성하는 경우 이 버전에서 Ansible 플레이북을 실행할 수 있는지 확인해야 합니다. 플레이북에 대한 특정 Ansible 버전을 지정할 수 없습니다.

그러나 플레이북에서 기존 Ansible 역할 또는 콜렉션을 사용하는 경우 requirements.yml 파일을 사용하여 실행할 역할 또는 콜렉션 버전을 지정할 수 있습니다. 플레이북에서 역할 및 콜렉션을 참조하는 방법에 대한 자세한 정보는 플레이북에서 Ansible 역할 참조플레이북에서 Ansible 콜렉션 참조를 참조하십시오. 역할 및 컬렉션에 대한 버전을 지정하는 방법에 대한 자세한 내용은 ‘ Ansible ’ 문서를 참조하십시오.

roles:
  - name: andrewrothstein.kubectl
    version: 1.1.50