Quando definisci le proprietà per la configurazione o i modelli, puoi utilizzare i riferimenti alle proprietà di altre risorse anziché fornire direttamente i valori. Ad esempio, se vuoi creare un gestore di gruppi di istanze che utilizza un template di istanza dello stesso deployment, anziché digitare esplicitamente il link completo per il template di istanza, puoi utilizzare un riferimento con la sintassi $(ref.instance-template.selfLink).
Con i riferimenti puoi:
Accedere alle proprietà che non vengono definite fino alla creazione della risorsa. Ad esempio, quando definisci una macchina virtuale nella configurazione, non conosci ancora il suo indirizzo IP. Tuttavia, puoi comunque utilizzare un riferimento all'indirizzo IP. Quando esegui il deployment della configurazione, viene creata prima la VM e Deployment Manager recupera l'indirizzo IP esterno quando è disponibile.
Rendere le configurazioni o i modelli più facili da leggere e risolvere. Ad esempio, se devi configurare più regole di forwarding, devi anche specificare una rete da utilizzare. Anziché fornire un link alla rete per ogni regola di forwarding, puoi creare un riferimento alla proprietà
selfLinkdella rete utilizzando la seguente sintassi:$(ref.network-name.selfLink)Se devi risolvere i problemi della configurazione, il riferimento semplifica l'individuazione della rete utilizzata nella regola di forwarding.
Quando crei un riferimento a una risorsa, crei anche una dipendenza tra le risorse. Ad esempio, considera il seguente snippet, in cui sandbox-vm utilizza un riferimento a network-a:
resources:
- name: sandbox-vm
type: compute.v1.instance
properties:
network: $(ref.network-a.selfLink)
...
...
- name: network-a
type: compute.v1.network
properties:
...
Quando esegui il deployment di questa configurazione, Deployment Manager crea network-a prima di sandbox-vm, in modo che il riferimento possa essere risolto. Se alcuni riferimenti non vengono risolti correttamente, il deployment non riesce.
Puoi utilizzare i riferimenti sia nelle configurazioni sia nei modelli.
Prima di iniziare
- Se vuoi utilizzare gli esempi di riga di comando in questa guida, installa lo strumento a riga di comando `gcloud`.
- Se vuoi utilizzare gli esempi di API in questa guida, configura l'accesso alle API.
- Acquisisci familiarità con la creazione di una configurazione.
- Acquisisci familiarità con la creazione di un modello di base.
Creare riferimenti nei file di configurazione
Dichiara i riferimenti nella configurazione utilizzando il seguente formato:
$(ref.RESOURCE_NAME.PROPERTY)
L'esempio seguente crea una rete, quindi crea due istanze che utilizzano riferimenti alla rete appena creata. In questo esempio, il riferimento è:
$(ref.a-new-network.selfLink)
Quando esegui il deployment di questa configurazione, la rete viene creata prima delle due istanze e il riferimento viene risolto in selfLink della risorsa di rete.
Creare riferimenti nei modelli
Nei file dei modelli, l'intero riferimento deve essere preceduto da un simbolo $ e racchiuso tra parentesi:
$(ref.RESOURCE_NAME.PROPERTY)
Puoi combinare i riferimenti con altre funzionalità come le proprietà dei modelli e le variabili di ambiente. Per assicurarti che Deployment Manager analizzi correttamente il riferimento, è importante ricordare di mantenere l'intera stringa di riferimento tra parentesi.
Se devi recuperare il valore di un riferimento dopo aver creato o aggiornato un deployment, valuta la possibilità di esporre il valore come output e di accedervi dopo l'operazione di creazione o aggiornamento.Di seguito sono riportati alcuni esempi di dichiarazione di riferimenti nei modelli:
Jinja
Riferimento che include una variabile di ambiente
network: $(ref.{{ env["deployment"] }}-network.selfLink)Riferimento a un valore in un array
subnetwork: $(ref.{{ env["deployment"] }}-vm.networkInterfaces[2].subnetwork)Riferimento che include una proprietà del modello
network: $(ref.{{ properties["network"] }}.selfLink)Riferimento che utilizza un parametro Jinja
network: $(ref.{{ NETWORK_NAME }}.selfLink)Riferimento negli output
outputs: - name: UrlToService value: http://$(ref.{{ env["deployment"] }}-network.networkInterfaces[0].accessConfigs[0].natIp):8080/
Python
Riferimento che include una variabile di ambiente
'network': '$(ref.' + context.env['deployment'] + '-network.selfLink)'Riferimento a un valore in un array
'subnetwork': '$(ref.' + context.env['deployment'] + '-vm.networkInterfaces[2].subnetwork)'Riferimento che include una proprietà del modello
'network': '$(ref.' + context.properties['network'] + '.selfLink)'Riferimento che utilizza un parametro Python
'value': '$(ref.' + base_name + '.networkInterfaces[0].networkIP)'Riferimento negli output
outputs = [{'name': 'UrlToService', 'value': '$(ref.' + context.env['deployment'] + '-network.networkInterfaces[0].accessConfigs[0].natIP):8080'}]
Passaggi successivi
- Visualizza l'anteprima della configurazione prima di eseguirne il commit per il deployment.
- Creazione di un deployment.
- Scopri di più informazioni sui modelli.