プロジェクトおよびクラウド テンプレートに追加されたタグは、インフラストラクチャ リソース、プロファイル、およびクラウド ゾーンの機能タグを照合するために使用される制約タグとして機能します。クラウド テンプレートの場合、Cloud Assembly は、この照合機能を使用して、展開にリソースを割り当てます。

Cloud Assembly では、2 つの主要な方法で制約タグを使用できます。1 つ目の方法は、プロジェクトとイメージを構成する場合に使用します。タグを制約として使用することで、リソースをプロジェクトまたはイメージに関連付けることができます。2 つ目の方法は、制約として指定されたタグを使用して展開用のリソースを選択する場合に、クラウド テンプレート内で使用します。いずれの方法でも、適用される制約はクラウド テンプレートでマージされ、展開で使用可能なリソースを定義する一連の展開要件を形成します。

プロジェクトでの制約タグの仕組み

Cloud Assembly リソースを構成する場合、クラウド管理者はプロジェクトに制約タグを適用できます。このように、管理者はプロジェクト レベルで直接ガバナンスの制約を適用できます。このレベルで追加されたすべての制約は、該当するプロジェクトに対して申請されたすべてのクラウド テンプレートに適用され、これらの制約タグは他のタグよりも優先されます。

プロジェクトの制約タグがクラウド テンプレートの制約タグと競合する場合には、プロジェクトのタグが優先されるため、クラウド管理者はガバナンス ルールを適用できます。たとえば、クラウド管理者がプロジェクトに location:london タグを作成し、一方で開発者がクラウド テンプレートに location:boston タグを配置した場合、前者が優先されるため、リソースは location:london タグを含むインフラストラクチャに展開されます。

プロジェクトには、最大 3 つの制約を適用できます。プロジェクト制約には、強い制約と弱い制約があります。デフォルトでは、強い制約になっています。強い制約を使用すると、展開の制限を厳格に適用できます。満たされない強い制約が 1 つ以上ある場合、展開は失敗します。弱い制約は、環境設定であり、適用可能であれば選択されます。弱い制約が満たされなくても、展開が失敗することはありません。

クラウド テンプレートでの制約タグの仕組み

クラウド テンプレートでは、クラウド管理者がリソース、クラウド ゾーン、ストレージ プロファイル、およびネットワーク プロファイルに作成した適切な機能タグに一致するように、制約タグを YAML コードとしてリソースに追加します。その他にも、制約タグを実装するための複雑なオプションがあります。たとえば、申請に 1 つ以上の タグをポピュレートする変数を使用できます。これにより、申請時に 1 つ以上のタグを指定できます。

制約タグを作成するには、クラウド テンプレート YAML コードの制約見出しの下の tag ラベルを使用します。クラウド テンプレートで作成した制約タグに、プロジェクトの制約タグが追加されます。

Cloud Assembly は、YAML ファイルで制約を簡単に使用できるように、単純な文字列形式をサポートしています。

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

デフォルトでは、Cloud Assembly は強い正の制約を作成します。アプリケーションの他の部分と同様に、タグ値はオプションですが、設定することをお勧めします。

次の「WordPress with MySQL」の例では、コンピューティング リソースの位置情報を表す YAML 制約タグを示しています。

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 ...

クラウド テンプレートの操作方法の詳細については、パート 3:サンプル Cloud Assembly テンプレートの設計と展開を参照してください。

プロジェクトおよびクラウド テンプレートでの強い制約および弱い制約の仕組み

プロジェクトとクラウド テンプレートのどちらでも、制約を強い制約にも弱い制約にもすることができます。上記のコード スニペットは、強い制約の例でもあり、弱い制約の例でもあります。デフォルトでは、すべての制約が強い制約になります。強い制約を使用すると、展開の制限を厳格に適用できます。満たされない強い制約が 1 つ以上ある場合、展開は失敗します。弱い制約は環境設定であり、使用可能な場合に適用されます。弱い制約が満たされなくても、展開が失敗することはありません。

特定のリソース タイプに対して一連の強い制約および弱い制約がある場合、弱い制約はタイ ブレーカとしても機能します。つまり、複数のリソースが強い制約を満たしている場合は、弱い制約を使用して、展開で使用する実際のリソースを選択します。

たとえば、ネットワーク、ストレージ、および拡張性の各項目を任意に組み合わせて、プロジェクトに対して最大 3 つの制約を指定できます。また、各制約が強いか弱いかを選択できます。たとえば、location:boston のタグで強いストレージ制約を作成するとします。プロジェクト内のストレージがこの制約に一致しない場合、関連する展開は失敗します。