Mit Ausdrücken in Cloud Provisioning and Governance

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 7 Minuten Lesedauer
  • Ausdrücke in Richtlinienaktionen können Werte festlegen oder überschreiben. Ausdrücke in Blueprints können auf Attribute von Ressourcen zugreifen und Werte zu Anforderungsformularfeldern zuordnen. Ausdrücke sind in Ressourcenblöcken, Blueprints, Richtlinien und überall verfügbar Cloud Provisioning and GovernanceLässt Skripts zu.

    Mit Ausdrücken

    Ausdrücke können die Werte für Informationen enthalten, die dynamisch im System generiert werden, z. B. die Werte für die Auswahlmöglichkeiten, die Anwender auf treffen Cloud-Anwenderportal. Ausdrücke sind in Ressourcenblöcken, Blueprints, Richtlinien und überall verfügbar Cloud Provisioning and GovernanceLässt Skripts zu.

    Verwendung von Ausdrücken in Ressourcenblöcken

    Jeder Ressourcenblockvorgang verwendet einen Ausdruck, um einen Wert für jeden Parameter zu speichern. Der Ausdruck kann hartcodierte Werte und Daten aus dem Stapel verwenden, den der Anwender in bereitstellt Cloud-Anwenderportal, Daten in der CMDB und Daten, die von Skripts abgeleitet werden. Standardmäßig Cloud Provisioning and GovernanceGeneriert einen Satz von Parametern und ihren Ausdrücken für jeden Ressourcenblockvorgang.

    Beispiel: Der Parameter Location, Das das Rechenzentrum enthält, zu dem eine Ressource gehört, verwendet den Ausdruck ${Parameter.Location}

    Abbildung : 1. Ausdrücke in einem Ressourcenblock
    Standortparameter für einen Ressourcenblock
    Verwendung von Ausdrücken in Blueprints

    Blueprints können Ausdrücke verwenden, um Eingabeparameter für jeden Vorgang in einem Ressourcenblock zuzuordnen. Standardmäßig zeigt der Blueprint dieselben Parameter und Werte an, die im Ressourcenblock angegeben sind.

    Sie können mit Ausdrücken auf Blueprint-Attribute zugreifen. Der Ausdruck in Zuordnung Spalte definiert Blueprint-Attribute für jeden Vorgang in einem Schritt. Beispiel: Standort Das Attribut, das im Stapelanforderungsformular angezeigt wird, ist über zugänglich {$Parameter.Standort} Ausdruck. Der Standortparameter mit ${Parameter.Location} Wert wird auf angezeigt Eingaben Registerkarte, wenn Sie einen Blueprint-Vorgang auswählen.

    Abbildung : 2. Ausdrücke in einem Blueprint
    Der Standortparameter und -Ausdruck
    Verwendung von Ausdrücken in Richtlinienaktionen

    Richtlinienaktionen können Ausdrücke verwenden, um Parameterwerte zu überschreiben, die Anwender in einem Anforderungsformular auf übermitteln Cloud-Anwenderportal. Sie können auch in Stapelvorgängen auf Anwenderdaten zugreifen und diese überschreiben. Verwenden Sie beispielsweise den folgenden Ausdruck, um einen Stapel umzubenennen: FormData.Stapelname = „Ihre-Benennungskonvention“; .

    Abbildung : 3. Ausdrücke in einem Richtlinienskript
    Richtlinienbeispiel-Skript

    Sie können mit Ausdrücken auf Blueprint-Attribute zugreifen. Der Ausdruck in Zuordnung Spalte definiert Blueprint-Attribute für jeden Vorgang in einem Schritt. Beispiel: Standort Auf das Attribut, das im Anforderungsformular für eine virtuelle Maschine angezeigt wird, wird mit dem folgenden Ausdruck zugegriffen: {$Parameter.Standort} .

    Ausdruckstypen

    Definitionsausdrücke
    Definitionsausdrücke sind eine Form der frühen Bindung (oder statischen Bindung). Diese Bindungen beziehen sich auf die Kompilierungszeitbindung und werden ausgewertet, wenn der Anwender das Stapelanforderungsformular übermittelt (wenn die Stapel- oder Ressourcenbereitstellung beginnt). Definitionsausdrücke haben keinen Zugriff auf die Daten, die während generiert werden Orchestration. Definitionsausdrücke sind in geschweiften Klammern eingeschlossen. Beispiel: ${Parameter.CloudAccount}
    Laufzeitausdrücke
    Laufzeitausdrücke sind eine Form der späten Bindung (oder dynamischen Bindung). Diese Bindungen beziehen sich auf die Laufzeitbindung und haben Zugriff auf die Daten, die während erstellt werden Orchestration(Z. B. Stapelelemente). Laufzeitausdrücke werden ausgewertet, wenn sie während einer aufgerufen werden OrchestrationAusführen. Laufzeitausdrücke werden normalerweise für Dot-Walking zu Daten in Tabellen verwendet. Laufzeitausdrücke sind in Klammern eingeschlossen. Beispiel: $(Stack.items[VM1].attributes[node_id])
    Definitions-/Laufzeitausdrücke
    Einige Ausdrücke enthalten sowohl Definitions- als auch Laufzeitausdrücke.
    Komplexe Ausdrücke
    Sie können Ausdrücke eines beliebigen Typs in anderen Ausdrücken verschachteln.

    Syntax und Beispiele des Definitionsausdrucks

    Zulässige Syntax verwendet ein Dollarzeichen und geschweifte Klammern. Diese Typen sind verfügbar:
    • ${Parameter.} . Verwenden Sie diese Art von Ausdruck, um Werte aus Eingabeattributen von Prozessen wie Blueprint-Bestimmungen abzurufen. Daten werden nicht aus Tabellen abgerufen.
    • ${Stack.items[]} . Verwenden Sie diese Syntax, um auf Attribute bestimmter Elemente in einem Stapel zuzugreifen.
    • ${randomNumber} . Verwenden Sie diese Syntax, um eine zufällige Zahl zu generieren. Sie können beispielsweise eine VM mit einem zufälligen Knotennamen oder Stapelnamen bereitstellen.
    Tabelle : 1. Beispiele für Definitionsausdrücke
    Beispiel Beschreibung
    ${Parameter.Abrechnungscode} Dieser Ausdruck zeigt, wie ein Abrechnungscodeparameter in einem Blueprint angezeigt wird.
    ${Parameter.formData.CatalogAttributeType} Dieser Ausdruck verwendet ein Katalogattribut, das von einem Anwender übermittelt wird, während der Anwender das Formular für ein Katalogelement in ausfüllt Cloud-Anwenderportal.
    ${parameter.userData.userId} Dieser Ausdruck nimmt die ID eines Anwenders an, während der Anwender das Formular für ein Katalogelement in ausfüllt Cloud-Anwenderportal.
    ${Stack.items[Virtual Server].attributes[sys_ID]} Dieser Ausdruck ruft die sys_ID eines virtuellen Servers ab, der sich von einem Stapel unterscheidet. Virtueller Server ist der Alias eines Ressourcenblocks, der im Stapel verwendet wird.

    Syntax und Beispiele des Laufzeitausdrucks

    Zulässige Syntax verwendet ein Dollarzeichen und eine Klammer. Diese Typen sind verfügbar:
    • $(ci.Tabellenname) Wo Tabellenname Ist eine Tabelle im System, normalerweise eine CI-Tabelle in der CMDB. Verwenden Sie diese Syntax, um auf Werte von Feldern in der Tabelle zuzugreifen.
    • $(Stack.items[]) . Verwenden Sie diese Syntax, um auf Attribute bestimmter Elemente in einem Stapel zuzugreifen.
    Tabelle : 2. Beispiele für Laufzeitausdrücke
    Beispiel Beschreibung
    $(ci.cmdb_ci_cloud_subnet[ sys_ID=12231231231231231231].cidr) Dieser Ausdruckspunkt geht zur Cloud-Subnetztabelle, sucht den spezifischen Datensatz mit der angegebenen sys_ID und übernimmt den Wert aus cidr Spalte.
    $(ci.sn_CMP _ip_Pool[Subnetz=${Parameter.formData.Subnetz-ID}]) Dieser Ausdruck kombiniert Laufzeit- und Definitionstypausdrücke. Das Gleichheitszeichen = wird verwendet, um einen Wert für eine Übereinstimmung auszuwerten. Der Ausdruck DOT-geht zur IP-Pool-Tabelle und sucht nach dem Subnetz, das die Subnetz-ID enthält, die der Anwender übermittelt hat.
    $(ci.cmdb_ci_cloud_subnet[${Parameter.formData.SubnetId}].cidr) Dieser Ausdruck kombiniert Laufzeit- und Definitionstypausdrücke. Der Ausdruck nimmt den Wert von cidr Feld aus einem Subnetz, das der Anwender während der Bereitstellung ausgewählt hat. Die quadratischen Klammern [] Geben Sie an, dass der Ausdruck DOT zur Cloud-Subnetztabelle geht und dann den Subnetzwert betrachtet, den der Anwender für eine Blueprint-Bereitstellung übermittelt hat. Der Ausdruck greift cidr Feldwert und geht dann zum Wert in cidr Feld der sys_ID des Subnetzes.
    $(Stack.items[Virtual Server].attributes[sys_ID]) Wie im Beispiel für den Definitionsausdruck verwendet dieser Ausdruck die sys_ID eines virtuellen Servers, der sich von einem Stapel unterscheidet.

    Beispielausdruck

    $(ci.cmdb_ci_nic[$(Skript:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_ID])].Private_ip)
    • $(ci: Laufzeitausdruck zum Abrufen von Daten aus der Tabelle.
    • cmdb_ci_nic: CI für NIC (Netzwerkschnittstellenkarte).
    • $(Script: Skriptbasierter Ausdruck.
    • CMPVMNICs: Skripteinbindung.
    • getNICs: Funktion in einer Skripteinbindung.
    • arg: Argumente für Skripteinbindungsfunktion. Argumente werden durch „,“ getrennt, wenn mehrere Attribute vorhanden sind.
    • $(Stack.items: Runtime-Stapelausdruck zum Abrufen eines Stapelelements aus einem Stapel. Argument ist der im Blueprint angegebene Alias.
    • Virtual Server: Alias der im Blueprint verwendeten Ressource.
    • $(Stack.items[Virtual Server].attributes[sys_id]): Ruft die sys_ID der Ressourceninstanz des Stapelelements („virtueller Server“) in einem Stapel ab.
    • private_ip: Attribut aus cmdb_ci_nic. Ersetzen Sie bei Bedarf durch öffentliche IP.

    Ausdrücke

    Simple parameter mapping expression

    Dieser Ausdruckstyp ruft Werte aus Eingabeattributen von Prozessen ab, z. B. Blueprint-Vorgänge, Ressourcenblöcke und Richtlinien. Daten werden nicht aus Tabellen abgerufen. Ordnet Werte von einer Ebene einer anderen zu, z. B. von einem Blueprint einer Ressource zur Cloud-API.

    • Typ: Definiert
    • Syntax: ${Parameter.}
    • Beispiele:
      • ${Parameter.Abrechnungscode} Gibt den Abrechnungscode zurück.
      • ${Parameter.formData.CatalogAttributeType} Verwendet ein Katalogelattribut, das im Anforderungsformular in übermittelt wird Cloud-Anwenderportal.
      • ${parameter.userData.userId} Nimmt die ID eines Anwenders an, der am Anforderungsformular in arbeitet Cloud-Anwenderportal.

    Stack item expression

    Eine CI-Instanz in der CMDB stellt jedes Stapelelement dar. Verwenden Sie Stapelelementausdrücke, um Eigenschaften der ersten Ebene für das CI zu suchen, das das Stapelelement oder das Stapelelement selbst zurückgibt.

    • Typ: Definition/Laufzeit
    • Syntax: ${Stack.items[]} Oder $(Stack.items[])
    • Beispiele:

      ${Stack.items[VirtualServer1].attributes[sys_id]} Ist ein Definitionstypausdruck, der die sys_ID eines virtuellen Servers in einem Stapel abruft. VirtualServer1 Ist der Alias eines Ressourcenblocks, der im Stapel verwendet wird.

      $(Stack.items[VirtualServer2].attributes[sys_id]) Ist ein Laufzeittypausdruck, der die sys_ID eines virtuellen Servers übernimmt, der Teil eines Stapels ist.

      ${Stack.items[vm1].attributes[node_id]} Liest Node_ID Attribut des CI, das für die VM erstellt wurde. vm1 Ist der Name des Stapelelements (oder der Alias der Ressource im Blueprint).

      $(Stack.items[vm1].status) Liest den Status des Stapelelements.

    Property override expressions in policies

    In Richtlinien können Sie Eigenschaften überschreiben, indem Sie einen Wert aus dem System abrufen oder eine zufällige Zahl verwenden. Sie können Daten aus beiden Formularen in verwenden Cloud-AnwenderportalUnd des Anwenders, der den Vorgang für das Formular ausgeführt hat.

    • Typ: Definition/Laufzeit
    • Syntax: ${Parameter.formData.XYZ} Oder ${this.parameter.userData.xyz}
    • Beispiele:

      Der folgende Wert kann den Stapelnamen auf festlegen Stack_Bob.Smith@company.com: Stapel_${parameter.userData.userId}

      Legen Sie Stapel- oder Tabellenwerte mithilfe von Laufzeitausdrücken fest, indem Sie das Subnetz aus der Tabelle „IP-Pools“ verwenden:

      $(ci.sn_CMP _ip_Pool[Subnetz=${Parameter.formData.Subnetz-ID}])

      In Skripts können Sie Werte wie folgt zuweisen:

      FormData.App_Server_nodename = „MyNodeName“;

      this.parameter.userData.userId == „servicenowuserId“;

    • Siehe auch Erstellen Sie ein Richtlinienaktionsskript.

    Script expression

    Im Beispiel VMEigenschaften Ist eine Skripteinbindung mit einer Funktion namens GetIP . Ein Skriptausdruck ist auch ein Beispiel für einen komplexen Ausdruck (der Ausdruck ist geschachtelt).

    • Typ: Laufzeit
    • Syntax: $(Script:scriptName.function[])
    • Beispiele:

      $(Skript:VMEigenschaftenUtil.getIP[ arg=$(Stack.items[VM1].attributes[object_id])])

      Ausdruck für private IP: $(ci.cmdb_ci_nic[$(Skript:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_ID])].Private_ip)

      Ausdruck für öffentliche IP: $(ci.cmdb_ci_nic[$(Skript:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_ID])]].public_ip)

      Ausdruck zum Abrufen des Anmeldeinformationsalias: $(Skript:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_ID]}])

      Ausdruck zum Abrufen der IP-Adresse: $(Skript:CMPVMUtils.getReachableIp[arg=$(Stack.items[Virtual Server].attributes[sys_ID])])

    CI lookup expression

    Greift auf Werte von Feldern in einer Tabelle zu, normalerweise eine CI-Tabelle in der CMDB.

    • Typ: Definition/Laufzeit
    • Syntax: $(ci.tableName)
    • Beispiele:

      $(ci.sn_CMP _ip_Pool[Subnetz=${Parameter.formData.Subnetz-ID}]) Kombiniert Laufzeit- und Definitionstypausdrücke. Der Operator = wertet einen Wert für eine Übereinstimmung aus. Der Ausdruck DOT-geht zur IP-Pool-Tabelle und sucht nach dem Subnetz, das die Subnetz-ID enthält, die der Anwender übermittelt hat.

      $(ci.cmdb_ci_cloud_subnet[${Parameter.formData.SubnetId}].cidr) Nimmt den Wert von an cidr Feld aus einem Subnetz, das der Anwender während der Bereitstellung angegeben hat. Der Ausdruck DOT-geht zur Cloud-Subnetztabelle, betrachtet den Subnetzwert, den der Anwender für eine Blueprint-Bereitstellung übermittelt hat, und extrahiert cidr Feldwert und geht dann zum Wert in cidr Feld der sys_ID des Subnetzes.

    Random number expression

    Generiert eine zufällige Zahl. Sie können beispielsweise eine VM mit einem zufälligen Knotennamen oder Stapelnamen bereitstellen.

    • Typ: Laufzeit
    • Syntax und Beispiel: ${randomNumber}

    Scratchpad expression/Resource operation output attribute expression

    Liest Ausgabeattribute aus einem Vorgang in einen anderen Vorgang.

    • Typ: Laufzeit
    • Syntax: Variiert
    • Beispiel: So legen Sie Ausgaben aus einem Vorgang fest/stellen Sie sie bereit:

      ${Compute Interface.CreateNode.Output.resp.nodeId}

      Zum Lesen der Ausgabeattribute (wobei VM1.Bereitstellung Ist der Vorgang, dessen Ausgabeattribute gelesen werden):

      $(Ausgaben[VM1.Bereitstellung].NodeId)

    Conditions in expressions

    Sie können bedingte Ausdrücke in Blueprint-Schritten und Ressourcenvorgangsschritten verwenden, um den Schritt bedingt auszuführen oder zu überspringen. Die bedingten Ausdrücke sind JavaScript-Ausdrücke und unterstützen Ausdrucksersetzungen.

    • Typ: Definition/Laufzeit
    • Syntax: Variiert
    • Beispiele:

      „${Parameter.CloudAccount}“==„Amazon Cloud-Account“

      „$(Stack.items[vm1].attributes[node_id]) “=„VM1“

    Complex expression

    Sie können Ausdrücke verschachteln. Im Beispiel ${Parameter.serverId} Ordnet die sys_ID des CI zu und wird ersetzt, bevor der äußere Ausdruck verbraucht wird.

    • Typ: Beliebig
    • Syntax: Variiert
    • Beispiel: $(ci.cmdb_ci_vm_instance[${Parameter.serverId}].Name)

    Order context

    Dieser Ausdruck ist für Lebenszyklusvorgänge nützlich und ermöglicht Ihnen das Dot-Walking der Reihenfolgeattribute als Teil von sn_cmp_orderTabelle.

    • Typ: Laufzeit
    • Syntax: $(context.order.column_Name)
    • Beispiele:
      • Anforderungselement: $(context.order.sc_req_item)
      • Dot-Walk für Anforderungselementobjekt: $(context.order.sc_req_item.number)
      • Gemischter Ausdruck (Konstante + Ausdruck): „ram$(context.order.sc_req_item.number)“