使用Terraform创建Azure存储账户时如何获取storage_sid?
Terraform创建AD域绑定存储账户:自动获取storage_sid方案
当然可以在创建流程中自动获取并使用storage_sid,不需要提前手动获取。核心逻辑是利用Terraform的资源依赖特性,先创建存储账户,再引用其生成的sid属性完成AD域认证配置。
实现步骤
1. 先创建基础存储账户
先定义存储账户资源,暂不配置AD域相关内容:
resource "azurerm_storage_account" "ad_bound" { name = "your-storage-acc-name" resource_group_name = azurerm_resource_group.your_rg.name location = azurerm_resource_group.your_rg.location account_tier = "Standard" account_replication_type = "LRS" # 其他存储账户配置参数按需补充 }
2. 引用存储账户的sid属性完成AD认证配置
存储账户创建后,其内置的sid属性就是所需的storage_sid,直接在azure_files_authentication块中引用即可:
resource "azurerm_storage_account_fileshare" "ad_share" { name = "your-fileshare-name" storage_account_name = azurerm_storage_account.ad_bound.name quota = 100 azure_files_authentication { directory_service_type = "AD" domain_name = "your-domain.local" # 替换为Get-ADDomain获取的domain_name domain_sid = "S-1-5-21-xxxxxx-xxxxxx-xxxxxx" # 替换为获取的domain_sid storage_sid = azurerm_storage_account.ad_bound.sid # 自动引用存储账户sid domain_username = "your-domain-join-user" # 按需补充AD域账户 domain_password = "your-domain-join-pass" # 按需补充密码 } }
关键说明
- Terraform会自动处理资源依赖:先创建存储账户,待其sid属性生成后,再配置文件共享的AD认证,无需手动拆分执行步骤。
- 确保使用的
azurermprovider版本≥3.0,该版本开始支持直接读取存储账户的sid属性。 - 若需为整个存储账户配置AD域服务(而非单个文件共享),可使用
azurerm_storage_account_active_directory资源,同样通过引用存储账户的sid来填充storage_sid参数:
resource "azurerm_storage_account_active_directory" "example" { storage_account_id = azurerm_storage_account.ad_bound.id domain_name = "your-domain.local" domain_sid = "S-1-5-21-xxxxxx-xxxxxx-xxxxxx" storage_sid = azurerm_storage_account.ad_bound.sid domain_join_username = "your-domain-user" domain_join_password = "your-domain-pass" }
内容的提问来源于stack exchange,提问作者gotothesky
相关产品推荐
相关产品推荐

