Pular para o conteúdo

Implantar a demonstração

  • Terraform na versão mínima definida em terraform/versions.tf>= 1.8, para funções definidas pelo provider e o bloco check que protege o VIP.
  • O provider xcsh. Nada fixa uma versão: .terraform.lock.hcl está no gitignore e a restrição é apenas um piso aberto, portanto cada init resolve para a última versão publicada. Isso é deliberado em um projeto em pré-lançamento — a demonstração deve falhar diante de uma regressão do provider em vez de permanecer em uma versão obsoleta que a esconda.
  • Uma credencial de API do F5 XC para o tenant em var.expected_xc_tenant, exportada como XCSH_API_TOKEN (ou o par P12/PEM). Exporte apenas a credencial, nunca uma URL — veja abaixo.
  • Credenciais do Azure com permissões para criar um grupo de recursos, VNet, Route Server e VMs.
  • Um namespace do F5 XC pré-existente para a camada de aplicação. A implantação o e nunca o cria ou destrói, então um namespace que contenha demonstrações não relacionadas nunca pode entrar na lista de destruição desta stack.

Todas as outras variáveis têm um padrão funcional, e todo nome de objeto deriva de var.component. Duas foram deliberadamente deixadas sem um:

Terminal window
cd terraform
cp terraform.tfvars.example terraform.tfvars
VariávelPor que não tem padrão
origin_ipQualquer padrão é uma máquina específica. Um valor obsoleto envia o tráfego de uma nova implantação para o host de outra pessoa em vez de falhar.
lb_domainO load balancer faz a correspondência pelo Host, então é isso que toda requisição precisa enviar. Ele pertence a quem executa a implantação.

Ambas têm o formato validado, portanto um erro de digitação faz o plan falhar em vez da demonstração.

terraform.tfvars está no gitignore, e deve permanecer assim: ele carrega um id de subscription e valores por engenheiro.

O tenant é configuração, não o que seu shell está exportando

Seção intitulada “O tenant é configuração, não o que seu shell está exportando”

var.expected_xc_tenant nomeia o tenant e é o único lugar em que ele é nomeado. providers.tf deriva o api_url do provider xcsh a partir dela, o que deliberadamente sobrescreve qualquer XCSH_API_URL no ambiente, e uma postcondition em terraform/main.tf faz o plan falhar quando o ambiente nomeia um tenant diferente.

Leia qualquer uma das duas metades sem executar nada que altere o estado:

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. Inicialize. A configuração de backend não está versionada; forneça a sua própria.

    Terminal window
    terraform init -backend-config=backend.hcl
  2. Primeiro apply. Isso constrói o Azure, os sites de CE e o token de registro, e inicializa os CEs.

    Terminal window
    terraform apply
  3. Aplique novamente depois que os CEs tiverem se registrado. Isso não é opcional, e o motivo está abaixo em vez de ser algo que você descobre.

    Terminal window
    terraform apply

Depois vá para comprovar que está saudável antes de mostrar a alguém.

A aprovação de registro é automatizada, e o apply continua sendo em duas fases

Seção intitulada “A aprovação de registro é automatizada, e o apply continua sendo em duas fases”

A aprovação de registro não precisa mais de um humano no console: o recurso xcsh_registration_approval a realiza, e o módulo de site resolve qual registro aprovar.

Isso ainda não torna a implantação um único apply sem intervenção, e vale a pena entender o motivo antes de assistir a uma primeira execução e concluir que ela falhou:

  • O objeto de registro de um CE é nomeado r-<uuid>. Ele nunca recebe o nome do site, então nada pode prever o nome no momento do plan.
  • O registro só existe depois que a VM inicializou e o vpm se registrou.
  • Portanto, o primeiro apply não planeja nenhuma aprovação. Aplique novamente depois que os CEs se registrarem e as aprovações serão criadas.

terraform/main.tf documenta essa ordenação no topo do arquivo, que é a versão autoritativa — a sequência de implantação vive junto com o código que a implementa.

O SSH do operador é uma decisão de tempo de build

Seção intitulada “O SSH do operador é uma decisão de tempo de build”

A implantação grava uma chave de operador na conta admin do appliance, cujo shell de login é a Site CLI. Ela é gravada pelo write_files do cloud-init, que roda uma única vez no primeiro boot.

Terminal window
terraform destroy

O namespace da aplicação sobrevive: ele é lido, nunca gerenciado, então destroy não pode levar consigo um namespace que contenha demonstrações não relacionadas. Todo o resto no grupo de recursos é removido.