@@ -116,6 +116,69 @@ func TestAccTencentCloudInstanceResourceBasic(t *testing.T) {
116
116
},
117
117
})
118
118
}
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
+ }
119
182
120
183
func testAccCheckCvmInstanceExists (n string ) resource.TestCheckFunc {
121
184
return func (s * terraform.State ) error {
@@ -163,6 +226,232 @@ func testAccCheckCvmInstanceDestroy(s *terraform.State) error {
163
226
return nil
164
227
}
165
228
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
+
166
455
const testAccCvmInstanceResource_BasicCreate = `
167
456
168
457
data "tencentcloud_availability_zones" "default" {
0 commit comments