Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come usare Criteri di Azure per applicare tag alle risorse in un gruppo di risorse gestito di un cluster Azure Red Hat OpenShift. Si creano tre file JSON per creare una definizione di criteri e un'assegnazione di criteri nell'ambito della sottoscrizione. Si distribuisce un cluster che usa i tag dei criteri e si usa un'attività di correzione dei criteri per applicare tag alle risorse del cluster.
Prerequisiti
- Se non si ha un account Azure, creare un account gratuito prima di iniziare.
- Editor di testo come Microsoft Visual Studio Code.
- Interfaccia della riga di comando di Azure installata nel computer per eseguire i comandi in questo articolo. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. È anche possibile usare Azure Cloud Shell in un browser.
- Esaminare i prerequisiti, le autorizzazioni e i requisiti dei provider di risorse nella guida introduttiva: Creare un cluster Azure Red Hat OpenShift 4 perché si crea un cluster più avanti in questo articolo.
Creare file JSON
Usare un editor di testo come Microsoft Visual Studio Code per copiare e incollare il codice seguente e creare tre file JSON nella directory di lavoro corrente. Questi file vengono usati per creare la definizione dei criteri e l'assegnazione dei criteri.
Creare un file di regole
Creare il file rules.json .
{
"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"
}
}
Creare definizioni di parametri
Creare il file param-defs.json .
{
"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"
}
}
}
Creare il file param-values.json .
{
"tag0": {
"value": {
"tag": [
"<your tag key>",
"<your tag value>"
]
}
},
"resourceGroupName": {
"value": "<your cluster's managed resource group name>"
}
}
Questo param-values.json file è l'unico dei tre file da modificare. Nel contenuto specificare i valori per i tag da applicare alle risorse del cluster. Per questo esempio, sostituire i valori seguenti:
-
<your tag key>:demoKey -
<your tag value>:demoResourceGroupTag -
<your cluster's managed resource group name>:demoMRG
Il contenuto del fileparam-values.json mostra solo un valore per il tag0 parametro . Il criterio consente fino a 10 tag. Per impostare più tag, aggiungere valori per i tag1 parametri tramite tag 9. L'applicazione di più di 10 tag alle risorse nel gruppo di risorse gestite non è supportata.
Impostare le variabili di ambiente
Aprire una shell Bash, accedere ad Azure e creare variabili.
Se si usa l'interfaccia della riga di comando di Azure nel computer, dalla sessione Bash accedere alla sottoscrizione di Azure. Per altre informazioni, vedere Eseguire l'autenticazione ad Azure usando l'interfaccia della riga di comando di Azure.
az login
Creare variabili di ambiente usate nei passaggi successivi. È possibile usare i valori forniti o creare valori personalizzati.
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
| Nome variabile | Description |
|---|---|
AZURE_SUBSCRIPTION_ID |
Sottoscrizione di Azure in cui vengono create le risorse. Il comando ottiene l'ID dalla sottoscrizione di Azure a cui si è connessi. |
POLICY_DEFINITION |
Nome della definizione dei criteri per applicare i tag delle risorse. Per questo esempio, demoPolicyDefName. |
CLUSTER |
Nome del cluster Azure Red Hat OpenShift. Per questo esempio, demoCluster. |
MANAGED_RESOURCE_GROUP |
Gruppo di risorse gestite che contiene le risorse del cluster. Per questo esempio, demoMRG. |
POLICY_ASSIGNMENT |
Nome creato aggiungendo i nomi delle variabili POLICY_DEFINITION e CLUSTER. |
LOCATION |
Area in cui viene creata l'identità gestita dell'assegnazione dei criteri. Per questo esempio centralus. Per altre informazioni sull'identità gestita, vedere Configurare l'identità gestita. |
Creare la definizione e l'assegnazione dei criteri
Per creare la definizione dei criteri, eseguire il comando seguente.
az policy definition create \ --name $POLICY_DEFINITION \ --mode All \ --rules rules.json \ --params param-defs.jsonPer creare l'assegnazione dei criteri, eseguire il comando seguente.
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
Creare il cluster
Seguire le istruzioni riportate in Creare un cluster. Nel comando di distribuzione includere az aro createil parametro --cluster-resource-group $MANAGED_RESOURCE_GROUP. Il comando dovrebbe essere simile all'esempio seguente.
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
I criteri non applicano tag alle risorse nel gruppo di risorse del cluster. I tag vengono applicati solo alle risorse nel gruppo di risorse gestite, in questo esempio demoMRG.
Correggere i tag usando Criteri di Azure
È possibile correggere i tag assegnati in precedenza e aggiungere nuovi tag usando un'attività di correzione di Criteri di Azure. Il gruppo di risorse gestite demoMRG e le relative risorse hanno il tag demoKey: demoResourceTag.
Aprire il file param-values.json e modificare i valori dei parametri esistenti e aggiungere nuovi valori di parametro nell'esempio seguente.
{
"tag0": {
"value": {
"tag": [
"demoKeyUpdate",
"demoResourceGroupTagUpdate"
]
}
},
"tag1": {
"value": {
"tag": [
"demoKeyTag1",
"demoResourceGroupTag1"
]
}
},
"resourceGroupName": {
"value": "demoMRG"
}
}
Quando si eseguono i comandi per aggiornare i valori dei parametri ed eseguire l'attività di correzione, i criteri applicano i tag alle risorse nel gruppo di risorse gestite.
Eseguire il comando seguente per aggiornare i valori dei parametri dell'assegnazione dei criteri.
az policy assignment update \ --name $POLICY_ASSIGNMENT \ --params param-values.jsonAttivare l'attività di correzione.
az policy remediation create \ --name demoRemediation \ --resource-group $MANAGED_RESOURCE_GROUP \ --policy-assignment $POLICY_ASSIGNMENTConsentire l'esecuzione dell'attività di correzione e osservare i tag aggiornati nel gruppo di risorse gestito e nelle relative risorse. Un'attività di correzione non rimuove i tag dalle risorse che aggiunge o aggiorna solo i tag.