Terraform和AWS Storage Gateway磁盘有问题

时间:2018-08-20 11:44:41

标签: amazon-web-services terraform terraform-provider-aws

我将Terraform与AWS结合使用,并且能够使用aws_storagegateway_gateway资源创建AWS Storage Gateway文件网关。

网关将创建,状态将为“联机”,但是控制台中尚未添加缓存磁盘,这是正常的,因为创建网关后必须执行此操作。该VM确实有一个磁盘,可以在控制台中添加它,并且可以在控制台中完美地工作。

但是,一旦尝试创建网关,我试图在Terraform中添加磁盘,但似乎无法使代码正常工作,或者很可能不理解如何使其正常工作。

尝试使用aws_storagegateway_cache资源,但是disk_id出现错误,并且不知道如何从网关创建代码中返回它。

某人可能有一个可行的示例,说明如何在创建网关后如何将缓存磁盘添加到Terraform或知道如何获取disk_id以便我添加它?

添加代码

provider "aws" {
  access_key = "${var.access-key}"
  secret_key = "${var.secret-key}"
  token      = "${var.token}"
  region     = "${var.region}"
}

resource "aws_storagegateway_gateway" "hmsgw" {
  gateway_ip_address = "${var.gateway-ip-address}"
  gateway_name       = "${var.gateway-name}"
  gateway_timezone   = "${var.gateway-timezone}"
  gateway_type       = "${var.gateway-type}"

  smb_active_directory_settings {
    domain_name = "${var.domain-name}"
    username    = "${var.username}"
    password    = "${var.password}"
  }


}

resource "aws_storagegateway_cache" "sgwdisk" {
  disk_id     = "SCSI"
  gateway_arn = "${aws_storagegateway_gateway.hmsgw.arn}"
}

output "gatewayid" {
  value = "${aws_storagegateway_gateway.hmsgw.arn}"
}

我得到的错误是:

  • aws_storagegateway_cache.sgwdisk:添加Storage Gateway缓存时出错:InvalidGatewayRequestException:指定的磁盘不存在。     状态码:400,请求ID:fda602fd-a47e-11e8-a1f4-b383e2e2e2f6

我试图像上面那样对disk_id进行硬编码或使用一个变量。对于变量,我不知道它是否已返回或存在,因此可能是新问题。

2 个答案:

答案 0 :(得分:1)

在创建资源“ aws_storagegateway_cache”之前,请使用数据获取磁盘ID。我正在使用以下脚本,它工作正常。

   variable "upload_disk_path" {
      default = "/dev/sdb"
    }

   data "aws_storagegateway_local_disk" "upload_disk" {
          disk_path   = "${var.upload_disk_path}"
          gateway_arn = "${aws_storagegateway_gateway.this.arn}"
        }

   resource "aws_storagegateway_upload_buffer" "stg_upload_buffer" {
          disk_id     = "${data.aws_storagegateway_local_disk.upload_disk.disk_id}"
          gateway_arn = "${aws_storagegateway_gateway.this.arn}"
        }

如果您使用的是两个磁盘(一个用于上载,一个cahce),请使用相同的代码,但将默认值设置为cache_disk_path =“ / dev / sdc”

答案 1 :(得分:0)

如果您使用AWS cli运行aws storagegateway list-local-disks --gateway-arn [your gateway's arn] --region [gateway's region],则将返回包含磁盘ID的数据。

然后,在示例代码中,将SCSI替换为"${gateway_arn}:[diskID from command above]",将创建缓存卷。

我注意到的一件事-当我这样做之后又尝试再次应用相同的Terraform代码,并且在某些情况下,即使在我的Terraform中有针对性地部署了特定资源的情况下,它也想重新部署缓存卷,因为Terraform正在检测到磁盘ID更改为值“ 1”。但是,将“ 1”作为Terraform中的值传递似乎无效。