Infrastrukturkomponenten mit Terraform entwickeln
Die Terraform-Module, die Sie heruntergeladen haben, enthalten separate Skripte zum Erstellen und Einrichten verschiedener Infrastrukturkomponenten. Sie können diese Skripts anzeigen und bearbeiten, um zu ermitteln, welche Komponenten erstellt werden und welche Eigenschaften jeder Komponente sind.
Die Root-Ebene des Terraform-Verzeichnisses enthält die Hauptkonfigurationsdatei main.tf,
, die die Konfigurationsdateien in verschiedenen Unterverzeichnissen referenziert. Dieses Verzeichnis enthält auch Dateien, mit denen Variablen definiert werden, die in den Terraform-Konfigurationsdateien verwendet werden, oder die Informationen über den Terraform-Provider, Datenressourcen oder die Ausgabe enthalten. Darüber hinaus befinden sich die Terraform-Konfigurationsdateien zum Erstellen von Sicherheitslisten und Routingtabellen auch auf Root-Ebene.
Das Terraform-Verzeichnis enthält ein modules
-Verzeichnis. Das Verzeichnis modules
enthält Folgendes:
-
bastion
: Wird zum Erstellen von Bastion-Hosts verwendet. -
compute
: Wird zum Erstellen von UNIX- und Windows-Oracle Cloud Infrastructure Compute-Instanzen verwendet. -
dbsystem
: Wird zum Erstellen von Oracle Cloud Infrastructure Database-Systemen verwendet. -
filesystem
: Wird zum Erstellen des Oracle Cloud Infrastructure File Storage-Dateisystems verwendet. -
loadbalancer
: Wird zum Erstellen von Oracle Cloud Infrastructure Load Balancing-Instanzen verwendet. -
network
: Wird verwendet, um Netzwerkressourcen zu erstellen, wie Virtual Cloud Network (VCN), Subnetze, Internetgateway, Servicegateway, dynamisches Routinggateway (DRG) und Network Address Translation (NAT) Gateway.
Zu erstellende Infrastrukturkomponenten
Bevor Sie Infrastrukturkomponenten erstellen, müssen Sie eine Eingabe über Typ, Zahl und Verteilung Ihrer Komponenten vornehmen. Beispiel: Sie können angeben, wie viele der erforderlichen Anwendungsinstanzen erforderlich sind, ob alle Ressourcen in einer einzigen Availability-Domain oder in zwei Availability-Domains erstellt werden sollen, welche Edition und Version der Datenbank auf Ihren DB-Systemen etc.
Sie verwenden die Datei terraform.tfvars
auf Root-Ebene des Terraform-Verzeichnisses, um diese Eingabe bereitzustellen. Öffnen Sie die Datei terraform.tfvars
in einem Texteditor, und geben Sie die erforderlichen Informationen ein. Im Verzeichnis auf Root-Ebene angegebene README
finden Sie empfohlene Werte, die Sie in dieser Datei verwenden können.
Die Terraform-Module werden standardmäßig in zwei Availability-Domains erstellt. Dies wird durch den Wert der Variable AD
in der Datei terraform.tfvars
gesteuert. Sie können die Availability-Domains, mit denen Ihre Infrastrukturkomponenten gehostet werden, anzeigen oder ändern, indem Sie diesen Wert bearbeiten. Wenn Sie Komponenten in einer einzelnen Availability-Domain erstellen möchten, setzen Sie den Wert AD
auf die erforderliche Availability-Domain 1, 2, or 3,
in der Datei terraform.tfvars
. Wenn Sie Komponenten in zwei Availability-Domains erstellen möchten, geben Sie die Anzahl der Availability-Domains an, oder ändern Sie diese.
Wenn Sie die Terraform-Konfigurationsdateien mit den vorgeschlagenen Standardwerten anwenden, ohne Änderungen vorzunehmen, werden die folgenden Infrastrukturkomponenten in zwei Availability-Domains erstellt.
-
Ein VCN mit dem Namen
psftvcn
und dem IP-Adressbereich172.16.0.0/16.
-
Sechste Subnetze, acht in jeder Availability-Domain. Jedes Subnetz hat einen
/24
CIDR. Beispiel:172.16.4.0/24.
Die Zahl, die als Suffix für den Namen jedes Subnetzes dient, gibt die Availability-Domain an, in der das Subnetz erstellt wird.-
Private Subnetze für die Anwendungsserver mit dem Namen
appsubad1
undappsubad2
. -
Private Subnetze für die Webserver mit dem Namen
websubad1
undwebsubad2
. -
Private Subnetze für die Load Balancer mit dem Namen
lbsubad1
undlbsubad2
. -
Private Subnetze für die Datenbanksysteme mit dem Namen
dbsubad1
unddbsubad2
. -
Private Subnetze für die ElasticSearch-Server mit dem Namen
essubad1
undessubad2
-
Private Subnetze für die PeopleTools-Instanzen mit dem Namen
toolsssubad1
undtoolssubad2
. -
Private Subnetze für den Dateisystem-Service mit dem Namen
fsssubad1
undfsssubad2
. -
Öffentliche Subnetze für die Bastion-Hosts mit dem Namen
bassubad1
undbassubad2
.
-
-
Die folgenden Routingtabellen. Das DNS-Label für das in der Datei
terraform.tfvars
angegebene VCN wird dem Namen jeder Routingtabelle vorangestellt.-
Die Standard-Routingtabelle ohne Regeln.
-
Eine private Routingtabelle (
psftvcnpvtrt,
), die Regeln zum Weiterleiten des Object Storage-Datenverkehrs an das Servicegateway und den gesamten anderen Datenverkehr an die NAT-Instanz verwendet. -
Eine öffentliche Routingtabelle,
psftvcnpubrt,
, die eine Routeregel für die Weiterleitung des Verkehrs an das Internetgateway enthält.
-
-
Die folgenden Sicherheitslisten:
-
Die Standardsicherheitsliste.
-
Eine Sicherheitsliste für das Subnetz der Anwendungsserver mit dem Namen
AppSecList
. -
Eine Sicherheitsliste für das Subnetz der Bastion-Hosts mit dem Namen
BastionSecList
. -
Eine Sicherheitsliste für das Datenbank-Subnetz mit dem Namen
DBSecList
. -
Eine Sicherheitsliste für das ElasticSearch-Server-Subnetz mit dem Namen
ESSecList
. -
Eine Sicherheitsliste für das Subnetz des Dateisystemservers mit dem Namen
FSSSecList
. -
Eine Sicherheitsliste für das Load Balancer-Subnetz mit dem Namen
LBSecList
. -
Eine Sicherheitsliste für das PeopleTools-Subnetz mit dem Namen
PToolsSecList
. -
Eine Sicherheitsliste für das Subnetz des Webservers mit dem Namen
WebSecList
.
-
-
Ein Internetgateway mit dem Namen
psftvcnigw.
Dem in der Dateiterraform.tfvars
angegebenen DNS-Label wird der Name des Internetgateways vorangestellt. Das Internetgateway verbindet den Rand des Cloud-Netzwerks mit dem Internet. Der Datenverkehr von Ihrem VCN zu einer öffentlichen IP-Adresse außerhalb des VCNs verläuft über das Internetgateway. -
Ein dynamisches Routinggateway mit dem Namen
psftvcndrg.
Der in der Dateiterraform.tfvars
angegebene DNS-Labelname wird dem Namen des dynamischen Routinggateways vorangestellt. Das dynamische Routinggateway stellt einen Pfad für den Datenverkehr zwischen Ihrem VCN und anderen Zielen als dem Internet bereit (Beispiel: Datenverkehr zu Ihrem On-Premise-Netzwerk über IPSec VPN oder Oracle Cloud Infrastructure FastConnect oder Datenverkehr zu einem VCN in einem anderen Bereich mit Remote-VCN-Peering). -
Ein Servicegateway mit dem Namen
psftvcnsvcgtw.
Der DNS-Labelname, der in der Dateiterraform.tfvars
angegeben wird, wird dem Namen des Service-Gateways vorangestellt. Mit dem Servicegateway kann Ihr VCN auf öffentliche Oracle Cloud Infrastructure-Services wie Oracle Cloud Infrastructure Object Storage zugreifen, ohne das VCN für das öffentliche Internet zugänglich zu machen. -
Die folgenden Oracle Cloud Infrastructure Compute-Instanzen, in beiden Availability-Domains verteilt. Das in der Datei
terraform.tfvars
angegebene Umgebungspräfix wird dem Namen jeder Instanz vorangestellt, und die Region, die Availability-Domainnummer und die Anzahl werden als Suffix verwendet. Jede Instanz verfügt über ein verknüpftes Boot-Volume.-
Anwendungsserver. Die Anzahl der erstellten Application Server-Instanzen und deren Formen wird von den Werten bestimmt, die Sie in der Datei
terraform.tfvars
angeben. -
Bastion-Hosts.
-
-
Zwei Oracle Cloud Infrastructure Database-Systeme, eines in jeder Availability-Domain. Name, Version, Edition und andere Eigenschaften der Oracle Cloud Infrastructure Database-Systeme werden durch Werte bestimmt, die Sie in der Datei
terraform.tfvars
angeben. Oracle Cloud Infrastructure Database-Systeme werden im Subnetz der Datenbankdbsubad1
unddbsubad2.
erstellt. -
Ein für das Staging der PeopleSoft-Software verwendetes Dateisystem wird erstellt. Das Dateisystem wird im Subnetz des Dateisystems,
fssubad1
, erstellt. Das Dateisystem ist über alle Oracle Cloud Infrastructure Compute-Instanzen hinweg gemountet. -
Zwei Load Balancer, einer in jeder Availability-Domain. Dem in der Datei
terraform.tfvars
angegebenen Umgebungspräfix wird der Name jedes Load Balancers vorangestellt. Der Bereich und die Anzahl werden als Suffix vorangestellt. Die Load Balancer befinden sich im Subnetz des Webservers,websubad1
undwebsubad2.
Das Backend-Set und die Listener für die Load Balancer werden ebenfalls erstellt.
Infrastrukturkomponenten mit Terraform erstellen
Nachdem Sie Terraform zusammen mit dem OCI-Provider installiert und die Umgebungsvariablen auf Ihrem lokalen System festgelegt haben, können Sie die Terraform-Module anwenden, um die Infrastrukturkomponenten in Oracle Cloud Infrastructure zu erstellen.
- Öffnen Sie auf Ihrem lokalen System ein Terminal, oder starten Sie Windows PowerShell. Navigieren Sie in das Verzeichnis, in dem sich die Terraform-Module befinden.
- Geben Sie Folgendes ein:
terraform apply
- Wenn Sie zur Bestätigung der Aktion aufgefordert werden, geben Sie
yes.
ein.
Apply complete! Resources: 90 added, 0 changed, 0 destroyed.
Im Abschnitt Outputs
der Befehlsausgabe zeigt Terraform die öffentlichen und privaten IP-Adressen der erstellten Instanzen an. Notieren Sie sich die IP-Adressen der Instanzen, zu denen Sie eine Verbindung herstellen möchten.
Wenn Fehler auftreten, können Sie diese Fehler beheben und terraform apply
erneut ausführen. Stellen Sie sicher, dass Sie diesen Befehl im Verzeichnis erneut ausführen, in dem Sie diesen Befehl zum ersten Mal ausgeführt haben. Terraform prüft den aktuellen Status Ihrer Komponenten und erstellt die nicht vorhandenen Komponenten. Beachten Sie jedoch Folgendes: Wenn Sie Terraform in einem anderen Verzeichnis oder aus einem anderen lokalen System mit denselben Terraform-Modulen ausführen, behandelt Terraform dies als neues Setup und erstellt alle in den verschiedenen Konfigurationsdateien angegebenen Ressourcen. Wenn Sie Terraform in einem anderen Verzeichnis oder lokalen System ausführen möchten, um vorhandene Ressourcen zu verwalten, kopieren Sie die Terraform-Statusdateien aus dem vorhandenen Verzeichnis in das neue Verzeichnis oder System. Im Allgemeinen wird jedoch empfohlen, dass Sie Terraform nicht In einem System oder Verzeichnis verwenden, um Komponenten zu verwalten, die von Terraform In einem anderen System oder Verzeichnis erstellt wurden.