theme: condensed-night-purple
这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
四、创建模块
在Terraform中创建模块非常容易;我们所需要的只是输入变量和资源的标准配置。在该示例中,我们将为存储帐户创建我们的第一个模块。
我们将首先创建模块文件夹,然后在另一个Terraform配置中引用该模块。我们将首先使用以下内容的文件夹层次结构:
复制main.tf和Variables.tf配置的代码并创建每个文件。我们将根据上面的目录结构放置每个文件。
Variables.tf文件包含我们的输入变量。输入变量是我们的模块接受自定义其部署的参数。对于我们的存储帐户模块,我们可以通过接收存储帐户名称,位置和资源组的输入来保持如此简单: Variables.tf
variable "saname" { type = string description = "Name of storage account" } variable "rgname" { type = string description = "Name of resource group" } variable "location" { type = string description = "Azure location of storage account environment" default = "westus2" }
main.tf文件包含用于创建存储帐户的代码。在该示例中,我们只有一小一组用于我们的存储帐户的参数,以保持简单。
但是,在实际生产环境中,我们可能希望实现网络策略以及日志记录选项。然后,我们可以使用我们的模块来定义要配置所有存储帐户的“标准”,以便配置所有存储帐户: main.tf ``` resource "azurermstorageaccount" "sa" { name = var.saname resourcegroupname = var.rgname location = var.location accounttier = "Standard" accountreplication_type = "GRS"
} ```
接下来,我们将在TerraformDemo文件夹的根目录中创建另一个Main.TF文件,该文件将引用我们新创建的存储帐户模块目录:
在根模块上的main.tf文件,我们去调用子模块。在块内部,我们需要通过声明源参数来引用我们使用的模块。在此示例中,我们仅从模块子文件夹中引用模块,因此路径为./modules/storage-Account
。
我们还需要为您的存储帐户模块提供任何所需的可变输入。这些是我们在存储帐户模块目录中的VariaBlible.tf文件中创建的相同变量:
根模块main.tf
``` 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 } ``` 在我们的main.tf文件中,我们还包括Azurerm提供者块。最好的做法是在根模块文件处指定提供程序;这样,调用的所有模块将继承此提供商。在创建模块时,尽量不尽可能地在模块本身内的提供程序。这可能导致进一步的复杂性并使模块变脆。
少年,没看够?点击石头的主页,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!