/azurerm/internal/services/compute/tests/linux_virtual_machine_scale_set_identity_resource_test.go

https://github.com/terraform-providers/terraform-provider-azurerm · Go · 386 lines · 368 code · 14 blank · 4 comment · 0 complexity · 0d81ce1f7c24a4f252b4853128f1c54c MD5 · raw file

  1. package tests
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
  6. "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/acceptance"
  7. )
  8. func TestAccAzureRMLinuxVirtualMachineScaleSet_identityNone(t *testing.T) {
  9. data := acceptance.BuildTestData(t, "azurerm_linux_virtual_machine_scale_set", "test")
  10. resource.ParallelTest(t, resource.TestCase{
  11. PreCheck: func() { acceptance.PreCheck(t) },
  12. Providers: acceptance.SupportedProviders,
  13. CheckDestroy: testCheckAzureRMLinuxVirtualMachineScaleSetDestroy,
  14. Steps: []resource.TestStep{
  15. {
  16. Config: testAccAzureRMLinuxVirtualMachineScaleSet_authPassword(data),
  17. Check: resource.ComposeTestCheckFunc(
  18. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  19. resource.TestCheckResourceAttr(data.ResourceName, "identity.%", "0"),
  20. ),
  21. },
  22. data.ImportStep(
  23. "admin_password",
  24. ),
  25. },
  26. })
  27. }
  28. func TestAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssigned(t *testing.T) {
  29. data := acceptance.BuildTestData(t, "azurerm_linux_virtual_machine_scale_set", "test")
  30. resource.ParallelTest(t, resource.TestCase{
  31. PreCheck: func() { acceptance.PreCheck(t) },
  32. Providers: acceptance.SupportedProviders,
  33. CheckDestroy: testCheckAzureRMLinuxVirtualMachineScaleSetDestroy,
  34. Steps: []resource.TestStep{
  35. {
  36. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssigned(data),
  37. Check: resource.ComposeTestCheckFunc(
  38. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  39. resource.TestCheckResourceAttrSet(data.ResourceName, "identity.0.principal_id"),
  40. ),
  41. },
  42. data.ImportStep(
  43. "admin_password",
  44. ),
  45. {
  46. // disable it
  47. Config: testAccAzureRMLinuxVirtualMachineScaleSet_authPassword(data),
  48. Check: resource.ComposeTestCheckFunc(
  49. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  50. resource.TestCheckResourceAttr(data.ResourceName, "identity.%", "0"),
  51. ),
  52. },
  53. data.ImportStep(
  54. "admin_password",
  55. ),
  56. {
  57. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssigned(data),
  58. Check: resource.ComposeTestCheckFunc(
  59. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  60. resource.TestCheckResourceAttrSet(data.ResourceName, "identity.0.principal_id"),
  61. ),
  62. },
  63. data.ImportStep(
  64. "admin_password",
  65. ),
  66. },
  67. })
  68. }
  69. func TestAccAzureRMLinuxVirtualMachineScaleSet_identityUserAssigned(t *testing.T) {
  70. data := acceptance.BuildTestData(t, "azurerm_linux_virtual_machine_scale_set", "test")
  71. resource.ParallelTest(t, resource.TestCase{
  72. PreCheck: func() { acceptance.PreCheck(t) },
  73. Providers: acceptance.SupportedProviders,
  74. CheckDestroy: testCheckAzureRMLinuxVirtualMachineScaleSetDestroy,
  75. Steps: []resource.TestStep{
  76. {
  77. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identityUserAssigned(data),
  78. Check: resource.ComposeTestCheckFunc(
  79. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  80. ),
  81. },
  82. data.ImportStep(
  83. "admin_password",
  84. ),
  85. {
  86. // disable it
  87. Config: testAccAzureRMLinuxVirtualMachineScaleSet_authPassword(data),
  88. Check: resource.ComposeTestCheckFunc(
  89. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  90. resource.TestCheckResourceAttr(data.ResourceName, "identity.%", "0"),
  91. ),
  92. },
  93. data.ImportStep(
  94. "admin_password",
  95. ),
  96. {
  97. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identityUserAssigned(data),
  98. Check: resource.ComposeTestCheckFunc(
  99. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  100. ),
  101. },
  102. data.ImportStep(
  103. "admin_password",
  104. ),
  105. {
  106. // second
  107. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identityUserAssignedUpdated(data),
  108. Check: resource.ComposeTestCheckFunc(
  109. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  110. ),
  111. },
  112. data.ImportStep(
  113. "admin_password",
  114. ),
  115. },
  116. })
  117. }
  118. func TestAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssignedUserAssigned(t *testing.T) {
  119. data := acceptance.BuildTestData(t, "azurerm_linux_virtual_machine_scale_set", "test")
  120. resource.ParallelTest(t, resource.TestCase{
  121. PreCheck: func() { acceptance.PreCheck(t) },
  122. Providers: acceptance.SupportedProviders,
  123. CheckDestroy: testCheckAzureRMLinuxVirtualMachineScaleSetDestroy,
  124. Steps: []resource.TestStep{
  125. {
  126. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssignedUserAssigned(data),
  127. Check: resource.ComposeTestCheckFunc(
  128. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  129. resource.TestCheckResourceAttrSet(data.ResourceName, "identity.0.principal_id"),
  130. ),
  131. },
  132. data.ImportStep(
  133. "admin_password",
  134. ),
  135. {
  136. // disable it
  137. Config: testAccAzureRMLinuxVirtualMachineScaleSet_authPassword(data),
  138. Check: resource.ComposeTestCheckFunc(
  139. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  140. resource.TestCheckResourceAttr(data.ResourceName, "identity.%", "0"),
  141. ),
  142. },
  143. data.ImportStep(
  144. "admin_password",
  145. ),
  146. {
  147. Config: testAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssignedUserAssigned(data),
  148. Check: resource.ComposeTestCheckFunc(
  149. testCheckAzureRMLinuxVirtualMachineScaleSetExists(data.ResourceName),
  150. resource.TestCheckResourceAttrSet(data.ResourceName, "identity.0.principal_id"),
  151. ),
  152. },
  153. data.ImportStep(
  154. "admin_password",
  155. ),
  156. },
  157. })
  158. }
  159. func testAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssigned(data acceptance.TestData) string {
  160. template := testAccAzureRMLinuxVirtualMachineScaleSet_template(data)
  161. return fmt.Sprintf(`
  162. %s
  163. resource "azurerm_linux_virtual_machine_scale_set" "test" {
  164. name = "acctestvmss-%d"
  165. resource_group_name = azurerm_resource_group.test.name
  166. location = azurerm_resource_group.test.location
  167. sku = "Standard_F2"
  168. instances = 1
  169. admin_username = "adminuser"
  170. admin_password = "P@ssword1234!"
  171. disable_password_authentication = false
  172. source_image_reference {
  173. publisher = "Canonical"
  174. offer = "UbuntuServer"
  175. sku = "16.04-LTS"
  176. version = "latest"
  177. }
  178. os_disk {
  179. storage_account_type = "Standard_LRS"
  180. caching = "ReadWrite"
  181. }
  182. network_interface {
  183. name = "example"
  184. primary = true
  185. ip_configuration {
  186. name = "internal"
  187. primary = true
  188. subnet_id = azurerm_subnet.test.id
  189. }
  190. }
  191. identity {
  192. type = "SystemAssigned"
  193. }
  194. }
  195. `, template, data.RandomInteger)
  196. }
  197. func testAccAzureRMLinuxVirtualMachineScaleSet_identityUserAssigned(data acceptance.TestData) string {
  198. template := testAccAzureRMLinuxVirtualMachineScaleSet_template(data)
  199. return fmt.Sprintf(`
  200. %s
  201. resource "azurerm_user_assigned_identity" "test" {
  202. name = "acctestuai-%d"
  203. resource_group_name = azurerm_resource_group.test.name
  204. location = azurerm_resource_group.test.location
  205. }
  206. resource "azurerm_linux_virtual_machine_scale_set" "test" {
  207. name = "acctestvmss-%d"
  208. resource_group_name = azurerm_resource_group.test.name
  209. location = azurerm_resource_group.test.location
  210. sku = "Standard_F2"
  211. instances = 1
  212. admin_username = "adminuser"
  213. admin_password = "P@ssword1234!"
  214. disable_password_authentication = false
  215. source_image_reference {
  216. publisher = "Canonical"
  217. offer = "UbuntuServer"
  218. sku = "16.04-LTS"
  219. version = "latest"
  220. }
  221. os_disk {
  222. storage_account_type = "Standard_LRS"
  223. caching = "ReadWrite"
  224. }
  225. network_interface {
  226. name = "example"
  227. primary = true
  228. ip_configuration {
  229. name = "internal"
  230. primary = true
  231. subnet_id = azurerm_subnet.test.id
  232. }
  233. }
  234. identity {
  235. type = "UserAssigned"
  236. identity_ids = [
  237. azurerm_user_assigned_identity.test.id,
  238. ]
  239. }
  240. }
  241. `, template, data.RandomInteger, data.RandomInteger)
  242. }
  243. func testAccAzureRMLinuxVirtualMachineScaleSet_identityUserAssignedUpdated(data acceptance.TestData) string {
  244. template := testAccAzureRMLinuxVirtualMachineScaleSet_template(data)
  245. return fmt.Sprintf(`
  246. %s
  247. resource "azurerm_user_assigned_identity" "test" {
  248. name = "acctestuai-%d"
  249. resource_group_name = azurerm_resource_group.test.name
  250. location = azurerm_resource_group.test.location
  251. }
  252. resource "azurerm_user_assigned_identity" "other" {
  253. name = "acctestuai2-%d"
  254. resource_group_name = azurerm_resource_group.test.name
  255. location = azurerm_resource_group.test.location
  256. }
  257. resource "azurerm_linux_virtual_machine_scale_set" "test" {
  258. name = "acctestvmss-%d"
  259. resource_group_name = azurerm_resource_group.test.name
  260. location = azurerm_resource_group.test.location
  261. sku = "Standard_F2"
  262. instances = 1
  263. admin_username = "adminuser"
  264. admin_password = "P@ssword1234!"
  265. disable_password_authentication = false
  266. source_image_reference {
  267. publisher = "Canonical"
  268. offer = "UbuntuServer"
  269. sku = "16.04-LTS"
  270. version = "latest"
  271. }
  272. os_disk {
  273. storage_account_type = "Standard_LRS"
  274. caching = "ReadWrite"
  275. }
  276. network_interface {
  277. name = "example"
  278. primary = true
  279. ip_configuration {
  280. name = "internal"
  281. primary = true
  282. subnet_id = azurerm_subnet.test.id
  283. }
  284. }
  285. identity {
  286. type = "UserAssigned"
  287. identity_ids = [
  288. azurerm_user_assigned_identity.test.id,
  289. azurerm_user_assigned_identity.other.id,
  290. ]
  291. }
  292. }
  293. `, template, data.RandomInteger, data.RandomInteger, data.RandomInteger)
  294. }
  295. func testAccAzureRMLinuxVirtualMachineScaleSet_identitySystemAssignedUserAssigned(data acceptance.TestData) string {
  296. template := testAccAzureRMLinuxVirtualMachineScaleSet_template(data)
  297. return fmt.Sprintf(`
  298. %s
  299. resource "azurerm_user_assigned_identity" "test" {
  300. name = "acctestuai-%d"
  301. resource_group_name = azurerm_resource_group.test.name
  302. location = azurerm_resource_group.test.location
  303. }
  304. resource "azurerm_linux_virtual_machine_scale_set" "test" {
  305. name = "acctestvmss-%d"
  306. resource_group_name = azurerm_resource_group.test.name
  307. location = azurerm_resource_group.test.location
  308. sku = "Standard_F2"
  309. instances = 1
  310. admin_username = "adminuser"
  311. admin_password = "P@ssword1234!"
  312. disable_password_authentication = false
  313. source_image_reference {
  314. publisher = "Canonical"
  315. offer = "UbuntuServer"
  316. sku = "16.04-LTS"
  317. version = "latest"
  318. }
  319. os_disk {
  320. storage_account_type = "Standard_LRS"
  321. caching = "ReadWrite"
  322. }
  323. network_interface {
  324. name = "example"
  325. primary = true
  326. ip_configuration {
  327. name = "internal"
  328. primary = true
  329. subnet_id = azurerm_subnet.test.id
  330. }
  331. }
  332. identity {
  333. type = "SystemAssigned, UserAssigned"
  334. identity_ids = [
  335. azurerm_user_assigned_identity.test.id,
  336. ]
  337. }
  338. }
  339. `, template, data.RandomInteger, data.RandomInteger)
  340. }