- Início
- Rede multi-cloud
- Multi-cloud networking CE-HA demo
- Implantar a demonstração
Implantar a demonstração
Pré-requisitos
Seção intitulada “Pré-requisitos”- Terraform na versão mínima definida em
terraform/versions.tf—>= 1.8, para funções definidas pelo provider e o blococheckque protege o VIP. - O provider
xcsh. Nada fixa uma versão:.terraform.lock.hclestá no gitignore e a restrição é apenas um piso aberto, portanto cadainitresolve 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 comoXCSH_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 lê 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.
Forneça os dois valores que não têm padrão
Seção intitulada “Forneça os dois valores que não têm padrão”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:
cd terraformcp terraform.tfvars.example terraform.tfvars| Variável | Por que não tem padrão |
|---|---|
origin_ip | Qualquer 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_domain | O 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:
terraform output -raw xc_tenant # what the deployment targetsterraform output -raw xc_env_tenant # what your shell claims — diagnostic onlyf5-sales-demof5-sales-demo-
Inicialize. A configuração de backend não está versionada; forneça a sua própria.
Terminal window terraform init -backend-config=backend.hcl -
Primeiro apply. Isso constrói o Azure, os sites de CE e o token de registro, e inicializa os CEs.
Terminal window terraform apply -
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
vpmse 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.
Desfaça a implantação
Seção intitulada “Desfaça a implantação”terraform destroyO 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.