I tag aggiunti ai progetti e ai modelli cloud fungono da tag di vincolo quando vengono utilizzati per abbinare i tag di funzionalità alle risorse dell'infrastruttura, ai profili e alle zone cloud. Nel caso dei modelli cloud, Cloud Assembly utilizza questa funzionalità corrispondente per allocare risorse per le distribuzioni.

Cloud Assembly consente di utilizzare i tag di vincolo in due modi principali. Il primo quando si configurano progetti e immagini. È possibile utilizzare i tag come vincoli per associare le risorse al progetto o all'immagine. Il secondo è in modelli cloud in cui i tag specificati come vincoli vengono utilizzati per selezionare le risorse per le distribuzioni. I vincoli applicati in entrambi questi modi vengono uniti nei modelli cloud per creare un set di requisiti di distribuzione che definiscono le risorse disponibili per una distribuzione.

Come funzionano i tag di vincolo nei progetti

Quando si configurano le risorse di Cloud Assembly, gli amministratori del cloud possono applicare i tag di vincolo nei progetti. In questo modo, gli amministratori possono applicare vincoli di governance direttamente a livello del progetto. Tutti i vincoli aggiunti a questo livello vengono applicati a ogni modello cloud richiesto per il progetto applicabile e questi tag di vincolo hanno la precedenza su altri tag.

Se i tag di vincolo nel progetto sono in conflitto con i tag di vincolo nel modello cloud, i tag del progetto hanno la precedenza, consentendo così all'amministratore del cloud di imporre le regole di governance. Ad esempio, se gli amministratori del cloud creano un tag location:london nel progetto, ma uno sviluppatore posiziona un tag location:boston nel modello cloud, il primo avrà la precedenza e la risorsa verrà distribuita nell'infrastruttura contenente il tag location:london.

Nei progetti è possibile applicare fino a tre vincoli. I vincoli del progetto possono essere permanenti o temporanei. Per impostazione predefinita sono permanenti. I vincoli permamenti consentono di imporre rigidamente le restrizioni della distribuzione. Se uno o più vincoli permanenti non sono soddisfatti, la distribuzione non riesce. I vincoli temporanei offrono un metodo per esprimere le preferenze che verranno selezionate se disponibili, ma la distribuzione riesce anche se tali vincoli non vengono soddisfatti.

Come funzionano i tag di vincolo nei modelli cloud

Nei modelli cloud è possibile aggiungere tag di vincolo alle risorse come codice YAML in modo che corrispondano ai tag di funzionalità appropriati creati dall'amministratore del cloud in risorse e zone cloud, nonché nei profili di rete e di storage. Sono inoltre disponibili altre opzioni più complesse per l'implementazione dei tag di vincolo. Ad esempio, è possibile utilizzare una variabile per popolare uno o più tag in una richiesta. In questo modo è possibile specificare uno o più tag al momento della richiesta.

Creare tag di vincolo utilizzando l'etichetta tag sotto un'intestazione di vincolo nel codice YAML del modello cloud. I tag di vincolo dei progetti vengono aggiunti ai tag di vincolo creati nei modelli cloud.

Cloud Assembly supporta una semplice formattazione stringa per semplificare l'uso dei vincoli nei file YAML:

[!]tag_key[:tag_value][:hard|:soft]

Per impostazione predefinita, Cloud Assembly crea un vincolo positivo con imposizione permanente. Il valore del tag è facoltativo, ma consigliato, come nel resto dell'applicazione.

Il seguente esempio di WordPress con MySQL mostra i tag di vincolo YAML che specificano le informazioni sulla posizione delle risorse di elaborazione.

name: "wordPressWithMySql"
components:
  mysql:
    type: "Compute"
    data:
      name: "mysql"
      # ... skipped lines ...
  wordpress:
    type: "Compute"
    data:
      name: "wordpress"
      instanceType: small
      imageType: "ubuntu-server-1604"
      constraints:
        - tag: "!location:eu:hard"
        - tag: "location:us:soft"
        - tag: "!pci"
      # ... skipped lines ...

Per ulteriori informazioni sull'utilizzo dei modelli cloud, vedere Parte 3: progettazione e distribuzione del modello di Cloud Assembly di esempio.

Come funzionano vincoli permanenti e temporanei in progetti e modelli cloud

I vincoli dei progetti e dei modelli cloud possono essere permanenti o temporanei. Il frammento di codice precedente mostra esempi di vincoli permanenti e temporanei. Per impostazione predefinita, tutti i vincoli sono permanenti. I vincoli permamenti consentono di imporre rigidamente le restrizioni della distribuzione. Se uno o più vincoli permanenti non sono soddisfatti, la distribuzione non riesce. I vincoli temporanei esprimono le preferenze che vengono applicate se disponibili, ma non causano la mancata riuscita di una distribuzione se non vengono soddisfatti.

Se in un tipo di risorsa specifico è presente una serie di vincoli permanenti e temporanei, i vincoli temporanei possono essere utilizzati anche come mezzi risolutivi. Ovvero, se più risorse soddisfano un vincolo permanente, i vincoli temporanei vengono utilizzati per selezionare la risorsa effettivamente utilizzata nella distribuzione.

Ad esempio, è possibile specificare fino a tre vincoli in un progetto in qualsiasi combinazione di elementi di rete, storage ed estendibilità. È inoltre possibile selezionare se ciascun vincolo è permanente o temporaneo. Si supponga di creare un vincolo di storage permanente con un tag location:boston. Se nessuno storage nel progetto soddisfa questo vincolo, qualsiasi distribuzione correlata non riesce.