-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update hash function for os_profile_linux_config (#3837)
* Add new acc test to verify ssh key issue This commit adds a new acceptance test to verify that the vmss is not calculating correctly the hashcode for the `os_profile_linux_config` Related: #3836 * Update OsProfileLinuxConfigHash generator Update the `resourceArmVirtualMachineScaleSetOsProfileLinuxConfigHash` method to include in the hash function the fields from the `ssh_keys` subelements. Fixes: #3836
- Loading branch information
1 parent
f6da31e
commit b35296a
Showing
2 changed files
with
183 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -174,6 +174,38 @@ func TestUnitAzureRMVirtualMachineScaleSet_basicPublicIP_simpleUpdate(t *testing | |
}) | ||
} | ||
|
||
func TestAccAzureRMVirtualMachineScaleSet_verify_key_data_changed(t *testing.T) { | ||
resourceName := "azurerm_virtual_machine_scale_set.test" | ||
ri := tf.AccRandTimeInt() | ||
location := testLocation() | ||
config := testAccAzureRMVirtualMachineScaleSet_linux(ri, location) | ||
updatedConfig := testAccAzureRMVirtualMachineScaleSet_linuxKeyDataUpdated(ri, location) | ||
|
||
initialKeyData := "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDCsTcryUl51Q2VSEHqDRNmceUFo55ZtcIwxl2QITbN1RREti5ml/VTytC0yeBOvnZA4x4CFpdw/lCDPk0yrH9Ei5vVkXmOrExdTlT3qI7YaAzj1tUVlBd4S6LX1F7y6VLActvdHuDDuXZXzCDd/97420jrDfWZqJMlUK/EmCE5ParCeHIRIvmBxcEnGfFIsw8xQZl0HphxWOtJil8qsUWSdMyCiJYYQpMoMliO99X40AUc4/AlsyPyT5ddbKk08YrZ+rKDVHF7o29rh4vi5MmHkVgVQHKiKybWlHq+b71gIAUQk9wrJxD+dqt4igrmDSpIjfjwnd+l5UIn5fJSO5DYV4YT/4hwK7OKmuo7OFHD0WyY5YnkYEMtFgzemnRBdE8ulcT60DQpVgRMXFWHvhyCWy0L6sgj1QWDZlLpvsIvNfHsyhKFMG1frLnMt/nP0+YCcfg+v1JYeCKjeoJxB8DWcRBsjzItY0CGmzP8UYZiYKl/2u+2TgFS5r7NWH11bxoUzjKdaa1NLw+ieA8GlBFfCbfWe6YVB9ggUte4VtYFMZGxOjS2bAiYtfgTKFJv+XqORAwExG6+G2eDxIDyo80/OA9IG7Xv/jwQr7D6KDjDuULFcN/iTxuttoKrHeYz1hf5ZQlBdllwJHYx6fK2g8kha6r2JIQKocvsAXiiONqSfw== [email protected]" | ||
expectedKeyData := "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDvXYZAjVUt2aojUV3XIA+PY6gXrgbvktXwf2NoIHGlQFhogpMEyOfqgogCtTBM7MNCS3ELul6SV+mlpH08Ki45ADIQuDXdommCvsMFW096JrsHOJpGfjCsJ1gbbv7brB3Ag+BSGb4qO3pRsEVTtZCeJDwfH5D7vmqP5xXcELKR4UAtKQKUhLvt6mhW90sFLTJeOTiYGbavIKqfCUFSeSMQkUPr8o3uzOfeWyCw7tc7szLuvfwJ5poGHuve73KKAlUnDTPUrhyj7iITZSDl+/i+bpDzPyCyJWDMsC0ON7q2fDr2mEz0L9ACrsI5Nx3lt5fe+IaHSrjivqnL8SqUWSN45o9Qp99sGWFiuTfos8f1jp+AXzC4ArVtKyRg/CnzKRiK0CGSxBJ5s9zAoa7yBBmjCszq89vFa0eMgpEIZFwa6kKJKt9AfRBXgO9YGPV4uaN7topy92/p2pE+vF8IafarbvnTDOQt62mS07tXYqYg1DhecrmBVWKlq9oafBweoeTjoq52SoGsuDc/YAOzIgWVIuvV8yKoh9KbXPWowjLtxDhRIS/d1nMMNdNI8X0TQivgi5+umMgAXhsVAKSNDUauLt4jimYkWAuE+R6KoCqVFdaB9bQDySBjAziruDSe3reToydjzzluvHMjWK8QiDynxs41pi4zZz6gAlca3QPkEQ== [email protected]" | ||
|
||
resource.ParallelTest(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
CheckDestroy: testCheckAzureRMVirtualMachineScaleSetDestroy, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: config, | ||
Check: resource.ComposeTestCheckFunc( | ||
testCheckAzureRMVirtualMachineScaleSetExists(resourceName), | ||
testCheckAzureRMVirtualMachineScaleSetSshKey(resourceName, initialKeyData), | ||
), | ||
}, | ||
{ | ||
Config: updatedConfig, | ||
Check: resource.ComposeTestCheckFunc( | ||
testCheckAzureRMVirtualMachineScaleSetSshKey(resourceName, expectedKeyData), | ||
), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func TestAccAzureRMVirtualMachineScaleSet_basicApplicationSecurity(t *testing.T) { | ||
resourceName := "azurerm_virtual_machine_scale_set.test" | ||
ri := tf.AccRandTimeInt() | ||
|
@@ -1266,6 +1298,28 @@ func testCheckAzureRMVirtualMachineScaleSetAcceleratedNetworking(name string, bo | |
} | ||
} | ||
|
||
func testCheckAzureRMVirtualMachineScaleSetSshKey(name string, expected string) resource.TestCheckFunc { | ||
return func(s *terraform.State) error { | ||
resp, err := testGetAzureRMVirtualMachineScaleSet(s, name) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
n := resp.VirtualMachineProfile.OsProfile.LinuxConfiguration | ||
if n == nil { | ||
return fmt.Errorf("Bad: Could not get linux configuration for scale set %v", name) | ||
} | ||
|
||
publicKey := *(*n).SSH.PublicKeys | ||
keyData := *(publicKey[0]).KeyData | ||
if keyData != expected { | ||
return fmt.Errorf("Bad: ssh_keys.key_data set incorrectly for scale set %v\n Wanted: %+v Received: %+v", name, expected, keyData) | ||
} | ||
|
||
return nil | ||
} | ||
} | ||
|
||
func testCheckAzureRMVirtualMachineScaleSetOverprovision(name string) resource.TestCheckFunc { | ||
return func(s *terraform.State) error { | ||
resp, err := testGetAzureRMVirtualMachineScaleSet(s, name) | ||
|
@@ -3026,6 +3080,123 @@ resource "azurerm_virtual_machine_scale_set" "test" { | |
`, rInt, location) | ||
} | ||
|
||
func testAccAzureRMVirtualMachineScaleSet_linuxKeyDataUpdated(rInt int, location string) string { | ||
return fmt.Sprintf(` | ||
resource "azurerm_resource_group" "test" { | ||
name = "acctestRG-%[1]d" | ||
location = "%[2]s" | ||
} | ||
resource "azurerm_virtual_network" "test" { | ||
name = "acctestvn-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
location = "${azurerm_resource_group.test.location}" | ||
address_space = ["10.0.0.0/8"] | ||
} | ||
resource "azurerm_subnet" "test" { | ||
name = "acctestsn-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
virtual_network_name = "${azurerm_virtual_network.test.name}" | ||
address_prefix = "10.0.1.0/24" | ||
} | ||
resource "azurerm_storage_account" "test" { | ||
name = "accsa%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
location = "${azurerm_resource_group.test.location}" | ||
account_tier = "Standard" | ||
account_replication_type = "LRS" | ||
} | ||
resource "azurerm_storage_container" "test" { | ||
name = "acctestsc-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
storage_account_name = "${azurerm_storage_account.test.name}" | ||
container_access_type = "private" | ||
} | ||
resource "azurerm_public_ip" "test" { | ||
name = "acctestpip-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
location = "${azurerm_resource_group.test.location}" | ||
allocation_method = "Static" | ||
} | ||
resource "azurerm_lb" "test" { | ||
name = "acctestlb-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
location = "${azurerm_resource_group.test.location}" | ||
frontend_ip_configuration { | ||
name = "ip-address" | ||
public_ip_address_id = "${azurerm_public_ip.test.id}" | ||
} | ||
} | ||
resource "azurerm_lb_backend_address_pool" "test" { | ||
name = "acctestbap-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
loadbalancer_id = "${azurerm_lb.test.id}" | ||
} | ||
resource "azurerm_virtual_machine_scale_set" "test" { | ||
name = "acctestvmss-%[1]d" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
location = "${azurerm_resource_group.test.location}" | ||
upgrade_policy_mode = "Automatic" | ||
sku { | ||
name = "Standard_F2" | ||
tier = "Standard" | ||
capacity = "1" | ||
} | ||
os_profile { | ||
computer_name_prefix = "prefix" | ||
admin_username = "ubuntu" | ||
custom_data = "updated custom data!" | ||
} | ||
os_profile_linux_config { | ||
disable_password_authentication = true | ||
ssh_keys { | ||
path = "/home/ubuntu/.ssh/authorized_keys" | ||
key_data = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDvXYZAjVUt2aojUV3XIA+PY6gXrgbvktXwf2NoIHGlQFhogpMEyOfqgogCtTBM7MNCS3ELul6SV+mlpH08Ki45ADIQuDXdommCvsMFW096JrsHOJpGfjCsJ1gbbv7brB3Ag+BSGb4qO3pRsEVTtZCeJDwfH5D7vmqP5xXcELKR4UAtKQKUhLvt6mhW90sFLTJeOTiYGbavIKqfCUFSeSMQkUPr8o3uzOfeWyCw7tc7szLuvfwJ5poGHuve73KKAlUnDTPUrhyj7iITZSDl+/i+bpDzPyCyJWDMsC0ON7q2fDr2mEz0L9ACrsI5Nx3lt5fe+IaHSrjivqnL8SqUWSN45o9Qp99sGWFiuTfos8f1jp+AXzC4ArVtKyRg/CnzKRiK0CGSxBJ5s9zAoa7yBBmjCszq89vFa0eMgpEIZFwa6kKJKt9AfRBXgO9YGPV4uaN7topy92/p2pE+vF8IafarbvnTDOQt62mS07tXYqYg1DhecrmBVWKlq9oafBweoeTjoq52SoGsuDc/YAOzIgWVIuvV8yKoh9KbXPWowjLtxDhRIS/d1nMMNdNI8X0TQivgi5+umMgAXhsVAKSNDUauLt4jimYkWAuE+R6KoCqVFdaB9bQDySBjAziruDSe3reToydjzzluvHMjWK8QiDynxs41pi4zZz6gAlca3QPkEQ== [email protected]" | ||
} | ||
} | ||
network_profile { | ||
name = "TestNetworkProfile" | ||
primary = true | ||
ip_configuration { | ||
name = "TestIPConfiguration" | ||
primary = true | ||
subnet_id = "${azurerm_subnet.test.id}" | ||
load_balancer_backend_address_pool_ids = ["${azurerm_lb_backend_address_pool.test.id}"] | ||
} | ||
} | ||
storage_profile_os_disk { | ||
name = "osDiskProfile" | ||
caching = "ReadWrite" | ||
create_option = "FromImage" | ||
os_type = "linux" | ||
vhd_containers = ["${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}"] | ||
} | ||
storage_profile_image_reference { | ||
publisher = "Canonical" | ||
offer = "UbuntuServer" | ||
sku = "16.04-LTS" | ||
version = "latest" | ||
} | ||
} | ||
`, rInt, location) | ||
} | ||
|
||
func testAccAzureRMVirtualMachineScaleSet_basicLinux_managedDisk(rInt int, location string) string { | ||
return fmt.Sprintf(` | ||
resource "azurerm_resource_group" "test" { | ||
|