gcloudgoogle-cloud-compute-enginegoogle-cloud-instance-template

How to create GCP Instance-Template with accessConfig using gcloud command


Hope this is not too incidental so someone can help.

I like to create an instance template using the create command when I run this :
gcloud compute instance-templates create jenkins-slave-instance-template-tmp1 --network-interface=network=default,network-tier=PREMIUM ... .

I get the networkInterfaces in this way (using describe command ) :

networkInterfaces:
  - kind: compute#networkInterface
    name: nic0
    network: 
https://www.googleapis.com/compute/v1/projects/*******/global/networks/default

But when creating using the GCP UI console I get it ( as I actually need it ):

  networkInterfaces:
  - accessConfigs:
    - kind: compute#accessConfig
      name: External NAT
      networkTier: PREMIUM
      type: ONE_TO_ONE_NAT
    kind: compute#networkInterface
    name: nic0
    network: https://www.googleapis.com/compute/v1/projects/*******/global/networks/default

How can I add the accessConfig for the instance-template on creation time ( I can do the same from the UI but the equivalent gcloud compute instance-templates create create it without the accessConfig entry .

Thanks for the your help


Solution

    1. You can create an instance-template in gcloud cli by using the instance-templates create command with default parameters.

       gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
      

    gcloud compute uses the following default values, if you do not provide explicit template configuration/properties.

    If you run gcloud compute instance-templates describe INSTANCE_TEMPLATE_NAME command you will get accessConfigs in network interface parameters.

    1. If you want to provide the template configuration settings explicitly like Machine type, boot disk, Image properties,service account etc.,

    you can specify them through gcloud cli, but if you want accessConfigs parameters then you should omit network-interface parameters (--network-interface=network=default,network-tier=PREMIUM,nic-type=GVNIC) while running instance-template command.

    For example:

    gcloud compute instance-templates create example-template-1 --machine-type=e2-standard-4   --image-family=debian-10  --image-project=debian-cloud --boot-disk-size=250GB
    

    The above command will create the instance-template with mentioned configuration and gives you accessConfigs parameters since you didn’t mention network- interface parameters.

    Refer to the documentation for creating a new instance template.