Quando definisci le proprietà della configurazione o dei modelli, puoi:
Utilizzare i riferimenti alle proprietà di altre risorse anziché direttamente
che forniscono valori. Ad esempio, se vuoi creare un gestore di gruppi di istanze
che utilizza un modello di istanza dello stesso deployment, anziché utilizzare
digitando il link completo per il modello di istanza, puoi utilizzare un riferimento con
sintassi $(ref.instance-template.selfLink)
.
Con i riferimenti puoi:
Accedi a proprietà che non sono definite fino alla creazione della risorsa. Ad esempio, quando definisci una macchina virtuale nella configurazione, non ne conosci ancora l'indirizzo IP. Tuttavia, puoi sempre utilizzare un riferimento all'IP . Quando esegui il deployment della configurazione, la VM viene creata prima Deployment Manager ottiene 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. Invece di fornire un link alla rete per ogni regola di inoltro, 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 ti consente per capire quale rete viene utilizzata nella regola di forwarding.
Quando crei un riferimento a una risorsa, crei anche una dipendenza tra
Google Cloud. Ad esempio, considera il seguente snippet, dove 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 a riga di comando presenti 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.
- Impara a conoscere creazione di un modello di base.
Creazione di riferimenti nei file di configurazione
Dichiara i riferimenti nella tua 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
e le istanze di rete e il riferimento si risolve 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 variabili di ambiente. Per assicurarti che Deployment Manager analizzi riferimento, è importante ricordare di conservare l'intero 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à di modello
'network': '$(ref.' + context.properties['network'] + '.selfLink)'
Riferimento tramite l'uso di 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.