Verwenden Sie SSH, um eine VM mit einem Workflow-Typ-Vorgang herunterzufahren
Verwenden Sie SSH, um eine VM mithilfe eines Workflow-Typ-Vorgangs remote herunterzufahren. Folgen Sie diesem Anwendungsfall, um alle erforderlichen Aufgaben für diese Art von Herunterfahren zu durchlaufen.
Vorbereitungen
Prozedur
-
Führen Sie die folgenden Schritte aus, um die benutzerdefinierte SSH-Aktivität zu erstellen:
- Navigieren zu Adminportal > Workflows > Workflow-Editor.
- Klicken Sie auf die Registerkarte Benutzerdefiniert und dann auf + (Pluszeichen), um eine neue benutzerdefinierte Aktivität zu erstellen.
-
Wählen Sie SSH aus der Liste der Aktivitätstypen aus.
-
Der Aktivitätendesigner wird geöffnet, und die Registerkarte Allgemein wird angezeigt
Geben Sie einen eindeutigen Namen für die Aktivität ein, und klicken Sie dann auf Fortfahren.
- Fügen Sie auf der Registerkarte „Eingaben“ die Eingabevariablen mit den folgenden Schritten hinzu, und klicken Sie dann auf Fortfahren:
- Klicken Sie in der Eingabetabelle auf das + in einem Kreis, um eine neue Eingabevariable zu erstellen.
-
Klicken Sie rechts neben ABC in der Spalte Name, und geben Sie den Eingabenamen ein.
Eingaben variieren je nach betroffenem Objekt. Sie können eine Aktivität anhalten, um eine VM anzuhalten, sodass die Eingaben die Werte widerspiegeln, die zum Ausführen dieser Aktion erforderlich sind.
Die Spalten Typ und Obligatorisch werden gemäß den von Ihnen angegebenen Eingaben automatisch ausgefüllt.
-
Erstellen Sie ein neues Eingabeobjekt für jede Eingabe in der folgenden Tabelle, und klicken Sie dann auf Fortfahren:
Eingabevariablen Typ Obligatorisch Host Zeichenfolge Nein Befehl Zeichenfolge Nein CredentialTag Zeichenfolge Nein - Führen Sie auf der Registerkarte „Ausführungsbefehl“ Folgendes aus:
- Klicken Sie in der Ausgabetabelle auf das + in einem Kreis, um eine neue Ausgabevariable zu erstellen.
-
Klicken Sie rechts neben ABC in der Spalte Name, und geben Sie den Ausgabenamen ein.
Die Ausgabevariablen geben die möglichen Ergebnisse an, wenn der Workflow versucht, SSH-Verbindungen zur VM herzustellen. Die Spalte Typ wird automatisch ausgefüllt.
Ausgaben Typ Fehler Zeichenfolge Ausgabe Zeichenfolge - Klicken Sie auf die Fehlervariable, und ziehen Sie sie in das Feld für den Variablennamen in der Tabelle mit Analyseregeln.
- Wählen Sie im Dialogfeld der Analyseregel für Fehler in der Dropdown-Liste der Analysequellen die entsprechende Quelle aus. In diesem Fall „executionResult.errorMessages“.
-
Wiederholen Sie den Vorgang für die Ausgabevariable, wählen Sie „executionResult.output“ als Analysequelle aus, und klicken Sie auf Absenden.
-
Klicken Sie auf Fortsetzen.
Bedingungen sind optional.
- Klicken Sie auf Speichernund dann auf Veröffentlichen, um die Aktivität für die Verwendung im Workflow verfügbar zu machen.
-
Führen Sie zum Erstellen des SSH-Workflows zum Herunterfahren der VM die folgenden Schritte aus:
Wenn Sie einen Workflow erstellen, ordnen Sie ihn einer Tabelle und einer Aktivität zu.
- Sie können den Workflow in einer Tabelle auf globaler Ebene oder in einer Tabelle auf Anwendungsebene erstellen. Verwenden Sie die globale Tabelle, um den Workflow für alle ServiceNow-Anwendungen verfügbar zu machen. Hier verwenden wir eine Tabelle für Cloud Provisioning and Governance, sodass dieser Workflow nur für die Verwendung mit dieser Anwendung verfügbar ist.
- Sie können den Workflow im Workflow-Editor oder im Activity Designer erstellen. Hier wird der Activity Designer verwendet.
- Wählen Sie im Activity Designer rechts die Registerkarte Workflows aus, und klicken Sie dann auf das Pluszeichen (+), um einen neuen Workflow hinzuzufügen.
- Geben Sie im Fenster „Neuer Workflow“ einen eindeutigen Namen für den Workflow ein.
-
Wählen Sie aus dem Dropdown-Menü Tabelle die zu verwendende Tabelle aus.
Suchen und verwenden Sie die VM-Instanz cmdb_ci_vm_instance, um den Workflow zum Ausschalten einer VM zu verwenden.
- Klicken Sie auf Absenden.
- Wenn der Workflow im Canvas-Bereich angezeigt wird, löschen Sie die Verbindungslinie zwischen Start- und Endpunkt des Workflows.
- Löschen Sie die Verbindungslinie zwischen Start- und Endpunkt des Workflows.
- Klicken Sie mit der rechten Maustaste auf die Canvas mit weiteren Informationen, und wählen Sie Eingaben bearbeiten aus.
-
Erstellen Sie die folgenden Eingaben:
Hinweis:Übernehmen Sie die Eingabenamen aus dem Feld „Spalte“, nicht aus dem Feld „Bezeichnung“. Wenn der Workflow einer Tabelle auf globaler Ebene zugeordnet ist, wird dem Eingabenamen im Feld „Spalte“ das Präfix „u_“ vorangestellt, z. B. u_ipaddress. Hier befindet sich die Tabelle auf Anwendungsebene, daher ist kein Präfix erforderlich.
Tabelle : 1. Workflow-Eingaben Typ Bezeichnung Spalte (automatisch hinzugefügt) Max. Länge Zeichenfolge IPAddress ipaddress 100 Zeichenfolge CredentialTag credentialtag 100 - Klicken Sie auf Absenden.
- Klicken Sie mit der rechten Maustaste auf die Canvas, und wählen Sie Benutzerdefinierte Aktivität hinzufügen aus.
- Suchen Sie im Fenster „Versionen“ nach der Aktivität, die Sie zu Anfang in diesem Anwendungsfall erstellt haben, und wählen Sie sie aus.
- Geben Sie im Fenster „Neue Aktivität“ für diese Aktivität (Workflow-Aktivität „Neuer Datensatz“ [Diagrammansicht]) einen Namen für die Aktivität ein.
-
Geben Sie im Feld Host die von der Aktivität erwartete Eingabezuordnung ein.
Hier ist dies die IP-Adresse des Hosts: ${workflow.inputs.u_ipaddress}. Verwenden Sie diesen Ausdruck zum Abrufen der IP-Adresse:
$(Script:CMPVMUtils.getReachableIp[arg=$(Stack.items[Virtual Server].attributes[sys_id])])
- Geben Sie im Feld „Befehl“ shutdown -h now ein.
-
Geben Sie im Feld „Anmeldeinformations-Tag“ ${workflow.inputs.u_credentialtag} ein.
Verwenden Sie diesen Ausdruck, um das Anmeldeinformations-Tag abzurufen:
$(Script:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_id]}])
-
Klicken Sie auf Absenden.
Die Aktivität wird in der Workflow-Canvas angezeigt.
- Klicken Sie mit der rechten Maustaste auf die Canvas, und wählen Sie Kernaktivität hinzufügen aus, um eine Ausführungsskript-Aktivität hinzuzufügen.
- Suchen Sie im Fenster „Workflow-Aktivitätsdefinitionen“ nach Skript ausführen und wählen Sie die Option aus.
- Geben Sie im Fenster „Neue Aktivität: Skript ausführen“ einen Namen für die Aktivität ein.
-
Schneiden Sie ein (für Ihre Umgebung geeignetes) Skript aus, und fügen Sie es im Feld „Skript“ ein.
Dieses Skript aktualisiert den Status der VM nach dem Herunterfahren.Beispielskript:
if ( gs.nil(data.get(3).error)) { current.state = 'off'; current.setWorkflow(false); current.update(); } - Klicken Sie auf Absenden.
- Verbinden Sie im Canvas-Bereich die Connectors zwischen dem Anfangspunkt, der Aktivität, dem Ausführungsskript und dem Endpunkt.
-
Validieren Sie den Workflow mithilfe der Workflow-Validierung.
Hinweis:Das System empfiehlt nicht die Verwendung von current.update(). Dies kann ignoriert werden.
-
Führen Sie die folgenden Schritte aus, um den Vorgang einem Ressourcenblock hinzuzufügen:
Sie können aus den vorhandenen Vorgängen in einem Ressourcenblock auswählen, um mit Ihrem Workflow zu arbeiten, oder Sie können einen benutzerdefinierten Vorgang erstellen.
- Navigieren Sie in Portal für Cloud-Admin.zu Design > Ressourcenblöcke.
- Wählen Sie einen Ressourcenblock aus, z. B. Virtueller Server.
- Ändern Sie den Status des Ressourcenblocks von Veröffentlicht in Entwurf, um ihn bearbeitbar zu machen.
-
Wechseln Sie zur Registerkarte Vorgänge, und wählen Sie dann im Dropdown-Feld „Schnittstelle“ eine Schnittstelle aus, die dem Benutzer zur Verfügung steht.
Die Standardschnittstelle ist Virtuelle Serverschnittstelle.
- Klicken Sie rechts neben dem Feld „Vorgang“ auf +, und geben Sie dann im Dialogfeld „Vorgang hinzufügen“ einen aussagekräftigen und eindeutigen Namen ein.
- Wählen Sie einen Vorgang aus der Dropdown-Liste „Vorgangstyp“ aus.
- Wählen Sie im Feld „Zugriffstyp“ die Option Öffentlich aus.
-
Füllen Sie das Formular aus, und klicken Sie dann auf Absenden.
Vorgangstyp Wählen Sie den auszuführenden Vorgang aus. Zugriffstyp Wählen Sie Öffentlich aus, damit der Benutzer den Vorgang während der Bereitstellung auf Ressourcenebene sehen kann. Auf Privat festgelegte Vorgänge sind während der Bereitstellung nicht sichtbar. Der Vorgang ist für die Ressource verfügbar, wenn Sie die Ressource für Ihren Workflow auswählen. -
Um einen Ressourcenvorgangsschritt hinzuzufügen, um den Workflow aufzurufen, klicken Sie noch auf der Registerkarte Vorgänge auf Schritte > Schritt hinzufügen.
Damit der Workflow als Teil der Update Sets exportiert werden kann, müssen Sie eine Erweiterungsschnittstelle erstellen und den neuen Vorgang hinzufügen. Weitere Detailinformationen finden Sie unter Cloud Provisioning and Governance-Ressourcenblöcke mit einem Überschreibungsvorgang erweitern.
- Wählen Sie im Popup-Fenster „Vorgangschritte hinzufügen“ die Option Workflow aufrufen für Vorgangstyp aus.
-
Wählen Sie den Workflow aus der Liste der von Ihnen erstellten Workflows aus.
Das System kann die Liste anhand von Tags filtern. So fügen Sie ein Tag hinzu:
- Navigieren Sie zu Systemeigenschaften.
- Suchen Sie nach der Systemeigenschaft sn_cmp.workflow_tag_filter, und wählen Sie sie aus.
- Bearbeiten Sie die Eigenschaft. Fügen Sie ein Tag oder eine kommagetrennte Liste von Tags hinzu.
- Klicken Sie auf Speichern.
-
So filtern Sie die Workflows:
- Öffnen Sie in der Workflow-Tabelle den Workflow.
- Klicken Sie auf Tag hinzufügen.
- Geben Sie den Wert ein, den Sie zuvor in der Eigenschaft sn_cmp.workflow_tag_filter angegeben haben.
- Drücken Sie die Eingabetaste, um den Wert als Tag zum Workflow hinzuzufügen. Der neue Schritt wird angezeigt, nachdem die Software den neuen Vorgangskatalog für Tag 2 generiert hat.
-
Es können Workflows vorhanden sein, die in anderen als globalen Tabellen erstellt wurden.
Sie können einen Workflow hinzufügen, der für eine solche Tabelle erstellt wurde. Zum Ausführen von Vorgängen für diese Art von Workflow benötigen Sie die sys_id des Datensatzes, in dem der Workflow ausgeführt wird, um den aktuellen Datensatz zu erstellen. Wenn der Designer einen Workflow hinzufügt, der sich in einer anderen als der globalen Tabelle befindet, erstellt das System einen wf_current-Parameter im Vorgangseingabeparameter. Sie können dann einen Ausdruck schreiben, um die sys_id der Ressource zuzuordnen, in der der Vorgang ausgeführt wird. Sobald dies abgeschlossen ist, kann der Designer das Schlüsselwort „aktuell“ in Workflow-Skripts verwenden.So fügen Sie den Workflow hinzu:
- Nachdem Sie den Schritt erstellt haben, fügt das System die Workflow-Eingaben den Vorgangseingabeparametern hinzu. Sie können dann bei Bedarf die Zuordnung für diese Parameter bereitstellen.
- Klicken Sie auf die Schaltfläche Katalog generieren, um das Katalogelement für den Vorgang zu erstellen.
- Nachdem der Katalog generiert wurde, können Sie den Katalogelementen Regeln aus den Lade- und Feldänderungsregeln hinzufügen.
- Setzen Sie den Ressourcenblock auf den Status Veröffentlicht, um den Workflow im Cloudbenutzerportal verfügbar zu machen.
-
Führen Sie die folgenden Schritte aus, um den Vorgang über das Benutzerportal auszuführen:
- Stellen Sie eine einfache AWS-VM über das Portal bereit.
- Nach Abschluss der VM-Bereitstellung navigieren Sie zum Stapel > VM-Ressource.
-
Wählen Sie in der Option „Ressourcenvorgang auswählen“ die benutzerdefinierte Stoppaktivität aus, die Sie zuvor in diesem Anwendungsfall erstellt haben, und klicken Sie dann auf OK.
Der Vorgang wird ausgeführt, nachdem das RITM erstellt wurde und sich der VM-Status in der AWS-Konsole ändert.
- Navigieren zu Betreiben > Pfade , um die Pfadprotokolle anzuzeigen und die Vorgangsschritte nachzuverfolgen.
-
Führen Sie bei Bedarf die folgenden Schritte zur Problembehebung aus:
-
Verwenden Sie das Anforderungselement (RITM), und navigieren Sie zum Dashboard „RootCauseAnalysis“.
Das RITM enthält den Link zum Workflow-Kontext des derzeit ausgeführten Vorgangs.
-
Überprüfen Sie diese allgemeinen Fehler:
Tabelle : 2. Fehlerbehandlung Symptom Fehlermeldung VM wird heruntergefahren, aber ein Problem mit der SSH-Verbindung ist aufgetreten „Fehler; Auftrag mit Status FEHLER beendet: Problem in SSH-Sitzung, Auftrag abgebrochen: Verbindung wurde unerwartet vom SSH-Server geschlossen: \n“ VM ist bereits heruntergefahren/VM ist nicht erreichbar „Verbindung kann nicht hergestellt werden, der Status ist TCP_CONNECTION_FAILURE. Zeitüberschreitung beim Warten darauf, dass TCP eine Verbindung mit 10.198.252.224:22 herstellt: \n“ Hinweis:Bestätigen Sie, dass die IP-Adresse der VM in „wf_context“ die richtige Adresse ist. Die VM wurde möglicherweise bereits heruntergefahren. Bestätigen Sie, dass die IP-Adresse zugänglich ist.Root-Zugriff nicht verfügbar „Fehler beim Ausgeben des Methodenaufrufs: Zugriff verweigert\nMuss root sein.\nExit-Status: 1\n\n“ Hinweis:Bestätigen Sie, dass das Kontrollkästchen Sudo erforderlich in der SSH-Aktivität zu Beginn dieses Anwendungsfalls aktiviert ist.
-
Verwenden Sie das Anforderungselement (RITM), und navigieren Sie zum Dashboard „RootCauseAnalysis“.