IBM Cloud Docs
Software auf virtuellen Serverinstanzen in VPC installieren

Software auf virtuellen Serverinstanzen in VPC installieren

Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.

Dieses Lernprogramm führt Sie durch die Bereitstellung der IBM Cloud® Virtual Private Cloud-Infrastruktur (VPC-Infrastruktur) und die Installation von Software auf virtuellen Serverinstanzen (VSI) mit IaC-Tools (IaC: Infrastructure as Code) wie Terraform und Ansible.

Nach einer Einführung in die Architektur des Lernprogramms werden Sie zunächst Ihre Umgebung für das Lernprogramm vorbereiten und dann die Grundlegenden Voraussetzungen für die Softwareinstallation in IBM Cloud überprüfen. An diesem Punkt können Sie entscheiden, ob Sie alle Technologien bewerten oder zu einem der spezifischen eigenständigen Abschnitte wie Terraform oder Ansible.

Ziele

  • Die von IBM bereitgestellte Betriebssystemsoftware verstehen
  • Manuelle Schritte zum Aktualisieren der Betriebssystemsoftware und Installieren neuer Software verwenden
  • Die Verwendung der IBM Cloud-Befehlszeilenschnittstelle (CLI) sowie von Terraform und Ansible zum Automatisieren der Bereitstellung von Ressourcen und der Softwareinstallation verstehen

In diesem Lernprogramm stellen Sie die Konfiguration bereit, die in einem anderem Lernprogramm namens Öffentliche Front-Ends und private Back-Ends in einer virtuellen privaten Cloud bereits vorgestellt wurde. Sie stellen einen Front-End-Server bereit, der über das öffentliche Internet zugänglich ist mit mit einem Back-End-Server ohne Internetkonnektivität kommuniziert.

Architektur des öffentlichen Frontends und des privaten Backends in einer Virtual Private
des

Zur Konfiguration gehört auch ein Bastion-Host, der als Jump-Server fungiert und sichere Verbindungen zu Instanzen ermöglicht, die ohne öffentliche IP-Adresse bereitgestellt werden:

Architektur des Bastionshosts
Architektur des Bastionshosts

Während der Bereitstellung der Ressourcen stellen Sie auch Anwendungen auf den virtuellen Serverinstanzen bereit. Bei der Bereitstellung von Anwendungen in der Cloud kann Software aus unterschiedlichen Quellen stammen:

  1. Dateisystem einer lokalen Workstation, wofür Tools wie Terraform verwendet werden, um die erforderliche Infrastruktur zu erstellen, oder Ansible, ssh und scp, um Software auf den virtuellen Serverinstanzen zu installieren und konfigurieren;
  2. IBM-Spiegel, um die Betriebssysteme zu aktualisieren oder um unterstützte Pakete zu installieren;
  3. Internet- oder Intranet-Software-Repositorys.

Architekturdiagramm mit den verschiedenen Quellen für die Softwareinstallation aus
Architekturdiagramm mit den verschiedenen Quellen für die Softwareinstallation aus

Sie werden erkunden, wie diese unterschiedlichen Quellen verarbeitet werden können.

Vorbereitende Schritte

VPC-SSH-Schlüssel erstellen

Bei der Bereitstellung virtueller Serverinstanzen wird ein SSH-Schlüssel in die Instanzen eingefügt, so dass Sie später eine Verbindung zu den Servern herstellen können.

  1. Wenn auf der lokalen Maschine kein SSH-Schlüssel vorhanden ist, verwenden Sie diese Anleitungen, um einen Schlüssel für VPC zu erstellen. Standardmäßig befindet sich der private Schlüssel in $HOME/.ssh/id_rsa.
  2. Fügen Sie den SSH-Schlüssel in der VPC-Konsole unter Rechenfunktionalität / SSH-Schlüssel hinzu. Stellen Sie sicher, dass Sie den Schlüssel in derselben Ressourcengruppe erstellen, in der Sie die anderen Ressourcen in diesem Lernprogramm erstellen.

Umgebungsvariablen festlegen

Dieses Lernprogramm umfasst Beispielcode, der die unterschiedlichen Optionen für die Bereitstellung von Ressourcen und die Installation oder Aktualisierung von Software in einer VPC-Umgebung veranschaulicht.

Sie werden schrittweise an einem Terminal durch Beispielschritte geführt und verwenden dabei die Shell, terraform und ansible. Diese Tools installieren Sie in späteren Schritten. Damit die Scripts funktionieren, müssen Sie eine Reihe von Umgebungsvariablen festlegen.

  1. Klonen Sie das Quellcode-Repositorydes Lernprogramms:

    git clone https://github.com/IBM-Cloud/vpc-tutorials.git
    
  2. Definieren Sie eine Variable namens CHECKOUT_DIR, die auf das Quellcodeverzeichnis verweist:

    cd vpc-tutorials
    export CHECKOUT_DIR=$PWD
    
  3. Wechseln Sie in das Lernprogrammverzeichnis:

    cd $CHECKOUT_DIR/vpc-app-deploy
    
  4. Kopieren Sie die Konfigurationsdatei:

    cp export.template export
    
  5. Bearbeiten Sie die Datei export und legen Sie die Umgebungsvariablenwerte fest:

    • TF_VAR_ibmcloud_api_key ist ein IBM Cloud-API-Schlüssel. Sie können einen solchen über die Konsole erstellen.

    • TF_VAR_ssh_key_name ist der Name des öffentlichen VPC-SSH-Schlüssels, der im vorherigen Abschnitt angegeben wurde. Dabei handelt es sich um den öffentlichen Schlüssel, der in die virtuelle Serverinstanz geladen wird, um sicheren SSH-Zugriff über den privaten Schlüssel auf Ihrer Workstation zu ermöglichen. Stellen Sie mithilfe der Befehlszeilenschnittstelle (CLI) sicher, dass er vorhanden ist:

      ibmcloud is keys
      
    • TF_VAR_resource_group_name ist eine Ressourcengruppe, in der künftig Ressourcen erstellt werden. Nähere Informationen enthält Ressourcengruppen erstellen und verwalten.

    • TF_VAR_region ist eine Region, in der Ressourcen erstellt werden. Dieser Befehl zeigt die Regionen an:

      ibmcloud is regions
      
    • TF_VAR_zone ist eine Zone, in der Ressourcen erstellt werden. Dieser Befehl zeigt die Zonen an:

      ibmcloud is zones
      
    • TF_VAR_ssh_agent gibt an, dass ein kennphrasengeschützter SSH-Schlüssel verwendet wird. Aktivieren Sie die Variable, indem Sie die Kommentarzeichen entfernen. Fügen Sie anschließend mit ssh-add ~/.ssh/id_rsa den SSH-Schlüssel zum Authentifizierungsagenten hinzu.

  6. Laden Sie die Variablen in die Umgebung:

    source export
    

    Stellen Sie in den folgenden Abschnitten sicher, dass Sie stets dasselbe Terminalfenster verwenden. Falls Sie ein neues Fenster verwenden, legen Sie die Umgebungsvariablen fest.. Die Umgebungsvariablen in export sind der Einfachheit halber im Terraform-Format (beachten Sie das Präfix TF_VAR_ ). Sie werden in nachfolgenden Abschnitten verwendet.

Grundlegende Voraussetzungen für die Softwareinstallation

Virtuelle Serverinstanzen mittels Basisimages bereitstellen

Für die Bereitstellung einer virtuellen Serverinstanz wählen Sie das Basisimage aus einem von IBM zur Verfügung gestellten vordefinierten Satz von Betriebssystemimages aus. Rufen Sie mit dem Befehl ibmcloud is images die Liste der verfügbaren Images ab.

IBM verfügt zur Unterstützung der IBM-Images über interne Spiegel. Die Spiegel enthalten neue Versionen für die Software in den von IBM zur Verfügung gestellten Images sowie den optionalen Paketen, die der Distribution zugeordnet sind. Die Spiegel sind Teil der Serviceendpunkte, die für IBM Cloud VPC verfügbar sind. Für das Lesen der Spiegel fallen keine Ingress-Kosten an.

Ziehen Sie sowohl die Aktualisierung der Versionslisten, die für die bereitgestellten Instanzen verfügbar sind, als auch die Durchführung eines Upgrades für die installierte Software anhand dieser Spiegel in Betracht.

Cloudinstanzen mit 'cloud-init' initialisieren und anpassen

Bei der Bereitstellung einer virtuellen Serverinstanz können Sie ein Cloud-Init-Skript angeben, das während der Serverinitialisierung ausgeführt werden soll. 'Cloud-init' ist ein Mehrfachdistributionspaket, das die Initialisierung einer Cloudinstanz in einem frühen Stadium abwickelt. Es definiert eine Sammlung von Dateiformaten zum Codieren der Initialisierung von Cloud-Instanzen.

In IBM Cloud wird der Inhalt der 'cloud-init'-Datei im Parameter user-data zum Zeitpunkt der Bereitstellung des Servers angegeben. Siehe "Formate für Benutzerdaten " für zulässige Benutzerdateninhalte. Wenn Sie für die Scriptausführung den Debugger ausführen müssen, protokolliert 'cloud-init' die Ausgabe des Initialisierungsscripts auf virtuellen Serverinstanzen in der Datei /var/log/cloud-init-output.log.

Dieses Tutorial verwendet ein Shell-Skript install.sh als Initialisierungsskript:

#!/bin/bash
set -x
apt-get update
apt-get install -y nginx
indexhtml=/var/www/html/index.html

# Demonstrate the availability of internet repositories.  If www.python.org is availble then other software internet software like
# npm, pip, docker, ...  if isolated only the software from the ibm mirrors can be accessed
if curl -o /tmp/x -m 3 https://www.python.org/downloads/release/python-373/; then
    echo INTERNET > $indexhtml
else
    echo ISOLATED > $indexhtml
fi

In diesem Script zeigt das Upgrade der installierten Software und das Installieren von nginx sowie von anderen Paketen mit den vom Betriebssystem bereitgestellten Tools für die Softwareinstallation, dass sogar die isolierten Instanzen Zugriff auf die von IBM zur Verfügung gestellten Spiegel haben. Bei Ubuntu erfolgt der Zugriff auf Spiegel über die apt-get-Befehle.

Der Befehl curl, mit dem auf www.python.org zugegriffen wird, veranschaulicht den Versuch, Zugriff auf Software im Internet zu erhalten und diese Software möglicherweise zu installieren.

Je nachdem, ob der Host über eine Internetverbindung verfügt, ändert das Script die von index.html bereitgestellte Seite nginx.

Aus dem Dateisystem hochladen und auf der Instanz ausführen

Möglicherweise sind Daten und Software auf dem Dateisystem Ihres lokalen Systems oder in der CI/CD-Pipeline verfügbar, die auf die virtuelle Serverinstanz hochgeladen und anschließend ausgeführt werden muss.

In solchen Fällen können Sie die SSH-Verbindung zum Server verwenden, um Dateien mit scp hochzuladen, und können dann Scripts mit ssh auf dem Server ausführen. Die Scripts könnten auch Softwareinstallationsprogramme aus dem Internet oder aus Ihren lokalen Systemen abrufen, sofern Sie eine Verbindung wie zum Beispiel ein VPN zwischen Ihren lokalen Systemen und der Cloud eingerichtet.

Der Tutorial-Code enthält ein Skript namens uploaded.sh, das von Ihrer Workstation auf die virtuellen Serverinstanzen hochgeladen wird (manuell oder durch Automatisierung wie Terraform und Ansible ).

In späteren Abschnitten verwenden Sie das Skript test_provision.bash verwenden, um zu bestätigen, dass die Server erfolgreich bereitgestellt wurden, auf das Internet zugreifen können (oder nicht) und dass das Skript uploaded.sh korrekt ausgeführt wurde.

IBM Cloud-Befehlszeilenschnittstelle (CLI) und Shell-Scripts

Die IBM Cloud-Befehlszeilenschnittstelle (CLI, Command Line Interface) stellt Befehle für die Interaktion mit allen Ressourcen bereit, die Sie in IBM Cloud erstellen können. In diesem Abschnitt wird erläutert, wie diese Befehle verwendet werden, Sie werden jedoch keine Ressourcen erstellen. Es wird empfohlen, Terraform für die Bereitstellung vollständiger Lösungen zu verwenden.

Vorbereitende Schritte

Installieren Sie die Befehlszeilentools (CLI-Tools), indem Sie die folgenden Schritte ausführen.

Virtuelle Serverinstanzen bereitstellen und Software installieren

Die CLI verfügt über ein Plug-in für alle VPC-bezogenen Funktionen, einschließlich Rechen-und Netzressourcen.

  1. Legen Sie vor dem Arbeiten mit VPC-Ressourcen die aktuelle Ressourcengruppe und Region fest:

    ibmcloud target -g $TF_VAR_resource_group_name -r $TF_VAR_region
    
  2. Führen Sie den CLI-Befehl ibmcloud is instance-create aus, um eine virtuelle Serverinstanz bereitzustellen. In shared/install.sh ist die Cloud-Init-Datei, die zur Initialisierung der Frontend- und Backend-Server verwendet wird. Sie können das Script mit dem Parameter --user-data wie folgt übergeben:

    ibmcloud is instance-create ... --user-data @shared/install.sh
    
  3. Wenn die Front-End-und Back-End-VSIs implementiert sind und sich im Wartungsmodus befinden, können Sie ein Script beispielsweise an den Frontend-Server senden und dann das Script ausführen, um Software aus dem Internet zu installieren. Senden Sie ein Script an den Front-End-Server:

    scp -F ../scripts/ssh.notstrict.config -o ProxyJump=root@$BASTION_IP_ADDRESS shared/uploaded.sh root@$FRONT_NIC_IP:/uploaded.sh
    

    Führen Sie dann dieses Script aus:

    ssh -F ../scripts/ssh.notstrict.config -o ProxyJump=root@$BASTION_IP_ADDRESS root@$FRONT_NIC_IP sh /uploaded.sh
    

    Es kann einige Minuten dauern, bis der ssh-Dienst auf dem Server initialisiert ist, und es dauert noch einige Minuten, bis das Skript cloud-init abgeschlossen ist. Das Script uploaded.sh wartet, bis die Initialisierung abgeschlossen ist, und wird erst dann beendet.

Infrastruktur mit Terraform bereitstellen

Terraform ermöglicht es Ihnen, Infrastruktur sicher und vorhersehbar zu erstellen, zu ändern und zu verbessern. Terraform ist ein Open Source-Tool, das APIs in deklarative Konfigurationsdateien umwandelt, die an Teammitglieder weitergegeben und von diesen als Code gehandhabt, bearbeitet, überprüft und versioniert werden können.

Vorbereitende Schritte

Befolgen Sie die Anweisungen auf Ihrer Workstation für die Installation von Terraform und dem IBM Cloud Provider-Plug-in für Terraform.

Einzelne virtuelle Serverinstanz bereitstellen

Bevor Sie eine komplexere Architektur bereitstellen, sollten Sie die Installation des Terraform-Providers validieren, indem Sie eine einzelne virtuelle Serverinstanz mit einer variablen IP-Adresse bereitstellen und dann über SSH auf diesen Server zugreifen.

Suchen Sie in der main.tf datei nach einem Terraform-Skript. Dieses verwendet die Umgebungsvariablen, die Sie zuvor definiert haben.

  1. Wechseln Sie für dieses Beispiel in den Ordner des Terraform-Scripts:

    cd $CHECKOUT_DIR/vpc-app-deploy/tfinstance
    
  2. Initialisieren Sie Terraform:

    terraform init
    
  3. Wenden Sie den Terraform-Plan an:

    terraform apply
    

    Das Script erstellt eine VPC, eine VSI und aktiviert den SSH-Zugriff.

  4. Zeigen Sie die vom Plan generierte Ausgabe an:

    terraform output
    
  5. Sie können die Ausgabe des vorherigen Befehls kopieren und einfügen oder Sie können terraform output wie folgt verwenden, um SSH in die VSI einzufügen:

    $(terraform output -raw sshcommand)
    

    Die Verwendung von Ausgaben in Terraform kann sehr praktisch sein, wenn Sie nach der Anwendung eines Terraform-Plans Ressourceneigenschaften in anderen Scripts wiederverwenden möchten.

  6. Entfernen Sie die durch Terraform erstellten Ressourcen:

    terraform destroy
    

Teilnetze und virtuelle Serverinstanzen bereitstellen

Die Gruppe der Terraform-Dateien im Ordner vpc-app-deploy/tf des Repositorys von vpc-tutorials implementiert die Architektur des Lernprogramms Öffentliches Front-End und privates Back-End in einer Virtual Private Cloud.

Das Skript vpc-app-deploy/tf/main.tf enthält die Definition der Ressourcen. Es bewirkt den Import eines Terraformmoduls, das gemeinsam mit diesem anderen Lernprogramm genutzt wird:

   module vpc_pub_priv {
     source = "../../vpc-public-app-private-backend/tfmodule"
     basename = "${local.BASENAME}"
     ssh_key_name = "${var.ssh_key_name}"
     zone = "${var.zone}"
     backend_pgw = false
     profile = "${var.profile}"
     image_name = "${var.image_name}"
     resource_group_name = "${var.resource_group_name}"
     maintenance = "${var.maintenance}"
     frontend_user_data = "${file("../shared/install.sh")}"
     backend_user_data = "${file("../shared/install.sh")}"
   }

In dieser Definition gilt Folgendes:

  • backend_pgw steuert, ob der Back-End-Server Zugriff auf das öffentliche Internet hat. Mit dem Back-End-Teilnetz kann ein öffentliches Gateway verbunden werden. Dem Front-End ist eine variable IP-Adresse zugewiesen, die sowohl eine öffentliche IP als auch ein Gateway für das Internet bereitstellt. Dadurch wird ein offener Internetzugang für die Softwareinstallation ermöglicht. Das Back-End wird nicht über Internetzugriff verfügen.
  • frontend_user_data und backend_user_data verweisen auf die 'cloud-init'-Initialisierungsscripts.

Mit Terraform können alle Ressourcen über zugeordnete Bereitsteller verfügen. Der Bereitsteller null_resource stellt keine Cloudressource bereit, kann aber verwendet werden, um Dateien auf Serverinstanzen zu kopieren. Dieses Konstrukt wird im Skript verwendet, um die uploaded.sh datei zu kopieren und sie dann wie unten dargestellt auszuführen. Terraform unterstützt die Verwendung des Bastion-Hosts, wie im Tutorial bereitgestellt, um eine Verbindung zu den Servern herzustellen:

   resource "null_resource" "copy_from_on_prem" {
     connection {
       type        = "ssh"
       user        = "root"
       host        = "${module.vpc_pub_priv.frontend_network_interface_address}"
       private_key = "${file("~/.ssh/id_rsa")}"
       bastion_user        = "root"
       bastion_host        = "${local.bastion_ip}"
       bastion_private_key = "${file("~/.ssh/id_rsa")}"
     }
     provisioner "file" {
       source      = "../shared/${local.uploaded}"
       destination = "/${local.uploaded}"
      }
     provisioner "remote-exec" {
       inline      = [
         "bash -x /${local.uploaded}",
        ]
     }
   }

So stellen Sie die Ressourcen bereit:

  1. Wechseln Sie in den Ordner des Terraform-Scripts:
    cd $CHECKOUT_DIR/vpc-app-deploy/tf
    
  2. Initialisieren Sie Terraform:
    terraform init
    
  3. Wenden Sie den Terraform-Plan an:
    terraform apply
    
  4. Zeigen Sie die vom Plan generierte Ausgabe an:
    terraform output
    

Konfiguration der virtuellen Server testen

Nachdem Terraform nun Ressourcen bereitgestellt hat, können Sie überprüfen, ob diese korrekt bereitgestellt wurden.

  1. Überprüfen Sie, ob die virtuelle Instanz des Front-End-Servers erreichbar ist und über ausgehenden Zugriff auf das Internet verfügt:
    ../test_provision.bash $(terraform output -raw FRONT_IP_ADDRESS) INTERNET hi
    
    Die Befehlsausgabe sollte folgenden Inhalt haben:
    success: httpd default file was correctly replaced with the following contents:
    INTERNET
    success: provision of file from on premises worked and was replaced with the following contents:
    hi
    
  2. Überprüfen Sie, ob das Back-End über den Bastion-Host erreicht werden kann und keinen Zugriff auf das Internet hat:
    ../test_provision.bash $(terraform output -raw BACK_NIC_IP) ISOLATED hi "ssh -F ../../scripts/ssh.notstrict.config root@$(terraform output -raw FRONT_NIC_IP) -o ProxyJump=root@$(terraform output -raw BASTION_IP_ADDRESS)"
    
    Die Befehlsausgabe sollte folgenden Inhalt haben:
    success: httpd default file was correctly replaced with the following contents:
    ISOLATED
    success: provision of file from on premises worked and was replaced with the following contents:
    hi
    

Ressourcen entfernen

  1. Entfernen Sie die durch Terraform erstellten Ressourcen:
    terraform destroy
    

Software mit Ansible installieren

Ansible ist ein Tool für Konfigurationsmanagement und Bereitstellung, das ähnlich wie Chef und Puppet funktioniert und zur Automatisierung von mehrschichtigen App-Bereitstellungen und -Bereitstellungen in der Cloud entwickelt wurde. Ansible wurde in Python geschrieben und verwendet die YAML-Syntax, um Automatisierungstasks zu beschreiben. Dadurch ist Ansible leicht zu erlernen und zu verwenden.

Obwohl Ansible für die Bereitstellung der VPC-Ressourcen sowie die Installation von Software verwendet werden könnte, wird in diesem Abschnitt Terraform zum Bereitstellen der VPC-Ressourcen und Ansible zum Bereitstellen der Software verwendet.

Vorbereitende Schritte

In diesem Abschnitt werden sowohl Terraform als auch Ansible verwendet.

  1. Befolgen Sie die Anweisungen auf Ihrer Workstation für die Installation von Terraform und dem IBM Cloud Provider-Plug-in für Terraform.
  2. Befolgen Sie diese Anweisungen, um Ansiblezu installieren.

Ansible-Playbook

Ein Ansible-Playbook enthält die Tasks, die ausgeführt werden sollen. Das nachfolgende Beispiel umfasst eine Reihe von Tasks, die zum Installieren von nginx und zum Hochladen eines Scripts erforderlich sind. Sicher bemerken Sie die Ähnlichkeiten mit dem Script cloud-init, das an anderer Stelle bereits behandelt wurde. Das Script uploaded.sh ist identisch.

- hosts: FRONT_NIC_IP BACK_NIC_IP
  remote_user: root
  tasks:
  - name: update apt cache manual
    # this should not be required but without it the error: Failed to lock apt for exclusive operation is generated
    shell: apt update
    args:
      executable: /bin/bash
  - name: update apt cache
    apt:
      update_cache: yes
  - name: ensure nginx is at the latest version
    apt:
      name: nginx
      state: latest
    notify:
    - restart nginx
  - name: execute init.bash
    script: ./init.bash
  - name: upload execute uploaded.sh
    script: ../shared/uploaded.sh
  handlers:
    - name: restart nginx
      service:
        name: nginx
        state: restarted

Ansible-Inventar

Ansible arbeitet gleichzeitig auf mehreren Systemen in Ihrer Infrastruktur. Das Ansible-Inventar enthält eine Liste dieser Systeme. Das Tutorial enthält ein Skript inventory.bash zur Generierung des Ansible-Inventars aus der Terraform-Ausgabe.

#!/bin/bash
TF=tf
printf 'all:
  children:
    FRONT_NIC_IP:
      hosts:
        %s
    BACK_NIC_IP:
      hosts:
        %s
' $(cd $TF; terraform output -raw FRONT_NIC_IP) $(cd $TF; terraform output -raw BACK_NIC_IP)

Teilnetze und virtuelle Serverinstanzen bereitstellen

Das Verzeichnis vpc-app-deploy/ansible/tf enthält eine Terraform-Konfiguration, die der im vorherigen Abschnitt beschriebenen ähnelt, mit der Ausnahme, dass die Softwareinstallation entfernt wurde. Das Ansible-Script installiert Software von den Spiegeln und lädt dann Software von Ihrer Workstation hoch.

  1. Wechseln Sie für dieses Beispiel in den Ordner des Ansible-Scripts:
    cd $CHECKOUT_DIR/vpc-app-deploy/ansible/tf
    
  2. Initialisieren Sie Terraform:
    terraform init
    
  3. Wenden Sie den Terraform-Plan an:
    terraform apply
    
  4. Zeigen Sie die vom Plan generierte Ausgabe an:
    terraform output
    
  5. Generieren Sie das Ansible-Inventar:
    cd .. && ./inventory.bash > inventory
    
  6. Stellen Sie Software auf dem Front-End-Server bereit:
    ansible-playbook -T 40 -l FRONT_NIC_IP -u root \
      --ssh-common-args "-F ../../scripts/ssh.notstrict.config -o ProxyJump=root@$(cd tf; terraform output -raw BASTION_IP_ADDRESS)" \
      -i inventory lamp.yaml
    
  7. Stellen Sie Software auf dem Back-End-Server bereit:
    ansible-playbook -T 40 -l BACK_NIC_IP -u root \
      --ssh-common-args "-F ../../scripts/ssh.notstrict.config -o ProxyJump=root@$(cd tf; terraform output -raw BASTION_IP_ADDRESS)" \
      -i inventory lamp.yaml
    

Konfiguration der virtuellen Server testen

Nachdem Terraform nun Ressourcen bereitgestellt und Ansible die Software installiert hat, können Sie überprüfen, ob diese korrekt bereitgestellt wurden.

  1. Überprüfen Sie, ob die virtuelle Instanz des Front-End-Servers erreichbar ist und über ausgehenden Zugriff auf das Internet verfügt:
    ../test_provision.bash $(cd tf && terraform output -raw FRONT_IP_ADDRESS) INTERNET hi
    
    Die Befehlsausgabe sollte folgenden Inhalt haben:
    success: httpd default file was correctly replaced with the following contents:
    INTERNET
    success: provision of file from on premises worked and was replaced with the following contents:
    hi
    
  2. Überprüfen Sie, ob das Back-End über den Bastion-Host erreicht werden kann und keinen Zugriff auf das Internet hat:
    ../test_provision.bash $(cd tf && terraform output -raw BACK_NIC_IP) ISOLATED hi "ssh -F ../../scripts/ssh.notstrict.config root@$(cd tf && terraform output -raw FRONT_NIC_IP) -o ProxyJump=root@$(cd tf && terraform output -raw BASTION_IP_ADDRESS)"
    
    Die Befehlsausgabe sollte folgenden Inhalt haben:
    success: httpd default file was correctly replaced with the following contents:
    ISOLATED
    success: provision of file from on premises worked and was replaced with the following contents:
    hi
    

Ressourcen entfernen

  1. Entfernen Sie die durch Terraform erstellten Ressourcen:

    cd $CHECKOUT_DIR/vpc-app-deploy/ansible/tf
    

    und

    terraform destroy
    

Je nach Ressource wird diese möglicherweise nicht sofort gelöscht, sondern (standardmäßig für 7 Tage) aufbewahrt. Sie können die Ressource zurückfordern, indem Sie sie permanent löschen oder innerhalb des Aufbewahrungszeitraums wiederherstellen. In diesem Dokument erfahren Sie mehr zur Verwendung der Ressourcenrückforderung.