Zum Inhalt springen

Demo bereitstellen

  • Terraform in der in terraform/versions.tf festgelegten Mindestversion — >= 1.8, für providerdefinierte Funktionen und den check-Block, der die VIP absichert.
  • Der xcsh-Provider. Keine Version wird festgelegt: .terraform.lock.hcl ist gitignored und die Einschränkung ist eine offene Untergrenze, sodass jedes init die neueste veröffentlichte Version auflöst. Das ist für ein Prerelease-Projekt beabsichtigt — die Demo soll bei einer Provider-Regression fehlschlagen, statt auf einer veralteten Version zu verharren, die sie verbirgt.
  • Ein F5 XC API-Credential für den Tenant in var.expected_xc_tenant, exportiert als XCSH_API_TOKEN (oder das P12/PEM-Paar). Exportieren Sie ausschließlich das Credential, niemals eine URL — siehe unten.
  • Azure-Credentials mit Rechten zum Erstellen einer Ressourcengruppe, eines VNet, eines Route Servers und von VMs.
  • Ein bereits vorhandener F5 XC Namespace für die App-Ebene. Die Bereitstellung liest ihn und erstellt oder löscht ihn niemals, sodass ein Namespace mit unabhängigen Demos niemals auf der Destroy-Liste dieses Stacks landen kann.

Jede andere Variable hat einen funktionierenden Standardwert, und jeder Objektname wird aus var.component abgeleitet. Zwei bleiben absichtlich ohne:

Terminal-Fenster
cd terraform
cp terraform.tfvars.example terraform.tfvars
VariableWarum sie keinen Standardwert hat
origin_ipJeder Standardwert ist eine bestimmte Maschine. Ein veralteter schickt den Datenverkehr einer frischen Bereitstellung an den Host einer anderen Person, statt fehlzuschlagen.
lb_domainDer Load Balancer gleicht anhand von Host ab, also muss jede Anfrage genau diesen Wert senden. Er gehört demjenigen, der die Bereitstellung betreibt.

Beide werden formatvalidiert, sodass ein Tippfehler den Plan scheitern lässt und nicht die Demo.

terraform.tfvars ist gitignored und muss das bleiben: es enthält eine Subscription-ID und Werte pro Engineer.

Der Tenant ist Konfiguration, nicht das, was Ihre Shell exportiert

Abschnitt betitelt „Der Tenant ist Konfiguration, nicht das, was Ihre Shell exportiert“

var.expected_xc_tenant benennt den Tenant und ist die einzige Stelle, an der er benannt wird. providers.tf leitet daraus die api_url des xcsh-Providers ab, was bewusst jedes XCSH_API_URL aus der Umgebung überschreibt, und eine postcondition in terraform/main.tf lässt den Plan fehlschlagen, wenn die Umgebung einen anderen Tenant benennt.

Lesen Sie eine der beiden Hälften, ohne etwas auszuführen, das den Zustand verändert:

Terminal-Fenster
terraform output -raw xc_tenant # what the deployment targets
terraform output -raw xc_env_tenant # what your shell claims — diagnostic only
f5-sales-demo
f5-sales-demo
  1. Initialisieren. Die Backend-Konfiguration ist nicht eingecheckt; geben Sie Ihre eigene an.

    Terminal-Fenster
    terraform init -backend-config=backend.hcl
  2. Erstes Apply. Dies erstellt Azure, die CE-Sites und das Registrierungstoken und startet die CEs.

    Terminal-Fenster
    terraform apply
  3. Erneut ausführen, sobald die CEs registriert sind. Das ist nicht optional, und der Grund steht unten, statt dass Sie ihn selbst herausfinden müssen.

    Terminal-Fenster
    terraform apply

Gehen Sie dann zu Funktionsfähigkeit nachweisen, bevor Sie sie jemandem zeigen.

Die Registrierungsgenehmigung ist automatisiert, und das Apply bleibt zweiphasig

Abschnitt betitelt „Die Registrierungsgenehmigung ist automatisiert, und das Apply bleibt zweiphasig“

Die Registrierungsgenehmigung benötigt keinen Menschen in der Konsole mehr: die Ressource xcsh_registration_approval führt sie durch, und das Site-Modul ermittelt, welche Registrierung zu genehmigen ist.

Das macht die Bereitstellung dennoch nicht zu einem einzigen unbeaufsichtigten apply, und der Grund ist es wert, verstanden zu werden, bevor Sie einen ersten Durchlauf beobachten und schließen, er sei fehlgeschlagen:

  • Das Registrierungsobjekt eines CE heißt r-<uuid>. Es wird niemals nach der Site benannt, sodass zur Planzeit niemand den Namen vorhersagen kann.
  • Die Registrierung existiert erst, nachdem die VM gebootet hat und vpm sich registriert hat.
  • Daher plant das erste Apply überhaupt keine Genehmigung. Führen Sie erneut ein Apply aus, sobald die CEs registriert sind, und die Genehmigungen werden erstellt.

terraform/main.tf dokumentiert diese Reihenfolge am Anfang der Datei, und das ist die maßgebliche Version — die Bereitstellungssequenz liegt beim Code, der sie umsetzt.

Die Bereitstellung schreibt einen Operator-Schlüssel in das admin-Konto der Appliance, dessen Login-Shell die Site-CLI ist. Er wird per cloud-init write_files geschrieben, was einmalig beim ersten Boot ausgeführt wird.

Terminal-Fenster
terraform destroy

Der App-Namespace überlebt: er wird gelesen, nie verwaltet, sodass destroy keinen Namespace mitnehmen kann, der unabhängige Demos enthält. Alles andere in der Ressourcengruppe verschwindet.