Terraform 和 AWS Storage Gateway 磁盘出现问题

mt_*_*100 2 amazon-web-services terraform terraform-provider-aws

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

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

但是,一旦创建了网关,我就尝试使用 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}"
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

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

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

小智 5

在创建资源“aws_storagegateway_cache”之前,使用 data 获取磁盘 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}"
        }
Run Code Online (Sandbox Code Playgroud)

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