Compartilhar via


Usar a ação de logon do Azure com a CLI do Azure e o PowerShell no Azure Stack Hub

Você pode configurar GitHub Actions entrar na instância do Azure Stack Hub, executar o PowerShell e executar um script da CLI do Azure. Você pode usar isso como base de um fluxo de trabalho de CI/CD (integração contínua e implantação contínua) para sua solução com o Azure Stack Hub. Com esse fluxo de trabalho, você pode automatizar a criação, o teste e a implantação da solução para que você possa se concentrar na escrita de código. Por exemplo, adicionando algumas outras ações, você pode usar esse fluxo de trabalho junto com um modelo do Azure Resource Manager para provisionar uma VM, validar um repositório de aplicativos e, em seguida, implantar um aplicativo nessa VM sempre que você mesclar a uma ramificação específica no GitHub. Por enquanto, este artigo ajudará você a se orientar com o GitHub Actions e o Azure Stack Hub.

GitHub Actions são fluxos de trabalho compostos por ações que habilitam a automação diretamente dentro do repositório de código. Você pode disparar os fluxos de trabalho com eventos em seu processo de desenvolvimento do GitHub. Você pode executar tarefas comuns de automação do DevOps, como teste, implantação e integração contínua.

Para usar GitHub Actions com o Azure Stack Hub, você deve usar uma SPN (entidade de serviço) com requisitos específicos. Neste artigo, você criará um executor auto-hospedado. O GitHub permite que você use qualquer computador que possa ser acessado pelo GitHub em seu GitHub Actions. Você pode criar uma VM (máquina virtual) como executor no Azure, no Azure Stack Hub ou em outro lugar.

Este exemplo de fluxo de trabalho inclui:

  • Instruções sobre como criar e validar seu SPN.
  • Configurar um computador principal do Windows 2016 Server como GitHub Actions executor auto-hospedado para trabalhar com o Azure Stack Hub.
  • Um fluxo de trabalho que usa:
    • A ação logon do Azure
    • A ação de script do PowerShell

GitHub Actions do Azure Stack Hub

O diagrama a seguir mostra os diferentes ambientes e suas relações.

Ação do Github do Azure Stack Hub Partes do uso do executor auto-hospedado:

  • GitHub Actions hospedado no GitHub
  • Executor auto-hospedado hospedado no Azure
  • Azure Stack Hub

Uma limitação de usar GitHub Actions com o Azure Stack Hub é que o processo requer o uso de um Azure Stack Hub conectado à Web. O fluxo de trabalho é disparado em um repositório GitHub. Você pode usar o Microsoft Entra ID ou o AD FS (Serviços Federados do Active Directory) como seu provedor de identidade.

Embora isso esteja fora do escopo deste artigo, seu executor auto-hospedado também pode usar uma rede virtual privada para se conectar ao Azure Stack Hub por trás de um firewall.

Obter entidade de serviço

Um SPN fornece credenciais baseadas em função para que os processos fora do Azure possam se conectar e interagir com os recursos. Você precisará de um SPN com acesso contribuidor e os atributos especificados nestas instruções para usar com o GitHub Actions.

Como usuário do Azure Stack Hub, você não tem permissão para criar o SPN. Você precisará solicitar esse princípio do operador de nuvem. As instruções estão sendo fornecidas aqui para que você possa criar o SPN se for um operador de nuvem ou validar o SPN se for um desenvolvedor usando um SPN em seu fluxo de trabalho fornecido por um operador de nuvem.

O operador de nuvem precisará criar o SPN usando a CLI do Azure.

Os snippets de código a seguir são escritos para um computador Windows usando o prompt do PowerShell com a CLI do Azure. Se você estiver usando a CLI em um computador Linux e bash, remova a extensão de linha ou substitua-a por um \.

  1. Prepare os valores dos seguintes parâmetros usados para criar o SPN:

    Parâmetro Exemplo Descrição
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" O ponto de extremidade de gerenciamento de recursos.
    suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" O sufixo de ponto de extremidade para contas de armazenamento.
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" O sufixo DNS do serviço Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" A ID de recurso do Active Directory.
    endpoint-sql-management https://notsupported O ponto de extremidade de gerenciamento do SQL Server. Defina-o como https://notsupported
    perfil 2020-09-01-hybrid O perfil a ser usado para essa nuvem.
  2. Abra sua ferramenta de linha de comando, como Windows PowerShell ou Bash, e entre. Use o seguinte comando:

    az login
    
  3. Use o register comando para um novo ambiente ou o update comando se você estiver usando um ambiente existente. Use o comando a seguir.

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2020-09-01-hybrid
    
  4. Obtenha a ID da assinatura e o grupo de recursos que você deseja usar para o SPN.

  5. Crie o SPN com o seguinte comando com a ID da assinatura e o grupo de recursos:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Verifique o objeto JSON resultante. Você usará o objeto JSON para criar seu segredo no repositório GitHub que contém sua ação. O objeto JSON deve ter os seguintes atributos:

    {
      "clientId": <Application ID for the SPN>,
      "clientSecret": <Client secret for the SPN>,
      "subscriptionId": <Subscription ID for the SPN>,
      "tenantId": <Tenant ID for the SPN>,
      "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/",
      "resourceManagerEndpointUrl": "https://management.<FQDN>",
      "activeDirectoryGraphResourceId": "https://graph.windows.net/",
      "sqlManagementEndpointUrl": "https://notsupported",
      "galleryEndpointUrl": "https://providers.<FQDN>:30016/",
      "managementEndpointUrl": "https://management.<FQDN>"
    }
    

Adicionar entidade de serviço ao repositório

Você pode usar segredos do GitHub para criptografar informações confidenciais a serem usadas em suas ações. Você criará um segredo para conter o SPN para que a ação possa entrar na instância do Azure Stack Hub.

Aviso

O GitHub recomenda que você não use executores auto-hospedados com repositórios públicos Forks do seu repositório público pode executar código perigoso em seu computador executor auto-hospedado criando uma solicitação de pull que executa o código em um fluxo de trabalho. Para obter mais informações, confira "Sobre os executores auto-hospedados".

  1. Abra ou crie um repositório GitHub. Se precisar de diretrizes sobre como criar um repositório no GitHub, encontre instruções nos documentos do GitHub.
  2. Defina seu repositório como privado.
    1. Selecione Configurações>Alterar visibilidade do repositório.
    2. Selecione Tornar privado.
    3. Digite o nome do repositório.
    4. Selecione Eu entendo, altere a visibilidade do repositório.
  3. Selecione Configurações.
  4. Selecione Segredos.
  5. Selecione Novo segredo de repositório. Adicionar seu segredo GitHub Actions
  6. Nomeie seu segredo AZURE_CREDENTIALScomo .
  7. Cole o objeto JSON que representa o SPN.
  8. Selecione Adicionar segredo.

Criar sua VM e instalar pré-requisitos

  1. Crie seu executor auto-hospedado.

    Essas instruções criam um executor como uma VM do Windows no Azure. Se você precisar se conectar ao Azure Stack Hub hospedado em um datacenter, poderá exigir uma conexão VPN. Você pode encontrar instruções sobre como habilitar a conexão na seção Instalar as Ferramentas do Azure Stack Hub em seu executor auto-hospedado que pode exigir uma conexão VPN.

  2. Use uma conexão remota para se conectar ao servidor Windows 2016 usando o endereço IP do servidor, o nome de usuário e a senha que você definiu ao criar o computador.

  3. Instale o Chocolatey. O Chocolatey é um gerenciador de pacotes para Windows que você pode usar para instalar e gerenciar dependências da linha de comando. Em um prompt do PowerShell com privilégios elevados, digite:

    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    
  4. Instale o PowerShell Core. Em um prompt do PowerShell com privilégios elevados, digite:

    choco install powershell-core
    
  5. Instale a CLI do Azure. Em um prompt do PowerShell com privilégios elevados, digite:

    choco install azure-cli
    
  6. Instale o PowerShell do Azure Stack Hub. Em um prompt do PowerShell com privilégios elevados, digite:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
    Install-Module -Name Az.BootStrapper -Force -AllowPrerelease
    Install-AzProfile -Profile 2020-09-01-hybrid -Force
    Install-Module -Name AzureStack -RequiredVersion 2.0.2-preview -AllowPrerelease
    

    Para obter mais informações sobre como usar os módulos Az do Azure Stack Hub, confira Instalar o módulo Az do PowerShell para o Azure Stack Hub.

  7. Reinicie o computador. Em um prompt do PowerShell com privilégios elevados, digite:

    shutdown /r
    
  8. Adicione o computador como um executor auto-hospedado ao repositório GitHub. Você pode encontrar instruções sobre como adicionar um executor auto-hospedado nos documentos do GitHub. Para obter mais informações, consulte Adicionando executores auto-hospedados.

    O executor está escutando

  9. Quando terminar, verifique se o serviço está em execução e escutando seu serviço. Double marcar executando /run.cmd do diretório do executor.

Opcional: instalar as Ferramentas do Azure Stack Hub em seu executor auto-hospedado

As instruções neste artigo não exigem acesso às Ferramentas do Azure Stack Hub, mas, à medida que você desenvolve seu próprio fluxo de trabalho, talvez seja necessário usar as ferramentas. As instruções a seguir podem ajudá-lo a instalar as ferramentas no executor auto-hospedado do Windows. Para obter mais informações sobre as Ferramentas do Azure Stack Hub, consulte Baixar ferramentas do Azure Stack Hub do GitHub. Estas instruções pressupõem que você instalou o gerenciador de pacotes Chocolatey.

  1. Instale o Git.

    choco install git
    
  2. Em um prompt do PowerShell com privilégios elevados, digite:

    # Change directory to the root directory.
    cd \
    
    # Download the tools archive.
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
    invoke-webrequest `
      https://github.com/Azure/AzureStack-Tools/archive/az.zip `
      -OutFile az.zip
    
    # Expand the downloaded files.
    expand-archive az.zip `
      -DestinationPath . `
      -Force
    
    # Change to the tools directory.
    cd AzureStack-Tools-az
    
  3. Se você precisar que seu executor se conecte à sua instância do Azure Stack Hub, poderá usar o PowerShell. Você pode encontrar as instruções no artigo Conectar-se ao Azure Stack Hub com o PowerShell.

Criar um executor auto-hospedado

Você pode configurar um executor auto-hospedado no GitHub Docs. Um executor auto-hospedado pode ser executado em qualquer computador que possa se conectar ao GitHub. Você pode optar por usar um executor auto-hospedado se tiver uma tarefa de automação em seu fluxo de trabalho que exija dependências extensas, requisitos de licenciamento específicos, como um dongle USB para uma licença de software ou outras necessidades específicas de computador ou software. Seu computador pode ser um computador físico, uma VM ou um contêiner. Você pode colocar o executor em seu datacenter ou na nuvem.

Neste artigo, você usará uma VM do Windows hospedada no Azure que será configurada com requisitos específicos do PowerShell do Azure Stack Hub.

Para obter instruções sobre como configurar, configurar e conectar seu executor auto-hospedado ao repositório, confira o GitHub Docs, "Sobre executores auto-hospedados".

Executor auto-hospedado conectado

Anote o nome e as marcas do executor auto-hospedado. O fluxo de trabalho neste artigo o chamará usando a marca self-hosted.

Adicionar o fluxo de trabalho ao repositório

Crie um novo fluxo de trabalho usando o yaml nesta seção para criar seu fluxo de trabalho.

  1. Abra o repositório GitHub.

  2. Selecione Ações.

  3. Crie um novo fluxo de trabalho.

    • Se este for seu primeiro fluxo de trabalho, selecione configurar um fluxo de trabalho por conta própriaem Escolher um modelo de fluxo de trabalho.
    • Se você tiver fluxos de trabalho existentes, selecione Novo fluxo de> trabalhoConfigurar um fluxo de trabalho por conta própria.
  4. No caminho, nomeie o arquivo workflow.ymlcomo .

  5. Copie e cole o yml do fluxo de trabalho.

    on: [push]
    
    env:
      ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
    
    jobs: 
      azurestack-test:
        runs-on: self-hosted
        steps:
    
          - name: Login to AzureStack with Az Powershell
            uses: azure/login@releases/v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
              environment: 'AzureStack'
              enable-AzPSSession: true
    
          - name: Run Az PowerShell Script Against AzureStack
            uses: azure/powershell@v1
            with:
              azPSVersion: '3.1.0'
              inlineScript: |
                hostname
                Get-AzContext
                Get-AzResourceGroup
    
          - name: Login to AzureStack with CLI
            uses: azure/login@releases/v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
              environment: 'AzureStack'
              enable-AzPSSession: false
    
          - name: Run Azure CLI Script Against AzureStack
            run: |
              hostname
              az group list --output table
    
  6. Selecione Confirmar início.

  7. Adicione o título do commit e os detalhes opcionais e selecione Confirmar novo arquivo.

Quando a ação for executada, verifique se ela foi executada com êxito.

  1. Abra o repositório GitHub. Você pode disparar o fluxo de trabalho enviando por push para o repositório.

  2. Selecione Ações.

  3. Selecione o nome da confirmação em Todos os fluxos de trabalho.

    Examinar resumo do commit

  4. Selecione o nome do trabalho, azurestack-test.

    Examinar detalhes da confirmação

  5. Expanda as seções para examinar os valores retornados para seus comandos do PowerShell e da CLI.

Observações sobre o arquivo de fluxo de trabalho e a ação:

  • O fluxo de trabalho contém um único trabalho chamado azurestack-test.
  • Um evento push dispara o fluxo de trabalho.
  • A ação usa um executor auto-hospedado que foi configurado no repositório e é chamado pelo rótulo do executor no fluxo de trabalho com a linha : runs on: self-hosted.
  • O fluxo de trabalho contém três ações.
  • A primeira ação chama a ação logon do Azure para entrar com o PowerShell com GitHub Actions para o Azure, você pode criar fluxos de trabalho que podem ser configurados em seu repositório para compilar, testar, empacotar, liberar e implantar no Azure. Essa ação usa suas credenciais do Azure Stack SPN para se conectar e abrir uma sessão no ambiente do Azure Stack Hub. Você pode encontrar mais informações sobre como usar a ação no GitHub, Ação de Logon do Azure.
  • A segunda ação usa Azure PowerShell. A ação usa os módulos do Az PowerShell e funciona com nuvens governamentais e do Azure Stack Hub. Depois de executar esse fluxo de trabalho, examine o trabalho para validar se o script coletou os grupos de recursos em seu ambiente do Azure Stack Hub. Para obter mais informações, consulte Azure PowerShell Action
  • A terceira ação usa a CLI do Azure para entrar e se conectar ao Azure Stack Hub para coletar grupos de recursos. Para obter mais informações, consulte Ação da CLI do Azure.
  • Para obter mais informações sobre como trabalhar com GitHub Actions e executor auto-hospedado, consulte a documentação do GitHub Actions.

Próximas etapas