Quando definisci le proprietà per la configurazione o i modelli, puoi utilizzare references alle proprietà di altre risorse anziché fornire direttamente i valori. Ad esempio, se vuoi creare un gestore di gruppi di istanze che utilizza un modello di istanza dello stesso deployment, invece di digitare esplicitamente il link completo per il modello di istanza, puoi utilizzare un riferimento con la sintassi $(ref.instance-template.selfLink)
.
Con i riferimenti puoi:
Proprietà di accesso che non sono definite fino alla creazione della risorsa. Ad esempio, quando definisci una macchina virtuale nella tua 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.
Semplifica la lettura delle configurazioni o dei modelli e la risoluzione dei problemi. Ad esempio, se devi configurare più regole di forwarding, devi specificare anche una rete da utilizzare. Anziché fornire un link alla rete per ogni regola di forwarding, puoi creare un riferimento alla proprietà
selfLink
della rete utilizzando la seguente sintassi:$(ref.network-name.selfLink)
Se devi risolvere i problemi di configurazione, il riferimento semplifica l'individuazione della rete utilizzata nella regola di forwarding.
Quando crei un riferimento a una risorsa, viene creata anche una dipendenza tra le risorse. Ad esempio, considera il seguente snippet, dove sandbox-vm
usa
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 del giorno sandbox-vm
, in modo che il riferimento possa essere risolto. Se i riferimenti non si risolvono correttamente, il deployment non va a buon fine.
Puoi utilizzare i riferimenti sia nelle configurazioni che nei modelli.
Prima di iniziare
- Se vuoi utilizzare gli esempi di riga di comando di questa guida, installa lo strumento a riga di comando "gcloud".
- Se vuoi utilizzare gli esempi di API riportati in questa guida, configura l'accesso API.
- Acquisisci familiarità con la creazione di una configurazione.
- Acquisisci familiarità con la creazione di un modello di base.
Riferimenti nei file di configurazione
Dichiara i riferimenti nella tua configurazione nel formato seguente:
$(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 si risolve in selfLink
della risorsa di rete.
Creazione di riferimenti nei modelli
Nei file modello, l'intero riferimento deve essere preceduto da $
e poi essere incluso tra una serie di parentesi:
$(ref.RESOURCE_NAME.PROPERTY)
Puoi combinare i riferimenti con altre caratteristiche, come le proprietà del modello 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.
Di seguito sono riportati alcuni esempi di dichiarazione dei riferimenti nei modelli:
Jinja
Riferimento che include una variabile di ambiente
network: $(ref.{{ env["deployment"] }}-network.selfLink)
Riferimento a un valore in una matrice
subnetwork: $(ref.{{ env["deployment"] }}-vm.networkInterfaces[2].subnetwork)
Riferimento che include una proprietà modello
network: $(ref.{{ properties["network"] }}.selfLink)
Riferimento utilizzando 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 una matrice
'subnetwork': '$(ref.' + context.env['deployment'] + '-vm.networkInterfaces[2].subnetwork)'
Riferimento che include una proprietà modello
'network': '$(ref.' + context.properties['network'] + '.selfLink)'
Riferimento utilizzando 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 impegnarti a eseguirne il deployment.
- Crea un deployment.
- Scopri di più sui modelli.