使用 Terraform 和 AWS Storage Gateway 磁盘时遇到问题



我正在将 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:添加存储网关缓存时出错:无效网关请求异常:指定的磁盘不存在。 状态代码:400,请求 ID:FDA602FD-A47E-11E8-A1F4-B383E2E2E2F6

我尝试像上面一样对disk_id进行硬编码或使用变量。在变量上,我不知道它是返回还是存在,所以这可能是问题所在,对此很陌生。

在创建资源"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">

如果您使用 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"。然而,在 Terraform 中传入"1"作为值似乎不起作用。

这也行得通:

variable "disk_path" {
default = "/dev/sdb"
}
provider "aws" {
alias  = "primary"
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
}
}

data "aws_storagegateway_local_disk" "sgw_disk" {
disk_path   = var.disk_path
gateway_arn = aws_storagegateway_gateway.hmsgw.arn
provider    = aws.primary
}
resource "aws_storagegateway_cache" "sgw_cache" {
disk_id     = data.aws_storagegateway_local_disk.sgw_disk.id
gateway_arn = aws_storagegateway_gateway.hmsgw.arn
provider    = aws.primary
}

相关内容

  • 没有找到相关文章

最新更新