Arbeiten mit Agentenrichtlinien

Agentenrichtlinien (Zuweisung) teilen Schematics mit, welcher Agent für die Ausführung von Arbeitsbereichs-und Aktionsjobs in einer bestimmten Netzzone verwendet werden soll. Jedem Agenten ist mindestens eine Richtlinie zugeordnet, um den Arbeitsbereich und die Aktionsjobs anzugeben, die auf dem Agenten ausgeführt werden. Beispielsweise können Agenten in vorhanden sein und Jobs in den folgenden isolierten Zonen ausgeführt werden:

  • Cloudregionen (region-1, region-2, region-3)
  • VPC-Zonen für die Anwendungsschicht, Datenebene, Managementebene
  • Cloud-Anbieter oder On-Premises
  • Abteilungsbereiche in Ihrer Organisation wie HR, Finance, Manufacturing

Einem Arbeitsbereich oder einer Aktion kann nur eine Richtlinie zugeordnet werden. Die Richtlinienerstellung schlägt fehl, wenn eine Richtlinie vorhanden ist, die auf dieselben Arbeitsbereiche oder Aktionen abzielt.

Sie können einen agent assignment policy mithilfe der Befehlszeilenschnittstelle Schematics -Richtlinienbefehle erstellen, aktualisieren und löschen.

Die agent-assignment-policy für einen Agenten wird mithilfe der folgenden Attribute eines Arbeitsbereichs oder einer Aktion definiert: Die Auswahlattribute können eine Kombination der folgenden Flags sein:

  • tags-Arbeitsbereiche oder Aktionen mit übereinstimmenden Benutzertags werden ausgewählt.
  • locations-Arbeitsbereiche oder Aktionen in der entsprechenden Schematics-Position sind ausgewählt.
  • resource-groups-Arbeitsbereiche oder Aktionen mit der übereinstimmenden Ressourcengruppe werden ausgewählt

Wenn die Auswahlrichtlinie für agent-1 die Angabe „tags=“ vorsieht[dev] und „resource-group=“[rg-2], leitet „ Schematics “ automatisch Workspace-Jobs – einschließlich „ Git “-Downloads sowie „Terraform“-Jobs zum Planen, Anwenden und Löschen – für alle Workspaces, die den Kriterien „ tags “ und „ resource-group “ entsprechen, zur Ausführung an „ agent-1 “ weiter.

Erstellen einer Agentenrichtlinie über die Benutzeroberfläche

  1. Melden Sie sich an der KonsoleIBM Cloud an.
  2. Klicken Sie auf das Hamburger-Symbol im Menü > Plattformautomatisierung > Schematics > Erweiterungen > Registerkarte Richtlinien > Richtlinie erstellen.
    • Im Abschnitt Richtlinie erstellen:
      • Geben Sie die eindeutige Name der Richtlinie ein.
      • Beschreibung eingeben.
      • Wählen Sie Richtlinientyp als Agentenzuordnungsrichtlinie aus.
      • Wählen Sie in der Dropdown-Liste Position und Ressourcengruppe aus.
      • Geben Sie Tags für den Agenten ein.
      • Klicken Sie auf Weiter.
    • Im Abschnitt Richtlinienparameter:
      • Wählen Sie Ihren Agenten aus der Dropdown-Liste aus.
      • Im Abschnitt Richtlinienattribute definieren.
        • Wählen Sie Objekttyp als workspace oder action aus.
        • Wählen Sie Ressourcengruppe aus.
        • Wählen Sie Objektposition aus.
        • Geben Sie Object tags ein.
        • Klicken Sie auf Weiter.
      • Gehen Sie im Abschnitt Richtlinienvorschau wie folgt vor:
        • Wählen Sie die Arbeitsbereiche aus, die Teil Ihrer Richtlinie sein sollen.
  3. Klicken Sie auf Erstellen.

Alle Richtlinien über die Benutzerschnittstelle auflisten

  1. Melden Sie sich an der KonsoleIBM Cloud an.
  2. Klicken Sie auf das Hamburger-Symbol im Menü > Plattformautomatisierung > Schematics > Erweiterungen > Registerkarte " Richtlinien".

Richtlinie über die Benutzerschnittstelle anzeigen

  1. Melden Sie sich an der KonsoleIBM Cloud an.
  2. Klicken Sie auf das Hamburger-Symbol im Menü > Plattformautomatisierung > Schematics > Erweiterungen > Registerkarte " Richtlinien".
  3. Klicken Sie in der Liste auf Ihre Richtlinie, um die Richtliniendetails anzuzeigen.
  4. Klicken Sie im Fenster Zugeordneter Agent auf Agentendetails, um Ihre Agentenkonfigurationen anzuzeigen.

Agentenrichtlinie über die Benutzerschnittstelle aktualisieren

Sie können eine Agentenrichtlinie aktualisieren, um die Auswahltags oder die Beschreibung zu ändern, indem Sie mit AGENT_ID auf den Agenten verweisen.

  1. Melden Sie sich an der KonsoleIBM Cloud an.
  2. Klicken Sie auf das Hamburger-Symbol im Menü > Plattformautomatisierung > Schematics > Erweiterungen > Registerkarte " Richtlinien".
  3. Klicken Sie in der Liste auf Ihre Richtlinie, um die Richtliniendetails anzuzeigen.
  4. Klicken Sie auf Aktionen > Richtlinie bearbeiten, um die Parameter zu aktualisieren.

Eine Richtlinie über die Benutzeroberfläche löschen

  1. Melden Sie sich an der KonsoleIBM Cloud an.
  2. Klicken Sie auf das Hamburger-Symbol im Menü > Plattformautomatisierung > Schematics > Erweiterungen > Registerkarte " Richtlinien".
  3. Klicken Sie in der Liste auf Ihre Richtlinie, um die Richtliniendetails anzuzeigen.
  4. Klicken Sie auf Aktionen > Richtlinie löschen, um die Parameter zu löschen.

Erstellen einer Agent-Richtlinie über die CLI

Erstellen Sie Ihre Agentenrichtlinie über die Befehlszeilenschnittstelle. Eine vollständige Liste der Optionen für Agentenrichtlinien finden Sie in der Dokumentation zu den Richtlinienbefehlen.

Vorbereitende Schritte:

  • Installieren oder aktualisieren Sie die Version des Schematics-Plug-ins auf 1.12.12 oder höher.
  • Wählen Sie die IBM Cloud-Region aus, in der der Agent definiert ist. Legen Sie die CLI-Region fest, indem Sie den Befehl ibmcloud target -r <region> ausführen.
  • Agentenrichtliniendatei erstellen

Eine JSON-Richtliniendatei definieren

Hier wird eine JSON-Beispielrichtliniendatei bereitgestellt. Ersetzen Sie die Platzhalter <...> durch Ihre tatsächlichen Werte.

  • Die Agentenjobs, auf denen ausgeführt werden sollen, werden mithilfe des Blocks target definiert.
  • Die Attribute zur Auswahl des Arbeitsbereichs oder der Aktionen, die auf dem Agenten ausgeführt werden, werden durch den Block parameter definiert.

JSON-Richtliniendateien können in einem beliebigen Editor oder IDE bearbeitet werden. Sie müssen gültiges JSON sein.

Syntax der JSON-Richtliniendatei:

  {
      "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "<agent id>"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [{
          "kind": "workspace",
          "tags": [
            "<user_tag>"
          ],
          "resource_groups": [
            "<resource_group>"
          ],
          "locations": [
            "<region>"
          ]
        }]
      }
    }
  }

Beispiel

  {
      "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent-prod-live.deA.e055"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [{
          "kind": "workspace",
          "tags": [
            "live-prod"
          ],
          "resource_groups": [
            "Default"
          ],
          "locations": [
            "eu-de"
          ]
        }]
      }
    }
  }

Agentenrichtlinie erstellen

Beispiel

ibmcloud schematics policy create --name agent-policy-testing-cli-jan-10 --kind agent_assignment_policy --location eu-de --resource-group Default --target-file policy.json

Ausgabe

Creating policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10-27   
Description         
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   aac37f57b20142dba1a435c70aeb12df   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod

Alle Richtlinien über die CLI auflisten

Sie können die Liste der in Ihrem Konto definierten Richtlinien mit dem Befehl policy list anzeigen.

Beispiel

ibmcloud schematics policy list

Ausgabe

Retrieving policies...
OK
Name                                          ID                                                     Description                                   Kind   Tags   
agent-policy-testing-cli-jan-10               agent-policy-testing-cli-jan-10.deP.c737                                                                    workspace-policy:prod   
policy-023e7204-c33d-49b8-a9f3-695ff085290d   policy-023e7204-c33d-49b8-a9f3-695ff085290d.gbP.8b3c   Created agent-assignment-policy for the ...             
policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb   policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb.deP.796d   Created agent-assignment-policy for
                                                                                       
Showing 1-3 of 3 items

Richtlinie über die Befehlszeilenschnittstelle anzeigen

Sie können die Konfiguration einer Agentenrichtlinie mit dem Befehl policy get anzeigen.

Beispiel

ibmcloud schematics policy get agent-policy-testing-cli-jan-10.deP.c737

Ausgabe

Retrieving policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10  
Description         
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   aac37f57b20142dba1a435c70aeb12df   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod

Agentenrichtlinie über die Befehlszeilenschnittstelle aktualisieren

Sie können eine Agentenrichtlinie aktualisieren, um die Auswahltags oder Beschreibung zu ändern, indem Sie mit dem Eingabeargument AGENT_ID auf den Agenten verweisen.

ibmcloud schematics policy update --id agent-policy-testing-cli-jan-10.deP.c737 --kind agent_assignment_policy --resource-group Default --tags workspace-policy:prod --description testing-policy-cli --tags jobtag
Updating policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10   
Description      testing-policy-cli   
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   Default   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod	   
                  - jobtag

Rufen Sie nach der Aktualisierung die Richtlinie ab, um die Änderungen zu bestätigen.

Beispiel

ibmcloud schematics policy get --id agent-policy-testing-cli-jan-10.deP.c737

Ausgabe

Retrieving policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10   
Description      testing-policy-cli   
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   Default   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod	   
                  - jobtag	   
                    

Eine Richtlinie über die Befehlszeilenschnittstelle löschen

Sie können eine Richtlinie löschen und das Eingabeargument AGENT_ID übergeben.

ibmcloud schematics policy delete --id agent-policy-testing-cli-jan-10.deP.c737
Do you really want to delete the policy? [y/N]> y
Initiating policy delete...

Erstellung von Agentenrichtlinien mit der API

Befolgen Sie die Schritte, um Ihren IAM Zugriffstoken abzurufen und authentifizieren Sie mit IBM Cloud Schematics mit der API. Weitere Informationen zur API für Agentenrichtlinien finden Sie im Abschnitt zum Jobstatus APIs für Agentenrichtlinien.

Beispiel für die Erstellung einer Richtlinie mit der API

POST /v2/settings/policies HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
    "name": "policy-1",
    "description": "Policy for job execution of secured workspaces on agent1",
    "resource_group": "Default",
    "tags": [
      "policy:secured-job"
    ],
    "location": "us-south",
    "kind": "agent_assignment_policy",
    "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent5.8442"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [
          {
            "kind": "workspace",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "test"
            ],
            "locations": [
              "us-south"
            ]
          }
        ]
      }
    }
  }

Beispiel für das Abrufen einer Richtlinie über die API

GET /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>

Beispiel für die Aktualisierung einer Richtlinie über die API

PATCH /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>
{
    "name": "policy-1",
    "description": "updated Policy for job execution of secured workspaces on agent1",
    "resource_group": "Default",
    "tags": [
      "policy:secured-job"
    ],
    "location": "us-south",
    "kind": "agent_assignment_policy",
    "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent5.13a6"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [
          {
            "kind": "action",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "dummy_resource_group"
            ],
            "locations": [
              "us-south"
            ]
          }
        ]
      }
    }
  }

Beispiel für die Suche nach Richtlinien mit der API

POST /v2/settings/policies/search HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
   "parameter": {
            "kind": "workspace",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "test"
            ],
            "locations": [
              "us-south"
            ]
          },
    "target": "action"
  }

Sie können den Agenten jetzt verwenden, um Schematics Terraform-oder Ansible-Jobs auszuführen. Der Agent führt alle Jobs für Arbeitsbereiche oder Aktionen aus, die den definierten Auswahlrichtlinienparametern entsprechen:

  • Ressourcengruppe
  • Standort
  • Tags

Beachten Sie, dass Tags beim Erstellen des Arbeitsbereichs oder der Aktion festgelegt werden müssen. Änderungen an Tags, die über die Benutzeroberfläche von „ Schematics “ vorgenommen werden, werden bei der Richtlinienauswertung nicht erkannt oder berücksichtigt.

Nach der Ausführung enthalten die Arbeitsbereichs-oder Aktionsjobprotokolle einen Header, der den Agenten angibt, auf dem der Job ausgeführt wurde.

2023/04/08 15:22:07 -----  New Workspace Action  -----
2023/04/08 15:22:07 Request: activitId=e3fcfdfdb13b07a1c60176e4b95c41ba, account=, owner=steve_strutt@uk.ibm.com, requestID=0a8a3428-b461-4dd0-8104-e859d68d35f6, OrchestratorID=orchestrator-5c8585dc74-6z9s5, agentID=agent-test-da.deA.e055, agentName=agent-test-da, jobRunnerID=jobrunner-5d99b5cfb7-p5xcz
2023/04/08 15:22:07 Related Workspace: name=myworkspace, agentID=agent-test-da.deA.e055 sourcerelease=(not specified), sourceurl=https://github.com/stevestrutt/multitier-vpc-bastion-host, branch=(not specified), folder=.
2023/04/08 15:22:07  --- Ready to execute the command on Agent agent-test-da.deA.e055 ---

Nächste Schritte

Häufig gestellte Fragen zu einem Agenten finden Sie in den häufig gestellten Fragen zum Agenten.

Wenn der Agent nicht mehr erforderlich ist, kann er nach den Schritten in Agenten löschen entfernt werden.