@@ -116,6 +116,69 @@ func TestAccTencentCloudInstanceResourceBasic(t *testing.T) {
116116 },
117117 })
118118}
119+ func TestAccTencentCloudInstanceResource_UserDataRaw (t * testing.T ) {
120+ t .Parallel ()
121+ resource .Test (t , resource.TestCase {
122+ PreCheck : func () {
123+ acctest .AccPreCheck (t )
124+ },
125+ Providers : acctest .AccProviders ,
126+ CheckDestroy : testAccCheckCvmInstanceDestroy ,
127+ Steps : []resource.TestStep {
128+ {
129+ Config : testAccCvmInstanceResource_UserDataRaw ,
130+ Check : resource .ComposeTestCheckFunc (
131+ testAccCheckCvmInstanceExists ("tencentcloud_instance.cvm_user_data_raw" ),
132+ resource .TestCheckResourceAttr ("tencentcloud_instance.cvm_user_data_raw" , "user_data_raw" , "test" ),
133+ ),
134+ },
135+ {
136+ Config : testAccCvmInstanceResource_UserDataRawUpdate ,
137+ Check : resource .ComposeTestCheckFunc (
138+ testAccCheckCvmInstanceExists ("tencentcloud_instance.cvm_user_data_raw" ),
139+ resource .TestCheckResourceAttr ("tencentcloud_instance.cvm_user_data_raw" , "user_data_raw" , "test-update" ),
140+ ),
141+ },
142+ {
143+ ResourceName : "tencentcloud_instance.cvm_user_data_raw" ,
144+ ImportState : true ,
145+ ImportStateVerifyIgnore : []string {"disable_monitor_service" , "disable_security_service" , "disable_automation_service" , "hostname" , "password" , "force_delete" },
146+ },
147+ },
148+ })
149+ }
150+
151+ func TestAccTencentCloudInstanceResource_UserData (t * testing.T ) {
152+ t .Parallel ()
153+ resource .Test (t , resource.TestCase {
154+ PreCheck : func () {
155+ acctest .AccPreCheck (t )
156+ },
157+ Providers : acctest .AccProviders ,
158+ CheckDestroy : testAccCheckCvmInstanceDestroy ,
159+ Steps : []resource.TestStep {
160+ {
161+ Config : testAccCvmInstanceResource_UserData ,
162+ Check : resource .ComposeTestCheckFunc (
163+ testAccCheckCvmInstanceExists ("tencentcloud_instance.cvm_user_data" ),
164+ resource .TestCheckResourceAttr ("tencentcloud_instance.cvm_user_data" , "user_data" , "dGVzdA==" ),
165+ ),
166+ },
167+ {
168+ Config : testAccCvmInstanceResource_UserDataUpdate ,
169+ Check : resource .ComposeTestCheckFunc (
170+ testAccCheckCvmInstanceExists ("tencentcloud_instance.cvm_user_data" ),
171+ resource .TestCheckResourceAttr ("tencentcloud_instance.cvm_user_data" , "user_data" , "dGVzdC11cGRhdGU=" ),
172+ ),
173+ },
174+ {
175+ ResourceName : "tencentcloud_instance.cvm_user_data" ,
176+ ImportState : true ,
177+ ImportStateVerifyIgnore : []string {"disable_monitor_service" , "disable_security_service" , "disable_automation_service" , "hostname" , "password" , "force_delete" },
178+ },
179+ },
180+ })
181+ }
119182
120183func testAccCheckCvmInstanceExists (n string ) resource.TestCheckFunc {
121184 return func (s * terraform.State ) error {
@@ -163,6 +226,232 @@ func testAccCheckCvmInstanceDestroy(s *terraform.State) error {
163226 return nil
164227}
165228
229+ const testAccCvmInstanceResource_UserData = `
230+
231+ data "tencentcloud_availability_zones" "default" {
232+ }
233+ data "tencentcloud_images" "default" {
234+ image_type = ["PUBLIC_IMAGE"]
235+ image_name_regex = "Final"
236+ }
237+ data "tencentcloud_images" "testing" {
238+ image_type = ["PUBLIC_IMAGE"]
239+ }
240+ data "tencentcloud_instance_types" "default" {
241+ memory_size = 2
242+ exclude_sold_out = true
243+
244+ filter {
245+ name = "instance-family"
246+ values = ["S1","S2","S3","S4","S5"]
247+ }
248+ filter {
249+ name = "zone"
250+ values = ["ap-guangzhou-7"]
251+ }
252+ cpu_core_count = 2
253+ }
254+ resource "tencentcloud_vpc" "vpc" {
255+ name = "cvm-basic-vpc"
256+ cidr_block = "10.0.0.0/16"
257+ }
258+ resource "tencentcloud_subnet" "subnet" {
259+ availability_zone = "ap-guangzhou-7"
260+ vpc_id = tencentcloud_vpc.vpc.id
261+ name = "cvm-basic-subnet"
262+ cidr_block = "10.0.0.0/16"
263+ }
264+ resource "tencentcloud_instance" "cvm_user_data" {
265+ instance_name = "tf-test-user-data"
266+ availability_zone = "ap-guangzhou-7"
267+ image_id = data.tencentcloud_images.default.images.0.image_id
268+ vpc_id = tencentcloud_vpc.vpc.id
269+
270+ tags = {
271+ hostname = "tci"
272+ }
273+
274+ lifecycle {
275+ ignore_changes = [instance_type]
276+ }
277+ instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
278+ subnet_id = tencentcloud_subnet.subnet.id
279+ system_disk_type = "CLOUD_PREMIUM"
280+ project_id = 0
281+ user_data = "dGVzdA=="
282+ }
283+
284+ `
285+ const testAccCvmInstanceResource_UserDataUpdate = `
286+
287+ data "tencentcloud_availability_zones" "default" {
288+ }
289+ data "tencentcloud_images" "default" {
290+ image_type = ["PUBLIC_IMAGE"]
291+ image_name_regex = "Final"
292+ }
293+ data "tencentcloud_images" "testing" {
294+ image_type = ["PUBLIC_IMAGE"]
295+ }
296+ data "tencentcloud_instance_types" "default" {
297+ memory_size = 2
298+ exclude_sold_out = true
299+
300+ filter {
301+ name = "instance-family"
302+ values = ["S1","S2","S3","S4","S5"]
303+ }
304+ filter {
305+ name = "zone"
306+ values = ["ap-guangzhou-7"]
307+ }
308+ cpu_core_count = 2
309+ }
310+ resource "tencentcloud_vpc" "vpc" {
311+ name = "cvm-basic-vpc"
312+ cidr_block = "10.0.0.0/16"
313+ }
314+ resource "tencentcloud_subnet" "subnet" {
315+ availability_zone = "ap-guangzhou-7"
316+ vpc_id = tencentcloud_vpc.vpc.id
317+ name = "cvm-basic-subnet"
318+ cidr_block = "10.0.0.0/16"
319+ }
320+ resource "tencentcloud_instance" "cvm_user_data" {
321+ instance_name = "tf-test-user-data"
322+ availability_zone = "ap-guangzhou-7"
323+ image_id = data.tencentcloud_images.default.images.0.image_id
324+ vpc_id = tencentcloud_vpc.vpc.id
325+
326+ tags = {
327+ hostname = "tci"
328+ }
329+
330+ lifecycle {
331+ ignore_changes = [instance_type]
332+ }
333+ instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
334+ subnet_id = tencentcloud_subnet.subnet.id
335+ system_disk_type = "CLOUD_PREMIUM"
336+ project_id = 0
337+ user_data = "dGVzdC11cGRhdGU="
338+ }
339+
340+ `
341+
342+ const testAccCvmInstanceResource_UserDataRaw = `
343+
344+ data "tencentcloud_availability_zones" "default" {
345+ }
346+ data "tencentcloud_images" "default" {
347+ image_type = ["PUBLIC_IMAGE"]
348+ image_name_regex = "Final"
349+ }
350+ data "tencentcloud_images" "testing" {
351+ image_type = ["PUBLIC_IMAGE"]
352+ }
353+ data "tencentcloud_instance_types" "default" {
354+ memory_size = 2
355+ exclude_sold_out = true
356+
357+ filter {
358+ name = "instance-family"
359+ values = ["S1","S2","S3","S4","S5"]
360+ }
361+ filter {
362+ name = "zone"
363+ values = ["ap-guangzhou-7"]
364+ }
365+ cpu_core_count = 2
366+ }
367+ resource "tencentcloud_vpc" "vpc" {
368+ name = "cvm-basic-vpc"
369+ cidr_block = "10.0.0.0/16"
370+ }
371+ resource "tencentcloud_subnet" "subnet" {
372+ availability_zone = "ap-guangzhou-7"
373+ vpc_id = tencentcloud_vpc.vpc.id
374+ name = "cvm-basic-subnet"
375+ cidr_block = "10.0.0.0/16"
376+ }
377+ resource "tencentcloud_instance" "cvm_user_data_raw" {
378+ instance_name = "tf-test-user-data-raw"
379+ availability_zone = "ap-guangzhou-7"
380+ image_id = data.tencentcloud_images.default.images.0.image_id
381+ vpc_id = tencentcloud_vpc.vpc.id
382+
383+ tags = {
384+ hostname = "tci"
385+ }
386+
387+ lifecycle {
388+ ignore_changes = [instance_type]
389+ }
390+ instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
391+ subnet_id = tencentcloud_subnet.subnet.id
392+ system_disk_type = "CLOUD_PREMIUM"
393+ project_id = 0
394+ user_data_raw = "test"
395+ }
396+
397+ `
398+ const testAccCvmInstanceResource_UserDataRawUpdate = `
399+
400+ data "tencentcloud_availability_zones" "default" {
401+ }
402+ data "tencentcloud_images" "default" {
403+ image_type = ["PUBLIC_IMAGE"]
404+ image_name_regex = "Final"
405+ }
406+ data "tencentcloud_images" "testing" {
407+ image_type = ["PUBLIC_IMAGE"]
408+ }
409+ data "tencentcloud_instance_types" "default" {
410+ memory_size = 2
411+ exclude_sold_out = true
412+
413+ filter {
414+ name = "instance-family"
415+ values = ["S1","S2","S3","S4","S5"]
416+ }
417+ filter {
418+ name = "zone"
419+ values = ["ap-guangzhou-7"]
420+ }
421+ cpu_core_count = 2
422+ }
423+ resource "tencentcloud_vpc" "vpc" {
424+ name = "cvm-basic-vpc"
425+ cidr_block = "10.0.0.0/16"
426+ }
427+ resource "tencentcloud_subnet" "subnet" {
428+ availability_zone = "ap-guangzhou-7"
429+ vpc_id = tencentcloud_vpc.vpc.id
430+ name = "cvm-basic-subnet"
431+ cidr_block = "10.0.0.0/16"
432+ }
433+ resource "tencentcloud_instance" "cvm_user_data_raw" {
434+ instance_name = "tf-test-user-data-raw"
435+ availability_zone = "ap-guangzhou-7"
436+ image_id = data.tencentcloud_images.default.images.0.image_id
437+ vpc_id = tencentcloud_vpc.vpc.id
438+
439+ tags = {
440+ hostname = "tci"
441+ }
442+
443+ lifecycle {
444+ ignore_changes = [instance_type]
445+ }
446+ instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
447+ subnet_id = tencentcloud_subnet.subnet.id
448+ system_disk_type = "CLOUD_PREMIUM"
449+ project_id = 0
450+ user_data_raw = "test-update"
451+ }
452+
453+ `
454+
166455const testAccCvmInstanceResource_BasicCreate = `
167456
168457data "tencentcloud_availability_zones" "default" {
0 commit comments