Salta ai contenuti

Distribuire la demo

  • Terraform alla versione minima indicata in terraform/versions.tf>= 1.8, per le funzioni definite dal provider e il blocco check che protegge il VIP.
  • Il provider xcsh. Nulla fissa una versione: .terraform.lock.hcl è in gitignore e il vincolo è una soglia minima aperta, quindi ogni init risolve l’ultima release pubblicata. È una scelta deliberata per un progetto in prerelease — la demo deve fallire su una regressione del provider anziché rimanere su una versione obsoleta che la nasconde.
  • Una credenziale API F5 XC per il tenant in var.expected_xc_tenant, esportata come XCSH_API_TOKEN (o la coppia P12/PEM). Esportare solo la credenziale, mai un URL — vedere sotto.
  • Credenziali Azure con i diritti per creare un gruppo di risorse, una VNet, un Route Server e delle VM.
  • Un namespace F5 XC preesistente per il tier applicativo. La distribuzione lo legge e non lo crea né lo distrugge mai, quindi un namespace che contiene demo non correlate non potrà mai finire nell’elenco di destroy di questo stack.

Fornire i due valori che non hanno un valore predefinito

Sezione intitolata “Fornire i due valori che non hanno un valore predefinito”

Ogni altra variabile ha un valore predefinito funzionante e ogni nome di oggetto deriva da var.component. Due sono deliberatamente lasciate senza:

Terminal window
cd terraform
cp terraform.tfvars.example terraform.tfvars
VariabilePerché non ha un valore predefinito
origin_ipQualsiasi valore predefinito è una macchina specifica. Uno obsoleto invia il traffico di una nuova distribuzione all’host di qualcun altro invece di fallire.
lb_domainIl load balancer effettua il match su Host, quindi questo è ciò che ogni richiesta deve inviare. Appartiene a chi gestisce la distribuzione.

Entrambe sono validate nel formato, così un errore di battitura fa fallire il plan e non la demo.

terraform.tfvars è in gitignore e deve rimanervi: contiene un id di sottoscrizione e valori specifici per ciascun engineer.

Il tenant è configurazione, non ciò che la vostra shell sta esportando

Sezione intitolata “Il tenant è configurazione, non ciò che la vostra shell sta esportando”

var.expected_xc_tenant indica il nome del tenant ed è l’unico posto in cui viene indicato. providers.tf deriva da essa l’api_url del provider xcsh, sovrascrivendo deliberatamente qualsiasi XCSH_API_URL presente nell’ambiente, e una postcondition in terraform/main.tf fa fallire il plan quando l’ambiente indica un tenant diverso.

Leggete una delle due metà senza eseguire nulla che modifichi lo stato:

Terminal window
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. Inizializzate. La configurazione del backend non è committata; fornite la vostra.

    Terminal window
    terraform init -backend-config=backend.hcl
  2. Primo apply. Questo crea Azure, i siti CE e il token di registrazione, e avvia i CE.

    Terminal window
    terraform apply
  3. Eseguite di nuovo l’apply dopo che i CE si sono registrati. Non è opzionale, e la ragione è riportata sotto anziché essere qualcosa che scoprite da soli.

    Terminal window
    terraform apply

Poi passate a verificarne lo stato di salute prima di mostrarla a qualcuno.

L’approvazione della registrazione è automatizzata, e l’apply è ancora a due fasi

Sezione intitolata “L’approvazione della registrazione è automatizzata, e l’apply è ancora a due fasi”

L’approvazione della registrazione non richiede più un intervento umano nella console: la risorsa xcsh_registration_approval la esegue e il modulo del sito determina quale registrazione approvare.

Questo non rende comunque la distribuzione un unico apply senza interventi, e la ragione vale la pena di essere compresa prima di osservare una prima esecuzione e concludere che è fallita:

  • L’oggetto di registrazione di un CE si chiama r-<uuid>. Non prende mai il nome dal sito, quindi nulla può prevedere il nome al momento del plan.
  • La registrazione esiste solo dopo che la VM si è avviata e vpm si è registrato.
  • Perciò il primo apply non pianifica alcuna approvazione. Rieseguite l’apply dopo che i CE si sono registrati e le approvazioni vengono create.

terraform/main.tf documenta questo ordinamento all’inizio del file, che è la versione autorevole — la sequenza di distribuzione risiede insieme al codice che la implementa.

L’SSH per l’operatore è una decisione da prendere in fase di build

Sezione intitolata “L’SSH per l’operatore è una decisione da prendere in fase di build”

La distribuzione scrive una chiave operatore nell’account admin dell’appliance, la cui shell di login è la Site CLI. Viene scritta da write_files di cloud-init, che viene eseguito una sola volta al primo avvio.

Terminal window
terraform destroy

Il namespace dell’applicazione sopravvive: viene letto, mai gestito, quindi destroy non può portarsi via un namespace che contiene demo non correlate. Tutto il resto nel gruppo di risorse viene eliminato.