Compartilhar via


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

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.

Próximas etapas