Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie mithilfe von Azure-Richtlinien Tags auf die Ressourcen in der verwalteten Ressourcengruppe eines Azure Red Hat OpenShift-Clusters anwenden. Sie erstellen drei JSON-Dateien, um eine Richtliniendefinition und Richtlinienzuweisung im Abonnementbereich zu erstellen. Sie stellen einen Cluster bereit, der die Tags der Richtlinie verwendet, und verwenden eine Richtlinienkorrekturaufgabe, um Tags auf Clusterressourcen anzuwenden.
Voraussetzungen
- Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
- Ein Text-Editor wie Microsoft Visual Studio Code.
- Azure CLI auf Ihrem Computer installiert, um die Befehle in diesem Artikel auszuführen. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren. Sie können Azure Cloud Shell auch in einem Browser verwenden.
- Überprüfen Sie die Voraussetzungen, Berechtigungen und Ressourcenanbieteranforderungen in der Schnellstartanleitung: Erstellen Sie einen Azure Red Hat OpenShift 4-Cluster , da Sie später in diesem Artikel einen Cluster erstellen.
Erstellen von JSON-Dateien
Verwenden Sie einen Text-Editor wie Microsoft Visual Studio Code, um den folgenden Code zu kopieren und einzufügen, und erstellen Sie drei JSON-Dateien in Ihrem aktuellen Arbeitsverzeichnis. Diese Dateien werden verwendet, um Ihre Richtliniendefinition und Richtlinienzuweisung zu erstellen.
Regeldatei erstellen
Erstellen Sie die rules.json Datei.
{
"if": {
"anyOf": [
{
"allOf": [
{
"value": "[resourceGroup().name]",
"equals": "[parameters('resourceGroupName')]"
}
]
},
{
"allOf": [
{
"field": "name",
"equals": "[parameters('resourceGroupName')]"
},
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
}
]
}
]
},
"then": {
"details": {
"operations": [
{
"condition": "[not(equals(parameters('tag0')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag0')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag0')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag1')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag1')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag1')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag2')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag2')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag2')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag3')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag3')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag3')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag4')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag4')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag4')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag5')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag5')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag5')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag6')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag6')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag6')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag7')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag7')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag7')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag8')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag8')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag8')['tag'][1]]"
},
{
"condition": "[not(equals(parameters('tag9')['tag'][0], ''))]",
"field": "[concat('tags[', parameters('tag9')['tag'][0], ']')]",
"operation": "addOrReplace",
"value": "[parameters('tag9')['tag'][1]]"
}
],
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/4a9ae827-6dc8-4573-8ac7-8239d42aa03f"
]
},
"effect": "modify"
}
}
Erstellen von Parameterdefinitionen
Erstellen Sie die param-defs.json Datei.
{
"tag0": {
"type": "Object",
"metadata": {
"displayName": "tag0"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag1": {
"type": "Object",
"metadata": {
"displayName": "tag1"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag2": {
"type": "Object",
"metadata": {
"displayName": "tag2"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag3": {
"type": "Object",
"metadata": {
"displayName": "tag3"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag4": {
"type": "Object",
"metadata": {
"displayName": "tag4"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag5": {
"type": "Object",
"metadata": {
"displayName": "tag5"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag6": {
"type": "Object",
"metadata": {
"displayName": "tag6"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag7": {
"type": "Object",
"metadata": {
"displayName": "tag7"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag8": {
"type": "Object",
"metadata": {
"displayName": "tag8"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"tag9": {
"type": "Object",
"metadata": {
"displayName": "tag9"
},
"defaultValue": {
"tag": [
"",
""
]
},
"schema": {
"type": "object",
"properties": {
"tag": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
}
}
}
},
"resourceGroupName": {
"type": "String",
"metadata": {
"displayName": "Resource Group Name",
"description": "The name of the resource group whose resources you'd like to require the tag on"
}
}
}
Erstellen Sie die param-values.json Datei.
{
"tag0": {
"value": {
"tag": [
"<your tag key>",
"<your tag value>"
]
}
},
"resourceGroupName": {
"value": "<your cluster's managed resource group name>"
}
}
Diese param-values.json Datei ist die einzige der drei Dateien, die geändert werden müssen. Geben Sie im Inhalt die Werte für die Tags an, die auf die Ressourcen des Clusters angewendet werden sollen. Ersetzen Sie in diesem Beispiel die folgenden Werte:
-
<your tag key>:demoKey -
<your tag value>:demoResourceGroupTag -
<your cluster's managed resource group name>:demoMRG
Der param-values.json Dateiinhalt zeigt nur einen Wert für den tag0 Parameter an. Die Richtlinie gestattet bis zu 10 Tags. Wenn Sie mehrere Tags festlegen möchten, fügen Sie Werte für Parameter tag1 über tag 9. Das Anwenden von mehr als 10 Tags auf Ressourcen in der verwalteten Ressourcengruppe wird nicht unterstützt.
Festlegen von Umgebungsvariablen
Öffnen Sie eine Bash-Shell, melden Sie sich bei Azure an, und erstellen Sie Variablen.
Wenn Sie Azure CLI auf Ihrem Computer verwenden, melden Sie sich über Ihre Bash-Sitzung bei Ihrem Azure-Abonnement an. Weitere Informationen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
az login
Erstellen Von Umgebungsvariablen, die in späteren Schritten verwendet werden. Sie können die bereitgestellten Werte verwenden oder eigene Werte erstellen.
export AZURE_SUBSCRIPTION_ID=$(az account list --query [].id --output tsv)
export POLICY_DEFINITION=demoPolicyDefName
export CLUSTER=demoCluster
export MANAGED_RESOURCE_GROUP=demoMRG
export POLICY_ASSIGNMENT="${POLICY_DEFINITION}-${CLUSTER}"
export LOCATION=centralus
| Variablenname | Description |
|---|---|
AZURE_SUBSCRIPTION_ID |
Das Azure-Abonnement, in dem Ressourcen erstellt werden. Der Befehl ruft die ID aus dem Azure-Abonnement ab, bei dem Sie angemeldet sind. |
POLICY_DEFINITION |
Der Name Ihrer Richtliniendefinition zum Anwenden von Ressourcentags. In diesem Beispiel demoPolicyDefName. |
CLUSTER |
Der Name Ihres Azure Red Hat OpenShift-Clusters. In diesem Beispiel demoCluster. |
MANAGED_RESOURCE_GROUP |
Die Verwaltete Ressourcengruppe, die die Ressourcen Ihres Clusters enthält. In diesem Beispiel demoMRG. |
POLICY_ASSIGNMENT |
Name, der durch das Verbinden der Variablennamen POLICY_DEFINITION und CLUSTER erstellt wurde. |
LOCATION |
Region, in der die verwaltete Identität der Richtlinienzuweisung erstellt wird. In diesem Beispiel centralus. Weitere Informationen zur verwalteten Identität finden Sie unter Konfigurieren der verwalteten Identität. |
Erstellen der Richtliniendefinition und -zuweisung
Führen Sie zum Erstellen der Richtliniendefinition den folgenden Befehl aus.
az policy definition create \ --name $POLICY_DEFINITION \ --mode All \ --rules rules.json \ --params param-defs.jsonFühren Sie den folgenden Befehl aus, um die Richtlinienzuweisung zu erstellen.
az policy assignment create \ --name $POLICY_ASSIGNMENT \ --policy $POLICY_DEFINITION \ --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}" \ --location $LOCATION \ --mi-system-assigned \ --role "Tag Contributor" \ --identity-scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}" \ --params param-values.json
Erstellen Sie den Cluster.
Befolgen Sie die Anweisungen zum Erstellen eines Clusters. Schließen Sie in Ihrem Bereitstellungsbefehl az aro createden Parameter --cluster-resource-group $MANAGED_RESOURCE_GROUPein. Der Befehl sollte wie im folgenden Beispiel aussehen.
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet $VIRTUALNETWORK \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--version <x.y.z> \
--cluster-resource-group $MANAGED_RESOURCE_GROUP
Die Richtlinie wendet keine Tags auf Ressourcen in der Clusterressourcengruppe an. Tags werden nur auf die Ressourcen in der verwalteten Ressourcengruppe angewendet, in diesem Beispiel demoMRG.
Korrigieren von Tags mit Azure Policy
Sie können mithilfe eines Azure Policy-Wartungstasks zuvor zugewiesene Tags korrigieren und neue Tags hinzufügen. Die demoMRG verwaltete Ressourcengruppe und die zugehörigen Ressourcen weisen das Tag demoKey: demoResourceTagauf.
Öffnen Sie die Datei param-values.json , und ändern Sie vorhandene Parameterwerte, und fügen Sie im folgenden Beispiel neue Parameterwerte hinzu.
{
"tag0": {
"value": {
"tag": [
"demoKeyUpdate",
"demoResourceGroupTagUpdate"
]
}
},
"tag1": {
"value": {
"tag": [
"demoKeyTag1",
"demoResourceGroupTag1"
]
}
},
"resourceGroupName": {
"value": "demoMRG"
}
}
Wenn Sie die Befehle ausführen, um die Parameterwerte zu aktualisieren und den Wartungsvorgang auszuführen, wendet die Richtlinie die Tags auf Ressourcen in der Verwalteten Ressourcengruppe an.
Führen Sie den folgenden Befehl aus, um die Parameterwerte der Richtlinienzuweisung zu aktualisieren.
az policy assignment update \ --name $POLICY_ASSIGNMENT \ --params param-values.jsonStarten Sie die Behebungsaufgabe.
az policy remediation create \ --name demoRemediation \ --resource-group $MANAGED_RESOURCE_GROUP \ --policy-assignment $POLICY_ASSIGNMENTErmöglichen Sie die Ausführung des Wartungstasks, und beobachten Sie die Tags, die in der verwalteten Ressourcengruppe und den zugehörigen Ressourcen aktualisiert werden. Eine Remedierungsaufgabe entfernt keine Tags aus Ressourcen, sondern fügt nur Tags hinzu oder aktualisiert sie.