如何在Terraform 0.13中将IBM Cloud Provider插件用于Terraform?

如何解决如何在Terraform 0.13中将IBM Cloud Provider插件用于Terraform?

terraform 0.13刚刚发布(https://www.hashicorp.com/blog/announcing-hashicorp-terraform-0-13/),它改变了与第三方提供商(https://www.terraform.io/upgrade-guides/0-13.html#explicit-provider-source-locations)的合作方式。

运行terraform init时遇到错误

$ terraform init

Initializing the backend...

Initializing provider plugins...
- Finding latest version of hashicorp/ibm...

Error: Failed to install provider

Error while installing hashicorp/ibm: provider registry registry.terraform.io
does not have a provider named registry.terraform.io/hashicorp/ibm

以前,此功能可用于terraform 0.12.29和IBM提供程序1.10.0。

解决方法

以下是Linux的说明以及Terraform和IBM提供程序的当前版本:

安装Terraform

  1. 下载Terraform 0.13
    wget https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
    
  2. 解压缩提供者
    unzip terraform_0.13.0_linux_amd64.zip
    
  3. 将其移动到路径中的文件夹,例如:
    mv terraform /usr/local/bin/
    
  4. 确保版本为0.13
    terraform version
    

安装IBM提供程序

  1. 创建用于放置插件的文件夹:
    mkdir -p ~/.terraform.d/plugins/localdomain/provider/ibm/1.10.0/linux_amd64
    
  2. 获取提供者:
    wget https://github.com/IBM-Cloud/terraform-provider-ibm/releases/download/v1.10.0/terraform-provider-ibm_1.10.0_linux_amd64.zip
    
  3. 解压缩提供者:
    unzip terraform-provider-ibm_1.10.0_linux_amd64.zip
    
  4. 将提供程序移动到先前创建的文件夹:
    mv terraform-provider-ibm_v1.10.0 ~/.terraform.d/plugins/localdomain/provider/ibm/1.10.0/linux_amd64
    

使用简单的Terraform文件进行测试

  1. 创建main.tf

    terraform {
      required_providers {
        ibm = {
          source  = "localdomain/provider/ibm"
          version = "1.10.0"
        }
      }
    }
    
    variable ibmcloud_api_key {
    }
    
    provider "ibm" {
      ibmcloud_api_key = var.ibmcloud_api_key
    }
    
    resource ibm_resource_group new_group {
      name = "created-by-terraform"
    }
    
  2. 创建terraform.tfvars并填写您的IBM Cloud API密钥:

    ibmcloud_api_key="REPLACE_WITH_YOUR_KEY"
    
  3. 初始化地形

    terraform init
    

    将导致:

    Initializing the backend...
    
    Initializing provider plugins...
    - Finding localdomain/provider/ibm versions matching "1.10.0"...
    - Installing localdomain/provider/ibm v1.10.0...
    - Installed localdomain/provider/ibm v1.10.0 (unauthenticated)
    
    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,rerun this command to reinitialize your working directory. If you forget,other
    commands will detect it and remind you to do so if necessary.
    
  4. 并申请

    terraform apply
    

    将导致:

    ...
      Enter a value: yes
    
    ibm_resource_group.new_group: Creating...
    ibm_resource_group.new_group: Creation complete after 2s [id=2142c8122344458d59b8729708464a]
    
    Apply complete! Resources: 1 added,0 changed,0 destroyed.
    

快乐的地形改造!

,

IBM Provider现在已发布到资源库,因此您可以使用新的terraform 13 Provider语法,例如:

terraform {
  required_version = ">= 0.13"
  required_providers {
    ibm = {
      source  = "ibm-cloud/ibm"
      version = "1.11.2"
    }
  }
}
,
terraform {
  required_version = ">= 0.13.3"
  required_providers {
    ibm = {
      source  = "ibm-cloud/ibm"
      version = "1.12.0"
    }
  }
}

这将为您提供最新版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?