Introdução à Automação de Infraestrutura no Ecossistema Sangfor
A virtualização moderna exige agilidade, consistência e escalabilidade. Em ambientes corporativos que utilizam soluções de Sangfor HCI (Hyper-Converged Infrastructure), a capacidade de provisionar máquinas virtuais (VMs) de forma manual é suficiente para pequenos cenários, mas torna-se um gargalo crítico em operações de médio e grande porte. A automatização do deploy de VMs não é apenas uma questão de conveniência; é um pilar fundamental da infraestrutura como código (IaC) e da orquestração de nuvem privada.
Neste tutorial, abordaremos o processo técnico para automatizar a criação de instâncias virtuais em um ambiente Sangfor. Utilizaremos a API RESTful fornecida pela plataforma Sangfor vCenter ou módulo de gerenciamento HCI, que é o método padrão e mais robusto para integração com ferramentas de orquestração como Ansible, Terraform ou scripts personalizados em Python/Bash. O foco será na construção de um pipeline lógico que garante a criação consistente de recursos, desde a seleção do template até a configuração de rede.
Pré-requisitos e Preparação do Ambiente
Antes de executar qualquer comando ou script, é essencial garantir que o ambiente esteja preparado para receber as requisições de automação. A comunicação entre o sistema orquestrador (seu servidor de controle) e a infraestrutura Sangfor deve ser segura e autenticada.
- Acesso API: Verifique se a conta de serviço utilizada possui permissões adequadas para criar VMs, atribuir recursos de CPU/RAM e configurar interfaces de rede. Evite usar credenciais de administrador root em scripts automatizados por questões de segurança; crie uma conta dedicada com escopo limitado.
- Template Base: Para agilizar o deploy de VMs, é recomendável ter pelo menos um template pré-configurado no sistema de armazenamento do HCI. Esse template deve conter o sistema operacional base e os agentes necessários (ex: Sangfor Guest Tool) instalados.
- Ferramentas de Linha de Comando: Instale o
curlou ferramentas HTTP comohttpiepara testes iniciais. Para automação robusta, recomenda-se o uso de Python com a bibliotecarequests.
Autenticação na Plataforma Sangfor HCI
O primeiro passo em qualquer interação com a API do Sangfor é obter um token de sessão ou credenciais temporárias. A maioria das versões recentes do HCI Sangfor utiliza endpoints específicos para autenticação OAuth2 ou tokens de sessão baseados em cookie.
Vamos utilizar o método padrão de login via endpoint JSON. Suponha que o endereço IP do seu controlador de gerenciamento seja 192.168.10.5.
curl -X POST "https://192.168.10.5/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{
"username": "admin_automation",
"password": "SuaSenhaSeguraAqui",
"tenantId": "default_tenant"
}'
A resposta bem-sucedida conterá um objeto JSON com o token ou sessionId. É crucial armazenar este valor em uma variável de ambiente para ser utilizado nas requisições subsequentes. Sem este token, todas as chamadas seguintes retornarão erro 401 Unauthorized.
Dica de Segurança: Nunca hardcode tokens ou senhas em scripts públicos. Utilize gerenciadores de segredos ou variáveis de ambiente protegidas.
Descoberta de Recursos: Templates e Datastores
Antes de criar uma VM, precisamos saber quais recursos estão disponíveis. A API permite listar templates armazenados e datastores conectados ao cluster HCI. Isso é vital para garantir que o deploy ocorra em um local com espaço suficiente e no sistema operacional correto.
Listando Templates Disponíveis
Utilize o endpoint de listagem de imagens ou templates. O comando abaixo demonstra como consultar os recursos disponíveis:
curl -X GET "https://192.168.10.5/api/v1/templates" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json"
Analyze a resposta JSON para identificar o templateId da imagem base desejada (ex: Ubuntu 22.04 LTS). Anote também o datastoreId associado, caso seja necessário especificar onde os discos serão provisionados.
Verificando Recursos de Computação e Rede
Você precisará do ID do cluster ou host para alocar os recursos. Além disso, defina a rede lógica (VLAN ou Sub-rede) onde a nova VM residirá. A API geralmente expõe uma lista de redes disponíveis:
curl -X GET "https://192.168.10.5/api/v1/networks" \
-H "Authorization: Bearer SEU_TOKEN_AQUI"
Identifique o networkId correspondente à sua rede de produção ou desenvolvimento.
Construção do Payload de Criação da VM
A etapa crítica é a montagem do payload JSON que define as características da máquina virtual. Um deploy automatizado exige que este JSON seja gerado dinamicamente, inserindo valores únicos para cada nova instância, como nomes de host e endereços IP.
O objeto de criação geralmente segue esta estrutura lógica:
- name: Nome único da VM (ex:
web-server-01). - templateId: ID do template base encontrado anteriormente.
- cpuCount: Número de vCPUs.
- memorySizeMB: Quantidade de memória em MB.
- diskConfigs: Lista de configurações de disco (tamanho, tipo de provisionamento).
- networkConfigs: Configuração de NICs (MAC address estático ou DHCP, networkId).
Abaixo, um exemplo prático de payload JSON para criação de uma VM leve:
{
"name": "app-node-01",
"templateId": "tmpl_ubuntu_2204_v1",
"cpuCount": 2,
"memorySizeMB": 4096,
"diskConfigs": [
{
"sizeGB": 50,
"provisioningType": "thin"
}
],
"networkConfigs": [
{
"networkId": "net_prod_vlan_100",
"ipAddress": "10.20.30.50",
"macAddress": null
}
],
"hostId": null
}
Note o uso de "provisioningType": "thin". Em ambientes HCI, isso é padrão para economizar espaço no armazenamento distribuído. O campo hostId pode ser nulo se você desejar que o scheduler do Sangfor decida a melhor localização baseada em recursos (HA/DRA).
Executando o Deploy da Máquina Virtual
Com o payload pronto e o token de autenticação válido, enviamos a requisição POST para o endpoint de criação de VMs.
curl -X POST "https://192.168.10.5/api/v1/vms" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d @payload_vm.json
Onde @payload_vm.json aponta para o arquivo contendo o JSON estruturado acima.
Analisando a Resposta e Status da Operação
A API do Sangfor HCI geralmente não retorna a VM finalizada instantaneamente, pois o provisionamento de disco e inicialização leva tempo. A resposta padrão será uma operação assíncrona:
{
"taskId": "task_98765_create_vm",
"status": "RUNNING",
"message": "VM creation initiated successfully"
}
O campo taskId é fundamental. Você deve usar este ID para monitorar o progresso da operação através de um endpoint de status de tarefa.
curl -X GET "https://192.168.10.5/api/v1/tasks/task_98765_create_vm" \
-H "Authorization: Bearer SEU_TOKEN_AQUI"
Aguarde até que o status mude para SUCCESS. Se retornar FAILED, verifique a mensagem de erro na resposta, que indicará se houve falha de espaço em disco, conflito de IP ou permissão negada.
Pós-Deploy: Configuração Inicial e Integração com DNS
A criação da VM é apenas metade do trabalho. Para uma infraestrutura verdadeiramente automatizada, a nova instância precisa ser integrada ao resto do ecossistema. Isso inclui registro no DNS interno e execução de scripts de bootstrap.
Monitoramento de Estado da Rede
Após o sucesso da tarefa, a VM estará ligada, mas o sistema operacional pode ainda estar carregando. Para garantir que o serviço está acessível, é comum implementar um loop de verificação no script de automação:
while true; do
if ping -c 1 -W 2 10.20.30.50 > /dev/null; then
echo "VM está online."
break
fi
sleep 5
done
Este é um método básico. Em ambientes profissionais, recomenda-se usar a API para verificar se o estado da VM mudou para POWERED_ON e se os serviços do Sangfor Guest Tool estão respondendo, o que indica que o sistema operacional está totalmente inicializado.
Execução de Scripts de Bootstrap
Para aplicar configurações específicas (instalar agentes de monitoramento, configurar firewalls locais), utilize mecanismos de user-data ou scripts de inicialização. Se o seu template suportar Cloud-Init, você pode injetar um script shell diretamente no momento do deploy:
# Exemplo de injeção via API (estrutura simplificada)
"user_data": "#!/bin/bash\napt-get update && apt-get install -y htop"
Se o Cloud-Init não estiver configurado no template, a abordagem recomendada é usar uma ferramenta externa como Ansible. Assim que a VM fica acessível via SSH (com chaves pré-distribuídas no template), o Ansible assume o controle para aplicar as configurações finais.
Orquestração com Ferramentas de Terceiros
Embora a API REST seja poderosa, integrar chamadas curl em scripts bash torna-se rapidamente insustentável para ambientes complexos. A indústria padrão para automatização em infraestruturas como o Sangfor HCI envolve o uso de provedores específicos.
Integração com Terraform
O Terraform é a ferramenta líder para IaC. Embora não haja um provedor oficial público mantido pela Sangfor para todos os mercados, muitas organizações desenvolvem provedores personalizados (custom providers) baseados na documentação da API REST ou utilizam o provedor genérico restapi do Terraform.
Um exemplo conceitual de recurso no Terraform usando o provedor genérico:
Esta abordagem permite versionar toda a infraestrutura de virtualização, permitindo rollback e auditoria completa das alterações.
Integração com Ansible
O Ansible é excelente para configuração pós-provisionamento. Módulos personalizados podem ser escritos em Python para interagir com a API do Sangfor, ou módulos genéricos de URI podem ser usados:
- name: Criar VM no Sangfor
uri:
url: "https://192.168.10.5/api/v1/vms"
method: POST
headers:
Authorization: "Bearer {{ ansible_token }}"
Content-Type: "application/json"
body_format: json
body: "{{ vm_spec }}"
register: create_vm_result
- name: Aguardar finalização da VM
uri:
url: "https://192.168.10.5/api/v1/tasks/{{ create_vm_result.taskId }}"
method: GET
headers:
Authorization: "Bearer {{ ansible_token }}"
register: task_status
until: task_status.status == 'SUCCESS'
retries: 30
delay: 10
Melhores Práticas para Produção
Ao implementar a automatização de virtualização no Sangfor HCI, considere as seguintes práticas para garantir estabilidade e segurança:
Gestão de Erros: Sempre implemente tratamento de exceções. Se um deploy falhar, o script deve limpar recursos parciais (ex: discos órfãos) para não consumir espaço desnecessário.Rate Limiting: Respeite os limites de requisições da API. Implemente delays exponenciais entre tentativas se você estiver provisionando centenas de VMs simultaneamente.Logs e Auditoria: Centralize os logs das operações de deploy. A API do Sangfor mantém registros internos, mas ter um log externo das chamadas feitas pelo seu sistema de automação é vital para troubleshooting.Versionamento de Templates: Nunca use o ID genérico do template. Use tags ou nomes descritivos e versionados (ex:template-v2.1-ubuntu) para evitar que atualizações não testadas no template base quebrem suas VMs automatizadas.
Conclusão
A automação do deploy de máquinas virtuais em ambientes Sangfor HCI transforma a infraestrutura de um ativo estático em um recurso dinâmico e escalável. Ao dominar a API REST, compreender o ciclo de vida das tarefas assíncronas e integrar essas operações com ferramentas como Terraform ou Ansible, equipes de TI podem reduzir drasticamente o tempo de provisionamento e eliminar erros humanos.
Lembre-se: a chave para uma orquestração bem-sucedida não está apenas nos comandos, mas na consistência dos templates e na robustez do tratamento de erros. Comece com automações simples, valide cada etapa via logs da API e evolua gradualmente para pipelines complexos de entrega contínua de infraestrutura.