Ferner Status und arbeitsbereichsübergreifender Zugriff

IBM Cloud® stellt integrierte Fernstatusverwaltung für Terraform bereit. Terraform-Statusdateien werden zwischen Ausführungen automatisch beibehalten und sind über IBM Cloud®-Befehle und -Operationen zugänglich. IBM Cloud®-Fernstatusverwaltung ermöglicht gemeinsame Operationen für Teamarbeit und Arbeitsbereiche mit integrierter Statussperre, die gleichzeitige Operationen für dieselbe Statusdatei verhindert.

Die integrierte Arbeitsbereichsverwaltung über Fernzugriff unterstützt eine Reihe von Schematics-Anwendungsfällen:

  • Die gemeinsame Nutzung von Ressourcendaten durch mehrere Arbeitsbereiche. Dadurch kann Ihre Infrastruktur in kleinere Komponenten unterteilt werden, wobei schreibgeschützte Ressourceninformationen zwischen Umgebungen übergeben werden, die Schematics Datenquellen mit fernem Status verwenden. Diskrete Umgebungen, die durch Datenquellen verknüpft sind, ermöglichen es, dass unterschiedliche Elemente der Infrastruktur an verschiedene Teams delegiert werden, wobei Informationen zwischen Arbeitsbereichen als schreibgeschützte Ressourcen gemeinsam genutzt werden.
  • Integration von Arbeitsbereichs-und Aktionsoperationen mit Aktionen. Arbeitsbereichsressourceninformationen können direkt als Ansible dynamisches Inventar übergeben werden, ohne dass eine manuelle Hostbestandserstellung oder die Verwendung von Inventarscripts erforderlich ist.

Zugriff auf Arbeitsbereichsstatus und -ausgaben

Sie können über andere Arbeitsbereiche in Ihrem Account auf Informationen zu den Ressourcen zugreifen, die Sie in einem Arbeitsbereich verwalten, indem Sie die Datenquellen ibm_schematics_output und ibm_schematics_state verwenden.

IBM Cloud® verwendet die integrierte Terraform-Statusunterstützung von local und keine Terraform- Back-End-Unterstützung. In Terraform configs ist keine zusätzliche Konfiguration erforderlich, um die IBM Cloud®-Fernstatusverwaltung zu aktivieren. Schematics verwendet nicht die Terraform-Datenquelle remote_state, sondern die ibm_schematics_output-Datenquelle für den Zugriff auf die Informationen.

Wie unterscheidet sich die Datenquelle ibm_schematics_state von der Datenquelle remote_state ?
Wenn Sie die Datenquelle remote_state verwenden, müssen Sie ein Backend für die Verbindung mit Ihren Arbeitsbereichen konfigurieren. Mit der Datenquelle ibm_schematics_state haben Sie automatisch Zugriff auf das integrierte Backend von Schematics und können direkt auf Arbeitsbereichsinformationen zugreifen.

Was muss ich tun, um auf Ressourceninformationen in anderen Arbeitsbereichen zuzugreifen?
Ähnlich wie bei der Datenquelle remote_state können Sie nur auf Informationen zugreifen, die Sie als Ausgabewerte in Ihrer Terraform-Vorlage konfiguriert haben. Beispiel: Angenommen, Sie verfügen über einen Arbeitsbereich, den Sie zur Bereitstellung einer VPC verwendet haben. Um auf die VPC-ID zugreifen zu können, müssen Sie die ID als Ausgabevariable in Ihrer Terraform-Konfigurationsdatei definieren.

Gehen Sie wie folgt vor, um die Datenquelle ibm_schematics_output zu verwenden:

  1. Folgen Sie dem Beispiel im Einführungslehrgang, um einen Schematics Workspaces zu erstellen und einen virtuellen Server in einer VPC bereitzustellen. Wenn Sie die Anweisungen befolgen, überprüfen Sie die Ausgabevariablen, die am Ende der Terraform-Konfigurationsdatei vpc.tf definiert sind.

    Wenn Sie bereits eine andere Terraform-Konfigurationsdatei in einem Ihrer Arbeitsbereiche verwendet haben, können Sie diesen Arbeitsbereich für die Übung verwenden. Stellen Sie sicher, dass Sie Ausgabewerte wie in diesem Beispiel dargestellt zu Ihrer Konfigurationsdatei hinzufügen, damit Sie zu einem späteren Zeitpunkt Zugriff auf Ihre Arbeitsbereichsinformationen haben.

    output sshcommand {
        value = "ssh root@ibm_is_floating_ip.fip1.address"
    }
    
    output vpc_id {
    value = ibm_is_vpc.vpc.id
    }
    

    In diesem Beispiel werden zwei Ausgabewerte definiert: sshcommand für den Zugriff auf die virtuelle Serverinstanz in Ihrer VPC sowie vpc_id.

  2. Rufen Sie die ID des VPC-Arbeitsbereichs ab, den Sie erstellt haben.

    Über Konsole:

    • Wählen Sie im Arbeitsbereichsdashboard Symbol für externen Link den VPC-Arbeitsbereich aus.
    • Wählen Sie die Registerkarte Einstellungen aus.
    • Suchen Sie die Arbeitsbereichs-ID im Abschnitt Zusammenfassung.

    Über CLI:

    • Listen Sie die verfügbaren Arbeitsbereiche in Ihrem Konto auf.
      ibmcloud schematics workspace list
      
    • Suchen Sie die Arbeitsbereichs-ID im Abschnitt Zusammenfassung.

    Die Verwendung des Befehls Schematics ibmcloud terraform zeigt eine Warnung und eine Verwerfungsmeldung an, da der Alias 'terraform' veraltet ist. Verwenden Sie "schematics" oder "sch" in Ihren Befehlen.

  3. Erstellen Sie eine weitere Terraform-Konfigurationsdatei mit dem Namen remotestate.tf, um auf die Ausgabeparameter der Datei vpc.tf zuzugreifen, indem Sie die Datenquelle ibm_schematics_output verwenden. Um die Versionssteuerung dieser Datei zu ermöglichen, müssen Sie diese Konfigurationsdatei in einem GitHub- oder GitLab-Repository speichern.

    data "ibm_schematics_workspace" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
    }
    
    data "ibm_schematics_output" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
        template_id = data.ibm_schematics_workspace.vpc.runtime_data.0.id
    }
    
    output "output_vars" {
        value = data.ibm_schematics_output.vpc.output_values
    }
    
    output "ssh_command" {
        value = data.ibm_schematics_output.vpc.output_values.sshcommand
    }
    
    output "vpc_id" {
        value = data.ibm_schematics_output.vpc.output_values.vpc_id
    }
    
    Konfigurationsdateikomponenten
    Ideensymbol Erklärung der Komponenten der Konfigurationsdatei
    data.ibm_schematics_workspace.workspace_id Geben Sie die ID des VPC-Arbeitsbereichs ein, in dem Sie die Ausgabewerte definiert haben, auf die Sie zugreifen möchten. Sie benötigen diese Datenquelle, um die Vorlagen-ID des Arbeitsbereichs in der Datenquelle ibm_schematics_output abzurufen.
    data.ibm_schematics_output.workspace_id Geben Sie die ID des VPC-Arbeitsbereichs ein, in dem Sie die Ausgabewerte definiert haben, auf die Sie zugreifen möchten.
    data.ibm_schematics_output.template_id Geben Sie data.ibm_schematics_workspace.vpc.runtime_data.0.id ein, um auf die Terraform-Vorlage Ihres Arbeitsbereichs zu verweisen.
    output.output_vars.value Verwenden Sie die Terraform-Interpolationssyntax für den Zugriff auf alle Ausgabewerte, die Sie in der Datei vpc.tf mithilfe des Ausgabeparameters output_values der Datenquelle ibm_schematics_output definiert haben. Der Ausgabeparameter output_values gibt alle Ausgabewerte in Form einer Liste zurück.
    output.sshcomand.value und output.vpc_id.value Sie können auf einen bestimmten Wert in der output_values-Liste zugreifen, indem Sie die ID des Ausgabewerts Ihrer Datenquelle ibm_schematics_output hinzufügen. Wenn beispielsweise auf vpc_id zugreifen wollen, verwenden Sie einfach data.ibm_schematics_output.vpc.output_values.vpc_id.
  4. Erstellen Sie einen Arbeitsbereich, der auf die remotestate.tf-Datei in Ihrem GitHub- oder GitLab-Repository verweist. Wenn Sie stattdessen eine Bandarchivdatei (.tar) von Ihrer lokalen Maschine hochladen möchten, verwenden Sie den Befehl ibmcloud schematics workspace upload.

  5. Führen Sie Ihren Terraform-Code in Schematics aus. Wenn Sie Ihre Protokolle überprüfen, können Sie die Ausgabewerte aus Ihrem VPC-Arbeitsbereich im Abschnitt Ausgabe anzeigen.

    Beispielausgabe

    ...
    2020/02/21 19:49:30 Terraform show | Outputs:
    2020/02/21 19:49:30 Terraform show |
    2020/02/21 19:49:30 Terraform show | Output_vars = {
    2020/02/21 19:49:30 Terraform show |   sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show |   vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a
    2020/02/21 19:49:30 Terraform show | }
    2020/02/21 19:49:30 Terraform show | sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show | vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a