Quando definisci le proprietà per la configurazione o i modelli, puoi
utilizzare 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 modello di istanza dello stesso deployment, anziché 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:
Accedi alle proprietà che non sono definite finché non viene creata la 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 ottiene l'indirizzo IP esterno quando è disponibile.
Rendi più facili da leggere e risolvere i problemi relativi a configurazioni o modelli. Ad esempio, se devi configurare più regole di inoltro, devi anche specificare una rete da utilizzare. Invece di 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'identificazione della rete utilizzata nellaregola di forwardingo.
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 uno dei riferimenti
non viene risolto 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 in questa guida, installa lo strumento a riga di comando`gcloud`.
- Se vuoi utilizzare gli esempi di API 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.
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 modello, l'intero riferimento deve essere preceduto da $
e poi
contenuto all'interno di una serie di 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.
Ecco 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 tramite 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 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 eseguire il deployment.
- Creare un deployment.
- Scopri di più sui modelli.