Início rápido: Publicar uma máquina virtual (VM) do Ubuntu como função virtualizada de rede (VNF)
Este início rápido descreve como usar a extensão az aosm
da CLI do Azure para criar e publicar uma definição básica de função de rede. Sua finalidade é demonstrar o fluxo de trabalho dos recursos do Gerenciador de Serviço do Operador do Microsoft Azure (AOSM) do Publicador. Os conceitos básicos apresentados aqui servem para preparar os usuários para criar serviços mais interessantes.
Pré-requisitos
É necessária uma conta do Azure com uma assinatura ativa. Se você não tiver uma assinatura do Azure, siga as instruções aqui Iniciar gratuitamente para criar uma conta antes de começar.
Um grupo de recursos existente onde você tem a função de Colaborador ou a função de Colaborador nessa assinatura para que a extensão CLI do AOSM possa criar o grupo de recursos.
Criar arquivo de entrada
Execute o comando a seguir para gerar o arquivo de configuração de entrada para a definição de função de rede (NFD).
az aosm nfd generate-config --definition-type vnf
Depois de executar esse comando, um arquivo vnf-input.jsonc será gerado.
Observação
Edite o arquivo vnf-input.jsonc, substituindo-o pelos valores mostrados no exemplo. Salve o arquivo como input-vnf-nfd.jsonc.
Se você estiver usando um grupo de recursos existente, altere o campo publisher_resource_group_name
para corresponder a ele.
Aqui está um arquivo input-vnf-nfd.jsonc de exemplo:
{
// Azure location to use when creating resources e.g uksouth
"location": "uksouth",
// Name of the Publisher resource you want your definition published to.
// Will be created if it does not exist.
"publisher_name": "ubuntu-publisher",
// Resource group for the Publisher resource.
// Will be created if it does not exist
"publisher_resource_group_name": "ubuntu-publisher-rg",
// Name of the ACR Artifact Store resource.
// Will be created if it does not exist.
"acr_artifact_store_name": "ubuntu-acr",
// Name of the network function.
"nf_name": "ubuntu-vm",
// Version of the network function definition in 1.1.1 format (three integers separated by dots).
"version": "1.0.0",
// If set to true, all NFD configuration parameters are made available to the designer, including optional parameters and those with defaults.
// If not set or set to false, only required parameters without defaults will be exposed.
"expose_all_parameters": false,
// Optional. Name of the storage account Artifact Store resource.
// Will be created if it does not exist (with a default name if none is supplied).
"blob_artifact_store_name": "ubuntu-blob-store",
// ARM template configuration. The ARM templates given here would deploy a VM if run. They will be used to generate the VNF.
"arm_templates": [
{
// Name of the artifact. Used as internal reference only.
"artifact_name": "ubuntu-template",
// Version of the artifact in 1.1.1 format (three integers separated by dots).
"version": "1.0.0",
// File path (absolute or relative to this configuration file) of the artifact you wish to upload from your local disk.
// Use Linux slash (/) file separator even if running on Windows.
"file_path": "ubuntu-template.json"
}
],
// VHD image configuration.
"vhd": {
// Optional. Name of the artifact. Name will be generated if not supplied.
"artifact_name": "",
// Version of the artifact in A-B-C format. Note the '-' (dash) not '.' (dot).
"version": "1-0-0",
// Supply either file_path or blob_sas_url, not both.
// File path (absolute or relative to this configuration file) of the artifact you wish to upload from your local disk.
// Leave as empty string if not required. Use Linux slash (/) file separator even if running on Windows.
"file_path": "livecd.ubuntu-cpc.azure.vhd",
// Optional. Specifies the size of empty data disks in gigabytes.
// This value cannot be larger than 1023 GB. Delete if not required.
"image_disk_size_GB": "30",
// Optional. Specifies the HyperVGenerationType of the VirtualMachine created from the image.
// Valid values are V1 and V2. V1 is the default if not specified. Delete if not required.
"image_hyper_v_generation": "V1",
// Optional. The ARM API version used to create the Microsoft.Compute/images resource.
// Delete if not required.
"image_api_version": "2023-03-01"
}
}
Variável | Descrição |
---|---|
publisher_name | Nome do recurso Publicador para o qual você deseja que sua definição seja publicada. Criado se ele não existir. |
publisher_resource_group_name | Grupo de recursos para o recurso publicador. Criado se ele não existir. |
acr_artifact_store_name | Nome do recurso do Repositório de Artefatos do ACR. Criado se ele não existir. |
local | Local do Azure a ser usado ao criar recursos. |
nf_name | Nome da definição de NF. |
version | Versão da definição de NF no formato A.B.C. |
blob_artifact_store_name | Nome do recurso de Repositório de Artefatos da conta de armazenamento. Criado se ele não existir. |
expose_all_parameters | Se todos os parâmetros de configuração de NFD devem ou não ser disponibilizados para o designer. |
arm_template | artifact_name: nome do artefato. |
file_path: opcional. Caminho do arquivo do artefato que você deseja carregar do disco local. Exclua se não for necessário. Os caminhos relativos são relativos ao arquivo de configuração. No Windows, escape de qualquer barra invertida com outra barra invertida. | |
versão: versão do artefato. Para modelos do ARM, a versão deve estar no formato A.B.C. | |
vhd | artifact_name: nome do artefato. |
file_path: opcional. Caminho do arquivo do artefato que você deseja carregar do disco local. Exclua se não for necessário. Os caminhos relativos são relativos ao arquivo de configuração. No Windows, escape de qualquer barra invertida com outra barra invertida. | |
blob_sas_url: opcional. URL da SAS do artefato de blob que você deseja copiar para o Repositório de Artefatos. Exclua se não for necessário. | |
versão: versão do artefato. Versão do artefato. Para a versão de VHDs, deve estar no formato A-B-C. | |
"image_disk_size_GB: opcional. Especifica o tamanho dos discos de dados vazios em gigabytes. Esse valor não pode ser maior que 1023 GB. Exclua se não for necessário. | |
image_hyper_v_generation: opcional. Especifica o HyperVGenerationType de VirtualMachine criado a partir da imagem. Os valores válidos são V1 e V2. V1 é o padrão se não for especificado. Exclua se não for necessário. | |
image_api_version: opcional. A versão da API do ARM usada para criar o recurso Microsoft.Compute/images. Exclua se não for necessário. |
Observação
Ao usar a opção file_path, é essencial ter uma conexão de Internet confiável com largura de banda suficiente, pois as imagens VHD normalmente são muito grandes.
Importante
Cada variável descrita na tabela anterior deve ser exclusiva. Por exemplo, o nome do grupo de recursos ainda não pode existir, e os nomes de repositório de artefatos e editor devem ser exclusivos na região.
Criar a definição de função de rede (NFD)
Para construir a definição de função de rede (NFD), inicie o processo de build.
az aosm nfd build --config-file input-vnf-nfd.jsonc --definition-type vnf
Depois que o build for concluído, examine os arquivos gerados para entender melhor a estrutura de definição de função de rede (NFD)
Esses arquivos são criados em um subdiretório chamado vnf-cli-output:
Diretório / Arquivo | Descrição |
---|---|
vnf-cli-output/artifactManifest | |
deploy.bicep | Modelo Bicep para criar o manifesto do artefato, com artefatos preenchidos do arquivo de entrada |
vnf-cli-output/artifacts | |
artifacts.json | Lista de artefatos (imagens e modelos do ARM) a serem carregados na publicação. Correlaciona-se com o manifesto do artefato |
vnf-cli-output/base | |
deploy.bicep | Modelo Bicep para criar recursos do AOSM subjacentes necessários para criar uma NF (publicador, acr, nfdg) |
vnf-cli-output/nfDefinition | |
deploy.bicep | Bicep para criar a versão de definição de função de rede (NFDV), com informações de aplicativo de função de rede do modelo do ARM fornecidas no arquivo de entrada |
deployParameters.json | Esquema que define os parâmetros de implantação necessários para criar uma função de rede (NF) a partir dessa versão de definição de função de rede (NFDV) |
<arm-template-name>-templateParameters.json | O arquivo contém os parâmetros de implantação fornecidos para a versão de definição de função de rede (NFDV) mapeada para os parâmetros necessários para o modelo do ARM da máquina virtual (VM). Esses parâmetros de modelo do ARM de VM são originados dos modelos do ARM fornecidos no arquivo de entrada |
vhdParameters.json | O arquivo contém os parâmetros de implantação fornecidos pela versão de definição de função de rede (NFDV) mapeada para os parâmetros necessários para a imagem do VHD. Os parâmetros de configuração do VHD são originados da seção VHD do arquivo de entrada |
vnf-cli-output | |
all_deploy.parameters.json | Superconjunto de todos os parâmetros de implantação da NF, fornecendo um único arquivo para personalizar nomes de recursos. A saída de valores para esse arquivo pelo comando de build é retirada do arquivo vnf-input.jsonc, mas pode ser editada neste arquivo antes de executar a publicação, por exemplo, para publicar em um local diferente ou usar um nome de publicador diferente |
index.json | Arquivo usado internamente ao publicar recursos. Não editar |
Observação
Se erros foram cometidos, a única opção a corrigir é executar novamente o comando com as seleções adequadas.
Publicar a definição de função de rede e carregar artefatos
Execute o seguinte comando para publicar a definição de função de rede (NFD) e carregar os artefatos associados:
Observação
Os nomes dos editores devem ser exclusivos em uma região. É bem provável que o “ubuntu-publisher” definido no arquivo de configuração de exemplo já exista.
Se você receber um erro que diz "Um recurso de editor privado com o nome “ubuntu-publisher” já existe na região fornecida,", edite o campo publisher_name
no arquivo de configuração para que seja exclusivo (por exemplo, adicione um sufixo de cadeia de caracteres aleatório), execute novamente o comando build
(acima) e, em seguida, execute novamente esse comando publish
.
Se você criar um design de serviço de rede, precisará usar esse novo nome de editor na matriz resource_element_templates
.
az aosm nfd publish --build-output-folder vnf-cli-output --definition-type vnf
Quando o comando for concluído, inspecione os recursos em seu Grupo de Recursos do Publicador para observar os componentes e artefatos criados.
Estes recursos são criados:
Nome do Recurso | Tipo de recurso |
---|---|
ubuntu-vm | Definição de função de rede. |
1.0.0 | Versão da definição de função de rede. |
ubuntu-publisher | Publicador. |
ubuntu-vm-acr-manifest-1-0-0 | Manifesto do Artefato do Publicador. |
ubuntu-vm-sa-manifest-1-0-0 | Manifesto do Artefato do Publicador. |
ubuntu-acr | Repositório de Artefatos do Publicador. |
ubuntu-blob-store | Repositório de Artefatos do Publicador. |