Quando definisci le proprietà per la configurazione o i modelli, puoi utilizzare riferenze 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é la risorsa non viene creata. Ad esempio, quando definisci una macchina virtuale nella configurazione, non ne conosci ancora l'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 e la risoluzione dei problemi delle configurazioni o dei 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 consente di identificare più facilmente la rete utilizzata nella regola di forwarding.
Quando crei un riferimento a una risorsa, crei anche una dipendenza tra le risorse. Ad esempio, considera lo snippet seguente, 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 i riferimenti non vengono risolti correttamente, il deployment non va a buon fine.
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 API.
- Acquisisci familiarità con la creazione di una configurazione.
- Acquisisci familiarità con la creazione di un modello di base.
Fare riferimenti nei file di configurazione
Dichiara i riferimenti nella configurazione utilizzando il seguente formato:
$(ref.RESOURCE_NAME.PROPERTY)
L'esempio seguente crea una rete e poi due istanza che utilizzano i 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 istanza e il riferimento viene risolto in selfLink
della risorsa di rete.
Fare riferimenti nei modelli
Nei file modello, l'intero riferimento deve essere preceduto da $
e poi essere incluso tra parentesi:
$(ref.RESOURCE_NAME.PROPERTY)
Puoi combinare i riferimenti con altre funzionalità, 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.
Ecco 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 un array
subnetwork: $(ref.{{ env["deployment"] }}-vm.networkInterfaces[2].subnetwork)
Riferimento che include una proprietà modello
network: $(ref.{{ properties["network"] }}.selfLink)
Riferimento mediante un parametro Jinja
network: $(ref.{{ NETWORK_NAME }}.selfLink)
Riferimento in outputs
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à modello
'network': '$(ref.' + context.properties['network'] + '.selfLink)'
Riferimento mediante un parametro Python
'value': '$(ref.' + base_name + '.networkInterfaces[0].networkIP)'
Riferimento in outputs
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.