Terraform | 基于Azure上使用模块(三)


theme: condensed-night-purple

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

五、使用模块部署和输出

当我们在TerraformDemo目录中运行我们的Terraform init时,我们可以看到模块初始化。

``` Initializing modules... - storage_account in modules/storage-account

Initializing the backend...

Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "azurerm" (hashicorp/azurerm) 1.38.0... `` 当我们运行terraform apply`时,它将引用存储帐户模块,并使用模块输入中声明的设置创建我们的存储帐户。此外,我们可以在具有不同参数字符串的配置中多次使用相同的模块。

``` provider "azurerm" { version = "1.38.0" }

create resource group

resource "azurermresourcegroup" "rg" { name = "rg-MyFirstTerraform" location = "westus" }

Create Storage Account

module "storage_account" { source = "./modules/storage-account"

saname = "statfdemosa234" rgname = azurermresourcegroup.rg.name location = azurermresourcegroup.rg.location }

Create Storage Account

module "storage_account2" { source = "./modules/storage-account"

saname = "statfdemosa241" rgname = azurermresourcegroup.rg.name location = azurermresourcegroup.rg.location } ``` 我们刚刚创建了第一个模块。此模块非常简单,但是,对于使用加密磁盘部署虚拟机的更复杂的场景,模块可以完美地抽象几个输入的所有复杂性。

可变输入不是模块的唯一重要部分。产出同样重要。它们允许我们将信息传输到模块,以便它们可以彼此构建。为模块创建输出与常规Terraform配置相同。

创建一个输出.TF文件并使用输出块声明输出值。下面我们正在为我们的存储帐户创建一个输出块主访问键,所以我们可以在创建它之后将其存储在Azure Key Vault中: output "primary_key" { description = "The primary access key for the storage account" value = azurerm_storage_account.sa.primary_access_key sensitive = true }

另请注意,我们正在使用敏感的参数来指定我们的存储帐户的PrimaryAccessKey输出包含敏感数据。Terraform将把这些信息视为机密,并在运行Terraform时将其从控制台显示隐藏。

这不会保护Terraform的状态文件中的值;它仍然是清晰的文本,这就是为什么在真实的生产方案中,我们希望使用远程状态。

要在另一个资源中使用模块的输出值,请通过在模块中引用它来指定值,例子如下:

```

resource "azurermkeyvaultsecret" "stasecret" { name = "statfdemosa234-secret" value = module.storageaccount.primarykey keyvaultid = azurermkey_vault.kv.id

} ```


少年,没看够?点击石头的主页,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!

你可能感兴趣的:(python,java,大数据,linux,ubuntu)