更改 state 有其风险,State manipulation 有赚有赔,更改前应详阅官方文件说明书之二
state inspection
课程内容与代码会放在 Github 上: https://github.com/chechiachang/terraform-30-days
赛後文章会整理放到个人的部落格上 http://chechia.net/
既然手动直接 vim 下去不是一个好方法,我们先来看 terraform 官方支援的 state 操作
state
terraform state list 上堂课已经说明过,放在这边做范例
cd azure/foundation/compute_network
terragrunt state list
module.network.data.azurerm_resource_group.network
module.network.azurerm_subnet.subnet[0]
module.network.azurerm_subnet.subnet[1]
module.network.azurerm_subnet.subnet[2]
module.network.azurerm_virtual_network.vnet
另外一个用例是,有时我们在 web console 上看到 azure cloud 上的 remote resource,例如:在 azure web console 上看到一个 subnet,我们想要
azure/modules/compute_network
内又引用 Azure/network/azurerm
terraform 提供了 state filter by id 的方式
terraform state list -id /subscriptions/6fce7237-7e8e-4053-8e7d-ecf8a7c392ce/resourceGroups/terraform-30-days/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/dev-1
module.network.azurerm_subnet.subnet[0]
这时我们可以进一步 show 出 state 的内容
terragrunt state show module.network.azurerm_virtual_network.vnet
resource "azurerm_virtual_network" "vnet" {
address_space = [
"10.2.0.0/16",
]
dns_servers = []
guid = "5e5fb9de-600b-4085-a59d-0792c567c3a3"
id = "/subscriptions/6fce7237-7e8e-4053-8e7d-ecf8a7c392ce/resourceGroups/terraform-30-days/providers/Microsoft.Network/virtualNetworks/acctvnet"
location = "southeastasia"
name = "acctvnet"
resource_group_name = "terraform-30-days"
subnet = [
{
address_prefix = "10.2.1.0/24"
id = "/subscriptions/6fce7237-7e8e-4053-8e7d-ecf8a7c392ce/resourceGroups/terraform-30-days/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/dev-1"
name = "dev-1"
security_group = ""
},
{
address_prefix = "10.2.2.0/24"
id = "/subscriptions/6fce7237-7e8e-4053-8e7d-ecf8a7c392ce/resourceGroups/terraform-30-days/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/dev-2"
name = "dev-2"
security_group = ""
},
{
address_prefix = "10.2.3.0/24"
id = "/subscriptions/6fce7237-7e8e-4053-8e7d-ecf8a7c392ce/resourceGroups/terraform-30-days/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/dev-3"
name = "dev-3"
security_group = ""
},
]
tags = {
"environment" = "foundation"
}
vm_protection_enabled = false
}
基本上所有 terraform 中设定 / 产生的资料,state 里面都有
在看另外一个
terragrunt state show module.network.azurerm_subnet.subnet[0]
zsh: no matches found: module.network.azurerm_subnet.subnet[0]
terragrunt state show 'module.network.azurerm_subnet.subnet[0]'
resource "azurerm_subnet" "subnet" {
address_prefix = "10.2.1.0/24"
address_prefixes = [
"10.2.1.0/24",
]
enforce_private_link_endpoint_network_policies = false
enforce_private_link_service_network_policies = false
id = "/subscriptions/6fce7237-7e8e-4053-8e7d-ecf8a7c392ce/resourceGroups/terraform-30-days/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/dev-1"
name = "dev-1"
resource_group_name = "terraform-30-days"
service_endpoint_policy_ids = []
service_endpoints = []
virtual_network_name = "acctvnet"
}
对资安敏感的人,可能看到 state show 已经觉得不太舒服
terraform state 其实是有一定的敏感性,官方文件也有建议要好好保管 terraform state 档案
上一篇说到了,AR宠物的部分,如果我们真的能用程序模拟出动物的习性、动作,那是不是代表说我们也能模拟...
这次要来讲20201222的第五题了 这次的题目比较简单,但是题目叙述很长 大意就是:有一个人很爱喝...
触碰开灯 ( 类比讯号 ) 教学原文参考:触碰开灯 ( 类比讯号 ) 这篇文章会介绍如何使用「序列写...
在平时开发时,我们会遇到要创建许多类型相似的object,之前的文章有提到使用new操作符配合fun...
函式是每个程序语言都会有的一个语法,非常的实用,只要是编写功能,一定与函式脱离不了关系,而函式的内容...