Especificando restrições de versão

Use restrições de versão para declarar a versão do Terraform, do provedor do Terraform ou do Ansible que você deseja usar em seu modelo do Terraform ou em seu playbook do Ansible.

O Schematics suporta simultaneamente várias imagens em que cada uma empacota uma versão específica do plug-in do Provedor da IBM Cloud, de outros provedores do Terraform, como o provedor da API de REST e o executável do Ansible. Cada imagem é construída, testada e verificada pela IBM Cloud. As versões do provedor do Terraform incluídas são testadas e empacotadas para uma versão da CLI do Terraform específica.

É uma boa prática declarar a versão exigida pelo seu modelo do Terraform ou pelo playbook d Ansible, utilizando restrições de versão. Desta forma, é possível assegurar que seus modelos e playbooks continuem a funcionar, mesmo que o Terraform, os provedores do Terraform ou o Ansible publiquem novas versões que possam introduzir alterações que afetem o processamento da mensagem.

Visão geral de imagens do Schematics e de provedores do Terraform empacotados

Use o comando ibmcloud schematics version para recuperar uma lista de imagens do Schematics e do provedor do Terraform e versões executáveis do Ansible que são empacotadas em cada imagem. Por exemplo, na saída de CLI a seguir, a versão mais recente do plug-in do provedor do IBM Cloud é testada no Terraform v1.1.

O Schematics oferece suporte a 5 versões mais recentes de binários do IBM Cloud Provider Plug-in for Terraform em sua imagem. Para obter mais informações, consulte releases mais recentes. A seguir estão algumas restrições que deve-se seguir ao usar o provedor do IBM Cloud no seu modelo do Terraform.

Recomenda-se usar o Terraform v1.0 ou uma versão superior.

  • Se você estiver usando o Terraform v0.13 ou superior, poderá escolher arbitrariamente qualquer versão do provedor da IBM Cloud em seu modelo. Em seguida, o Schematics faz download automático do provedor IBM Cloud localmente por meio do cache ou remotamente por meio do Registro do Terraform da HashiCorp Configuration Language (HCL).

Para usar qualquer uma das imagens predefinidas do Schematics, deve-se declarar explicitamente a versão do plug-in do Provedor do IBM Cloud no seu modelo do Terraform que inclui as versões do provedor que você deseja. Para obter mais informações, consulte Especificando restrições de versão para a CLI e os provedores do Terraform.

Não é possível alterar a versão padrão para o executável do Ansible. É possível apenas especificar a versão de funções e coleções referenciadas do 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

Especificando restrições de versão para a CLI e os provedores do Terraform

É possível escolher especificar a versão da CLI do Terraform e a versão de qualquer um dos provedores que você deseja usar usando restrições de versão do Terraform. Para obter mais informações sobre como especificar restrições de versão, consulte a documentação do Terraform.

Restrições de versão para a CLI do Terraform

Ao criar um espaço de trabalho no Schematics e selecionar uma versão do Terraform, como v1.4, seus modelos do Terraform são executados utilizando a versão de patch padrão definida em Schematics. Por exemplo, se você escolher terraform_v1.4, seus modelos são aplicados usando o Terraform v0.13.4. É possível usar o bloco required_providers em sua definição de provider para forçar o mecanismo do Terraform em Schematics a puxar uma versão mais recente.

É possível apenas especificar versões que são mais altas do que a versão padrão MAJOR.MINOR.PATH que está configurada em Schematics. No bloco de código, version = "x.x.x" significa a versão do provedor do IBM Cloud.

terraform {
    required_providers {
        version = "1.39.1"
    }
}

É possível especificar o Terraform required_versions que é superior à versão MAJOR.MINOR.PATH padrão no arquivo de configuração do Terraform. No bloco de código, o required_version = ">=1.0.0, <2.0" significa a versão do Terraform.

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

Restrições de versão para provedores do Terraform

Para usar qualquer uma das imagens predefinidas do Schematics, deve-se declarar explicitamente a versão do plug-in do Provedor do IBM Cloud no seu modelo do Terraform que inclui as versões do provedor que você deseja.

Se a versão do plug-in do Provedor da IBM Cloud não for declarada no seu modelo do Terraform, a versão mais recente do plug-in do provedor será usada automaticamente em Schematics.

Exemplo para especificar uma imagem predefinida do Schematics:

O exemplo a seguir mostra como utilizar a imagem do Schematics que foi construída para o plug-in do provedor do IBM Cloud v1.39.1. Esta imagem inclui versões específicas para outros provedores, como o provedor da API de REST.

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

Exemplo para usar versões específicas do provedor do Terraform:

Para usar uma versão diferente de plug-in do Provedor da IBM Cloud ou para fixar seu arquivo de configuração do Terraform em uma versão específica de outro provedor externo, como AWS, Helm ou Kubernetes, use a sintaxe a seguir.

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

Especificando restrições de versão no Ansible

Schematics Atualmente, é compatível apenas com a versão mais recente do Ansible: v2.9.27. Quando você criar uma ação do Schematics, deverá assegurar que seus playbooks do Ansible possam ser executados com esta versão. Não é possível especificar uma versão do Ansible específica para seu playbook.

No entanto, se você usar funções ou coleções do Ansible existentes em seu playbook, poderá especificar a versão da função ou coleção que você deseja executar usando um arquivo requirements.yml. Para obter mais informações sobre como referenciar funções e coleções em seu playbook, consulte Referenciando funções do Ansible em seu playbook e Referenciando coleções do Ansible em seu playbook. Para saber mais sobre como especificar versões para funções e coleções, consulte a documentação do Ansible.

roles:
  - name: andrewrothstein.kubectl
    version: 1.1.50