Introduction:
HCP Terraform has a lots of API with which we can extract broader metrics related to workspace, runs, state file and so on, reference link. However, sometimes it becomes necessity to extract more filtered details of state to have better visualisation. We could extract these meaningful information from state file using can extract few metrics related to state like number of resources managed.
Prerequisites (if applicable): download the latest state file version from HCP Terraform UI or terraform.tfstate would be present at local if execution mode is local.
Overview: We can achieve this using linux manipulation commands like grep, sed and awk. We will extract a couple of metrics here using these manipulation techniques.
How-to Tutorial:
-
To extract number of resources managed by state file:
terraform state list| wc -l
nehabansal@nehabansal-G2K4Q95C6P ~ % terraform state list | wc -l
51 -
To extract number of modules (excluding data resources) having name started with data:
terraform state list | grep -w -E -v "^data|module.*.data" | wc -l
nehabansal@nehabansal-G2K4Q95C6P ~ % terraform state list | grep -w -E -v "^data| module.*.data"
azurerm_availability_set.DC10TSTAOAARN
azurerm_managed_disk.DCXXX-Disk00
azurerm_managed_disk.DCXXX-Disk01
azurerm_managed_disk.DCXXX-Disk02
azurerm_managed_disk.DCXXX-Disk03
azurerm_managed_disk.DCXXX-OsDisk
azurerm_managed_disk.DCXXX-Disk00
azurerm_managed_disk.DCXXX-Disk01
azurerm_managed_disk.DCXXX-Disk02
azurerm_managed_disk.DCXXX-Disk03
azurerm_managed_disk.DCXXX-OsDisk
azurerm_network_interface.DCXXX-NIC01
azurerm_network_interface.DCXXX-NIC01
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk00
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk01
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk02
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk03
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk00
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk01
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk02
azurerm_virtual_machine_data_disk_attachment.disk_attachment_DCXXX-Disk03
azurerm_windows_virtual_machine.DCXXX
azurerm_windows_virtual_machine.DCXXX
module.sqlstandalone["DCXXXXX"].azurerm_managed_disk.managed_disk["disk01"]
module.sqlstandalone["DCXXX"].azurerm_managed_disk.managed_disk["disk02"]
module.sqlstandalone["DCXXX"].azurerm_managed_disk.managed_disk["disk03"]
module.sqlstandalone["DCXXX"].azurerm_managed_disk.managed_disk["disk04"]
module.sqlstandalone["DCXXX"].azurerm_managed_disk.managed_disk["disk05"]
module.sqlstandalone["DCXXX"].azurerm_managed_disk.managed_disk["disk06"]
module.sqlstandalone["DCXXX"].azurerm_managed_disk.managed_disk["disk07"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk01"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk02"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk03"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk04"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk05"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk06"]
module.sqlstandalone["DCXXX"].azurerm_virtual_machine_data_disk_attachment.data_disk_attachment["disk07"]
module.sqlstandalone["DCXXX"].azurerm_windows_virtual_machine.vm
module.sqlstandalone-DCXXX-NIC.azapi_update_resource.dynamic-to-static
module.sqlstandalone-DCXXX-NIC.azurerm_network_interface.network-interface
module.sqlstandalone-avset-DCXXX.azurerm_availability_set.av-set
nehabansal@nehabansal-G2K4Q95C6P ~ % terraform state list | grep -w -E -v "^data|module.*.data"| wc -l
41
Tips:
Final Tips/Information : You can query and filter out results as per your own needs by manipulating commands.
Additional Information:
If you're still experiencing issues, please contact HCP Terraform Support by submitting a ticket through our support portal