Ausdrücke in Cloud Provisioning and Governance verwenden

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 8 Minuten Lesedauer
  • Ausdrücke in Richtlinienaktionen können Werte festlegen oder überschreiben. Ausdrücke in Blaupausen können auf Attribute von Ressourcen zugreifen und Werte Anforderungsformularfeldern zuordnen. Ausdrücke sind in Ressourcenblöcken, Blaupausen, Richtlinien und überall sonst verfügbar, wo Cloud Provisioning and Governance Skripts zulässt.

    Ausdrücke verwenden

    Ausdrücke können die Werte für Informationen enthalten, die dynamisch im System generiert werden, z. B. die Werte für die Auswahlen, die Benutzer im Cloudbenutzerportal treffen. Ausdrücke sind in Ressourcenblöcken, Blaupausen, Richtlinien und überall sonst verfügbar, wo Cloud Provisioning and Governance Skripts zulässt.

    Ausdrücke in Ressourcenblöcken verwenden

    Jeder Ressourcenblockvorgang verwendet einen Ausdruck, der einen Wert für jeden Parameter enthält. Der Ausdruck kann hartcodierte Werte, Daten aus dem Stapel, den der Benutzer im Cloudbenutzerportal bereitstellt, Daten in der CMDB und Daten, die aus Skripts abgeleitet sind, verwenden. Standardmäßig generiert Cloud Provisioning and Governance eine Reihe von Parametern und ihren Ausdrücken für jeden Ressourcenblockvorgang.

    Beispiel: Der Parameter Location, der 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
    Ausdrücke in Blaupausen verwenden

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

    Sie können auf Blaupausenattribute mit Ausdrücken zugreifen. Der Ausdruck in der Spalte Zuordnung definiert Blaupausenattribute für jeden Vorgang in einem Schritt. Beispielsweise kann auf das Attribut Standort, das auf dem Stack-Anforderungsformular angezeigt wird, über den Ausdruck ${parameter.Location} zugegriffen werden. Der Standortparameter mit dem Wert ${parameter.Location} wird auf der Registerkarte Eingaben angezeigt, wenn Sie einen Blaupausenvorgang auswählen.

    Abbildung : 2. Ausdrücke in einer Blaupause
    Standortparameter und -ausdruck
    Ausdrücke in Richtlinienaktionen verwenden

    Richtlinienaktionen können Ausdrücke verwenden, um Parameterwerte zu überschreiben, die Benutzer in einem Anforderungsformular im Cloudbenutzerportal übermitteln. Sie können auch in Stack-Vorgängen auf Benutzerdaten zugreifen und diese überschreiben. Verwenden Sie beispielsweise den folgenden Ausdruck, um einen Stapel umzubenennen: formData.Stackname = "Ihre-Namenskonvention";.

    Abbildung : 3. Ausdrücke in einem Richtlinienskript
    Richtlinienbeispielskript

    Sie können auf Blaupausenattribute mit Ausdrücken zugreifen. Der Ausdruck in der Spalte Zuordnung definiert Blaupausenattribute für jeden Vorgang in einem Schritt. Beispielsweise kann auf das Attribut Standort, das auf dem Anforderungsformular für einen virtuellen Computer angezeigt wird, über den Ausdruck ${parameter.Location} zugegriffen werden.

    Ausdruckstypen

    Definitionsausdrücke
    Definitionsausdrücke sind eine Form der frühen Bindung (oder statischen Bindung). Diese Bindungen beziehen sich auf die Bindung zur Kompilierungszeit und werden ausgewertet, wenn der Benutzer das Stapelanforderungsformular übermittelt (wenn die Stapel- oder Ressourcenbereitstellung beginnt). Definitionsausdrücke haben keinen Zugriff auf die Daten, die während Orchestration generiert werden. Definitionsausdrücke werden in geschweifte 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 Bindung zur Laufzeit und haben Zugriff auf die Daten, die während Orchestration erstellt werden (z. B. Stapelelemente). Laufzeitausdrücke werden ausgewertet, wenn sie während einer Ausführung von Orchestration aufgerufen werden. Laufzeitausdrücke werden normalerweise für Dot-Walking mit 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 beliebigen Typs in anderen Ausdrücken verschachteln.

    Syntax und Beispiele für Definitionsausdrücke

    Die 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 der Bereitstellung von Blaupausen abzurufen. Daten werden nicht aus Tabellen abgerufen.
    • ${Stack.items[]}. Verwenden Sie diese Syntax für den Zugriff auf Attribute bestimmter Elemente in einem Stapel.
    • ${randomNumber}. Verwenden Sie diese Syntax, um eine Zufallszahl zu generieren. Beispielsweise können Sie eine VM mit einem zufälligen Knotennamen oder Stapelnamen bereitstellen.
    Tabelle : 1. Beispiele für Definitionsausdrücke
    Beispiel Beschreibung
    ${parameter.BillingCode} Dieser Ausdruck zeigt, wie ein Abrechnungscode-Parameter in einer Blaupause angezeigt wird.
    ${parameter.formData.CatalogAttributeType} Dieser Ausdruck verwendet ein Katalogattribut, das von einem Benutzer übermittelt wird, während der Benutzer das Formular für ein Katalogelement im Cloudbenutzerportal ausfüllt.
    ${parameter.userData.userId} Dieser Ausdruck verwendet die ID eines Benutzers, während der Benutzer das Formular für ein Katalogelement im Cloudbenutzerportal ausfüllt.
    ${Stack.items[Virtueller Server].attributes[sys_id]} Dieser Ausdruck ruft die sys_id eines virtuellen Servers ab, der Teil eines Stapels ist. „Virtueller Server“ ist der Alias eines Ressourcenblocks, der im Stapel verwendet wird.

    Syntax und Beispiele für Laufzeitausdrücke

    Die zulässige Syntax verwendet ein Dollarzeichen und Klammern. Diese Typen sind verfügbar:
    • $(ci.tablename), wobei tablename eine Tabelle im System ist, 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 für den Zugriff auf Attribute bestimmter Elemente in einem Stapel.
    Tabelle : 2. Beispiele für Laufzeitausdrücke
    Beispiel Beschreibung
    $(ci.cmdb_ci_cloud_subnet[ sys_id=12231231231231231231].cidr) Dieser Ausdruck führt ein Dot-Walking mit der Tabelle „Cloud-Subnetz“ durch, sucht den spezifischen Datensatz mit der angegebenen sys_id und übernimmt den Wert aus der Spalte cidr.
    $(ci.sn_cmp _ip_pool[subnet=${parameter.formData.Subnet Id}]) Dieser Ausdruck kombiniert Ausdrücke der Typen Laufzeit und Definition. Das Gleichheitszeichen „=“ wird verwendet, um einen Wert für eine Übereinstimmung auszuwerten. Der Ausdruck führt ein Dot-Walking für die Tabelle „IP-Pool“ durch und sucht nach dem Subnetz mit der Subnetz-ID, die der Benutzer übermittelt hat.
    $(ci.cmdb_ci_cloud_subnet[${parameter.formData.SubnetId}].cidr) Dieser Ausdruck kombiniert Ausdrücke der Typen Laufzeit und Definition. Der Ausdruck übernimmt den Wert des Felds cidr aus einem Subnetz, das der Benutzer bei der Bereitstellung ausgewählt hat. Die eckigen Klammern [] geben an, dass der Ausdruck die Tabelle „Cloud-Subnetz“ per Dot-Walking auswertet und dann den Wert für „Subnetz“ betrachtet, den der Benutzer für eine Blaupausenbereitstellung übermittelt hat. Der Ausdruck erfasst den Wert des Felds cidr und geht dann zu dem Wert im Feld cidr der sys_id des Subnetzes.
    $(Stack.items[Virtueller Server].attributes[sys_id]) Wie auch im Beispiel zum Definitionsausdruck ruft dieser Ausdruck die sys_id eines virtuellen Servers ab, der Teil eines Stapels ist.

    Beispielausdruck

    $(ci.cmdb_ci_nic[$(Script:CMPVMNICs.getNICs[arg=$(Stack.items[Virtueller Server].attributes[sys_id])])].private_ip)
    • $(ci: Laufzeitausdruck zum Abrufen von Daten aus der Tabelle.
    • cmdb_ci_nic: CI für Netzwerkschnittstellenkarte (NIC).
    • $(Script: Skriptbasierter Ausdruck.
    • CMPVMNICs: Skripteinbindung.
    • getNICs: Funktion in einer Skripteinbindung.
    • arg: Argumente für die Funktion in der Skripteinbindung. Argumente werden durch Komma (,) getrennt, wenn mehrere Attribute vorhanden sind.
    • $(Stack.items: Laufzeit-Stapelausdruck zum Abrufen eines Stapelelements aus einem Stapel. Argument ist der in der Blaupause angegebene Alias.
    • Virtual Server: Alias der in der Blaupause 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 von cmdb_ci_nic. Bei Bedarf durch öffentliche IP-Adresse ersetzen.

    Ausdrücke

    Simple parameter mapping expression

    Dieser Ausdruckstyp ruft Werte aus Eingabeattributen von Prozessen ab, z. B. Blaupausenvorgängen, Ressourcenblöcken und Richtlinien. Daten werden nicht aus Tabellen abgerufen. Er ordnet Werte einer Ebene einer anderen zu, z. B. von einer Blaupause zu einer Ressource zur Cloud API.

    • Typ: Definition
    • Syntax: ${parameter.}
    • Beispiele:
      • ${parameter.BillingCode} gibt den Abrechnungscode zurück.
      • ${parameter.formData.CatalogAttributeType} akzeptiert ein Katalogattribut, das auf dem Anforderungsformular im Cloudbenutzerportal übermittelt wird.
      • ${parameter.userData.userId} verwendet die ID eines Benutzers, der das Anforderungsformular im Cloudbenutzerportal bearbeitet.

    Stack item expression

    Jedes Stapelelement wird durch eine CI-Instanz in der CMDB dargestellt. Verwenden Sie Stapelelementausdrücke, um Eigenschaften der ersten Ebene im CI oder im Stapelelement selbst zu suchen, die das Stapelelement unterstützen.

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

      ${Stack.items[VirtualServer1].attributes[sys_id]} ist ein Ausdruck vom Typ Definition, 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 Ausdruck vom Typ Laufzeit, der die sys_id eines virtuellen Servers in einem Stapel abruft.

      ${Stack.items[vm1].attributes[node_id]} liest das Attribut node_id des CI, das für die VM erstellt wurde. vm1 ist der Name des Stapelelements (oder der Alias der Ressource in der Blaupause).

      $(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 Zufallszahl verwenden. Sie können Daten sowohl aus den Formularen im Cloudbenutzerportal als auch von dem Benutzer verwenden, der den Vorgang auf dem Formular ausgeführt hat.

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

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

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

      $(ci.sn_cmp _ip_pool[subnet=${parameter.formData.Subnet Id}])

      In Skripts können Sie Werte wie folgt zuweisen:

      formData.App_Server_NodeName = "MyNodeName";

      this.parameter.userData.userId == 'servicenowuserId';

    • Siehe auch Richtlinienaktionsskript erstellen.

    Script expression

    Im Beispiel ist VMProperties eine Skripteinbindung mit einer Funktion namens getIP. Ein Skriptausdruck ist auch ein Beispiel für einen komplexen Ausdruck (der Ausdruck ist verschachtelt).

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

      $(Script:VMPropertiesUtil.getIP[ arg=$(Stack.items[VM1].attributes[object_id])])

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

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

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

      Ausdruck zum Abrufen der IP-Adresse: $(Script: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[subnet=${parameter.formData.Subnet Id}]) kombiniert Laufzeit- und Definitionsausdrücke. Der Operator „=“ wertet einen Wert für eine Übereinstimmung aus. Der Ausdruck führt ein Dot-Walking für die Tabelle „IP-Pool“ durch und sucht nach dem Subnetz mit der Subnetz-ID, die der Benutzer übermittelt hat.

      $(ci.cmdb_ci_cloud_subnet[${parameter.formData.SubnetId}].cidr) ruft den Wert des Felds cidr aus einem Subnetz ab, das der Benutzer während der Bereitstellung angegeben hat. Der Ausdruck führt ein Dot-Walking für die Tabelle „Cloud-Subnetz“ durch, betrachtet den Subnetzwert, den der Benutzer in einer Blaupausenbereitstellung angegeben hat, extrahiert den Wert des Felds cidr und geht dann zum Wert im Feld cidr der sys_id des Subnetzes.

    Random number expression

    Generiert eine Zufallszahl. Beispielsweise können Sie 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: Ausgaben für einen Vorgang festlegen/verfügbar machen:

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

      So lesen Sie die Ausgabeattribute (wobei VM1.Provision der Vorgang ist, dessen Ausgabeattribute gelesen werden):

      $(Outputs[VM1.Provision].NodeId)

    Conditions in expressions

    Sie können bedingte Ausdrücke in Blaupausenschritten und Ressourcenvorgangsschritten verwenden, um den Schritt bedingt auszuführen oder zu überspringen. Die bedingten Ausdrücke sind Javascript-Ausdrücke und unterstützen das Ersetzen von Ausdrücken.

    • 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 schachteln. Im Beispiel ordnet ${parameter.ServerID} die sys_id des CI zu und wird ersetzt, bevor der äußere Ausdruck angewendet 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 für die Bestellattribute als Teil der Tabelle sn_cmp_order.

    • Typ: Laufzeit
    • Syntax: $(context.order.column_name)
    • Beispiele:
      • Anforderungselement: $(context.order.sc_req_item)
      • Dot-Walking für Anforderungselementobjekt: $(context.order.sc_req_item.number)
      • Gemischter Ausdruck (Konstante + Ausdruck): "ram$(context.order.sc_req_item.number)"