crossplane / terrajet

Generate Crossplane Providers from any Terraform Provider
https://crossplane.io
Apache License 2.0
290 stars 38 forks source link

generated alicloud instance not correct #268

Closed bretagne-peiqi closed 2 years ago

bretagne-peiqi commented 2 years ago

What happened?

terraform version 1.1.5; aliyun/alicloud-provider 1.155.0, I genenrated aliyun-provider for crossplane. It seems vpc can be created correctly, But the terraform config file is wrong for ECS and ManagedK8s instances.

ecs config file:

apiVersion: instance.alicloud.jet.crossplane.io/v1alpha1
kind: Instance
metadata:
  name: pshi
spec:
  forProvider:
    allocatePublicIp: false
    vswitchId: vsw-uf6svfuk7dc11xn7bk1lb
    instanceType: ecs.sn1ne.xlarge
    imageId: m-uf69d7x8qidguc5slllq
    securityGroups:
      - sg-uf6321mosdrkcnwf50e2
    availabilityZone: cn-shanghai
  writeConnectionSecretToRef:
    namespace: crossplane-system
    name: instance-creds
  providerConfigRef:
    name: default-ecs
  deletionPolicy: Delete

managedk8s config file:

apiVersion: managedk8s.alicloud.jet.crossplane.io/v1alpha1
kind: ManagedKubernetes
metadata:
  name: pshi-mk8s
  labels:
    example: "true"
spec:
  forProvider:
    availabilityZone: cn-shanghai
    workerInstanceTypes:
      -  ecs.sn1ne.xlarge
    workerDataDiskSize: 200
    workerNumber: 1
    workerVswitchIds:
      - vsw-uf6svfuk7dc11xn7bk1lb
    securityGroupId: sg-uf66q19zz1a96oufudjm
    imageId: m-uf69d7x8qidguc5slllq
    newNatGateway: true
    nodeCidrMask: 24
    serviceCidr: 172.21.0.0/20
    podCidr: 172.20.0.0/16
    installCloudMonitor: false
    enableSsh: false
  writeConnectionSecretToRef:
    namespace: crossplane-system
    name: instance-creds
  providerConfigRef:
    name: default-ecs
  deletionPolicy: Delete

main.ft.json generated: ecs:

 {"provider":{"alicloud":null},"resource":{"alicloud_instance":{"pshi-1-ecs":{"allocate_public_ip":false,"availability_zone":"cn-shanghai","image_id":"m-uf69d7x8qidguc5slllq","instance_name":"peiqi","instance_type":"ecs.sn1ne.xlarge","lifecycle":{"prevent_destroy":true},"security_groups":["sg-uf6321mosdrkcnwf50e2"],"vswitch_id":"vsw-uf6svfuk7dc11xn7bk1lb"}}},"terraform":{"required_providers":{"alicloud":{"source":"aliyun/alicloud","version":"1.155.0"}}}}

managedk8s

{"provider":{"alicloud":null},"resource":{"alicloud_cs_managed_kubernetes":{"pshi-mk8s":{"availability_zone":"cn-shanghai","enable_ssh":false,"image_id":"m-uf69d7x8qidguc5slllq","install_cloud_monitor":false,"lifecycle":{"prevent_destroy":true},"name":"pshi-mk8s","new_nat_gateway":true,"node_cidr_mask":24,"pod_cidr":"172.20.0.0/16","security_group_id":"sg-uf66q19zz1a96oufudjm","service_cidr":"172.21.0.0/20","worker_data_disk_size":200,"worker_instance_types":["ecs.sn1ne.xlarge"],"worker_number":1,"worker_vswitch_ids":["vsw-uf6svfuk7dc11xn7bk1lb"]}}},"terraform":{"required_providers":{"alicloud":{"source":"aliyun/alicloud","version":"1.155.0"}}}}

logs:

for ecs:

  DEBUG   provider-jet-alicloud   Cannot observe external resource        {"controller": "managed/instance.alicloud.jet.crossplane.io/v1alpha1, kind=instance", "request": "/pshi", "uid": "1c260b41-1aff-43b5-b380-28c927ff275a", "version": "3617178889", "external-name": "pshi", "error": "cannot run refresh: refresh failed: Extraneous JSON object property: No argument or block type is named \"name\".: File name: main.tf.json", "errorVerbose": "refresh failed: Extraneous JSON object property: No argument or block type is named \"name\".: File name: main.tf.json\ncannot run refresh\ngithub.com/crossplane/terrajet/pkg/controller.(*external).Observe\n\t/root/provider-jet-alibaba/vendor/github.com/crossplane/terrajet/pkg/controller/external.go:125\ngithub.com/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\t/root/provider-jet-alibaba/vendor/github.com/crossplane/crossplane-runtime/pkg/reconciler/managed/reconciler.go:681\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/root/provider-jet-alibaba/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:298\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/root/provider-jet-alibaba/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:253\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/root/provider-jet-alibaba/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:214\nruntime.goexit\n\t/usr/lib/golang/src/runtime/asm_amd64.s:1371"}
2022-03-24T10:19:26.074+0800    DEBUG   controller-runtime.manager.events       Warning {"object": {"kind":"Instance","name":"pshi","uid":"1c260b41-1aff-43b5-b380-28c927ff275a","apiVersion":"instance.alicloud.jet.crossplane.io/v1alpha1","resourceVersion":"3617178889"}, "reason": "CannotObserveExternalResource", "message": **"**### **cannot run refresh: refresh failed: Extraneous JSON object property: No argument or block type is named \"name\".: File name: main.tf.json"}******

How can we reproduce it?

generated the crossplane aliyun provider using terrajet and terraform, terraform provider version specified above. generate resources as guide mentioned. apply it.

my run cmd: ./provider --terraform-provider-source=aliyun/alicloud --terraform-provider-version=1.155.0 --terraform-version=1.1.5 --debug

bretagne-peiqi commented 2 years ago

the logs indicate the generated main.tf.json has unrecognisable arguments "name" ??? but I learnt from terraform config guide, it should be correct..

bretagne-peiqi commented 2 years ago

managek8s resources logs

All workers finished {"reconciler group": "securitygroup.alicloud.jet.crossplane.io", "reconciler kind": "Group"} 2022-03-24T13:11:26.733+0800 DEBUG provider-jet-alicloud refresh ended {"workspace": "/tmp/fa825263-48bb-4f02-948d-25f39b139c1b", "out": "{\"@level\":\"info\",\"@message\":\"Terraform 1.1.5\",\"@module\":\"terraform.ui\",\"@timestamp\":\"2022-03-24T13:11:24.927839+08:00\",\"terraform\":\"1.1.5\",\"type\":\"version\",\"ui\":\"1.0\"}\n{\"@level\":\"info\",\"@message\":\"\nInterrupt received.\nPlease wait for Terraform to exit or data loss may occur.\nGracefully shutting down...\n\",\"@module\":\"terraform.ui\",\"@timestamp\":\"2022-03-24T13:11:25.668341+08:00\",\"type\":\"log\"}\n{\"@level\":\"info\",\"@message\":\"Plan: 0 to add, 0 to change, 0 to destroy.\",\"@module\":\"terraform.ui\",\"@timestamp\":\"2022-03-24T13:11:26.722789+08:00\",\"changes\":{\"add\":0,\"change\":0,\"remove\":0,\"operation\":\"plan\"},\"type\":\"change_summary\"}\n{\"@level\":\"info\",\"@message\":\"Stopping operation...\",\"@module\":\"terraform.ui\",\"@timestamp\":\"2022-03-24T13:11:26.722881+08:00\",\"type\":\"log\"}\n{\"@level\":\"info\",\"@message\":\"Apply complete! Resources: 0 added, 0 changed, 0 destroyed.\",\"@module\":\"terraform.ui\",\"@timestamp\":\"2022-03-24T13:11:26.726818+08:00\",\"changes\":{\"add\":0,\"change\":0,\"remove\":0,\"operation\":\"apply\"},\"type\":\"change_summary\"}\n{\"@level\":\"info\",\"@message\":\"Outputs: 0\",\"@module\":\"terraform.ui\",\"@timestamp\":\"2022-03-24T13:11:26.726860+08:00\",\"outputs\":{},\"type\":\"outputs\"}\n"} 2022-03-24T13:11:26.734+0800 DEBUG provider-jet-alicloud Cannot publish connection details {"controller": "managed/managedk8s.alicloud.jet.crossplane.io/v1alpha1, kind=managedkubernetes", "request": "/pshi-mk8s", "uid": "fa825263-48bb-4f02-948d-25f39b139c1b", "version": "3618364189", "external-name": "pshi-mk8s", "error": "cannot create or update connection secret: refusing to modify uncontrolled secret of type \"Opaque\""}

turkenh commented 2 years ago

Seems like a missing configuration, not a bug. See for more details: https://crossplane.slack.com/archives/CEG3T90A1/p1648209963313099?thread_ts=1648208172.549679&cid=CEG3T90A1