Use a ação de login Azure com Azure CLI e PowerShell no Azure Stack Hub

Pode configurar GitHub Actions para iniciar seduca na sua instância Azure Stack Hub, executar PowerShell e, em seguida, executar um script Azure CLI. Pode utilizar isto como base de um fluxo de trabalho de integração contínua e contínua (CI/CD) para a sua solução com o Azure Stack Hub. Com este fluxo de trabalho, pode automatizar a construção, testar e implementar a sua solução para que possa concentrar-se na escrita do código. Por exemplo, adicionando algumas outras ações, você pode usar este fluxo de trabalho juntamente com um modelo de Gestor de Recursos Azure para fornecer um VM, validar um repositório de aplicações e, em seguida, implementar uma aplicação para esse VM cada vez que se fundir a uma sucursal específica em GitHub. Por enquanto, este artigo irá ajudá-lo a se orientar com GitHub Actions e Azure Stack Hub.

GitHub As ações são fluxos de trabalho compostos por ações que permitem a automatização dentro do seu repositório de código. Pode desencadear os fluxos de trabalho com eventos no seu processo de desenvolvimento GitHub. Pode executar tarefas comuns de automatização de DevOps, tais como testes, implementação e integração contínua.

Para utilizar GitHub Ações com O Azure Stack Hub, tem de utilizar um principal serviço (SPN) com requisitos específicos. Neste artigo, você vai criar um corredor auto-hospedado. GitHub permite-lhe utilizar qualquer máquina que possa ser alcançada por GitHub nas suas Ações de GitHub. Pode criar-lhe uma máquina virtual (VM) como seu corredor em Azure, em Azure Stack Hub, ou em qualquer outro lugar.

Este fluxo de trabalho exemplo inclui:

  • Instruções para criar e validar o seu SPN.
  • Configurar uma máquina central do servidor Windows 2016 como GitHub Actions auto-hospedada para trabalhar com o Azure Stack Hub.
  • Um fluxo de trabalho que utiliza:
    • A ação de Login Azure
    • A ação do script PowerShell

Azure Stack Hub GitHub ações

O diagrama que se segue mostra os diferentes ambientes e as suas relações.

Ação do Azure Stack Hub Github Partes da utilização do corredor auto-hospedado:

  • GitHub Ações organizadas em GitHub
  • Corredor auto-hospedado hospedado em Azure
  • Azure Stack Hub

Uma limitação de usar GitHub Actions com Azure Stack Hub é que o processo requer a utilização de um Azure Stack Hub ligado à web. O fluxo de trabalho é desencadeado num repositório GitHub. Pode utilizar os serviços federados Azure Ative Directory (Azure AD) ou Ative Directory Federated Services (AD FS) como seu fornecedor de identidade.

Embora isto esteja fora do âmbito deste artigo, o seu corredor auto-hospedado também pode usar uma rede privada virtual para ligar ao seu Azure Stack Hub atrás de uma firewall.

Obter diretor de serviço

Um SPN fornece credenciais baseadas em funções para que os processos fora de Azure possam se conectar e interagir com recursos. Necessitará de um SPN com acesso ao contribuinte e dos atributos especificados nestas instruções para utilizar com as suas Ações GitHub.

Como utilizador do Azure Stack Hub não tem a permissão para criar o SPN. Terá de solicitar este princípio ao seu operador de nuvem. As instruções estão a ser fornecidas aqui para que possa criar o SPN se for um operador de nuvem, ou se puder validar o SPN se for um desenvolvedor utilizando um SPN no seu fluxo de trabalho fornecido por um operador de nuvem.

O operador de nuvem terá de criar o SPN utilizando o Azure CLI.

Os seguintes fragmentos de código são escritos para uma máquina Windows utilizando o pedido PowerShell com Azure CLI. Se estiver a utilizar o CLI numa máquina Linux e bater, retire a extensão da linha ou substitua-a por um \ .

  1. Preparar os valores dos seguintes parâmetros utilizados para criar o SPN:

    Parâmetro Exemplo Descrição
    endpoint-recurso-manager "https://management.orlando.azurestack.corp.microsoft.com" O ponto final de gestão de recursos.
    sufixo-armazenamento-ponto final "orlando.azurestack.corp.microsoft.com" O sufixo final para contas de armazenamento.
    sufixo-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" O sufixo do serviço Key Vault.
    endpoint-active-directy-graph-id "https://graph.windows.net/" O ID de recurso do Active Directory.
    endpoint sql-management https://notsupported O ponto final de gestão do servidor sql. Deseteia isto para https://notsupported
    perfil 2020-09-01-híbrido Perfil para usar para esta nuvem.
  2. Abra a sua ferramenta de linha de comando, como Windows PowerShell ou Bash e inscreva-se. Utilize o seguinte comando:

    az login
    
  3. Utilize o register comando para um novo ambiente ou comando se utilizar um ambiente update existente. Utilize o seguinte comando.

    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 o seu ID de subscrição e grupo de recursos que pretende utilizar para o SPN.

  5. Crie o SPN com o seguinte comando com o ID de subscrição e 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 o seu segredo no seu repositório GitHub que contém a 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>"
    }
    

Adicione o principal do serviço ao repositório

Pode usar GitHub segredos para encriptar informações confidenciais para usar nas suas ações. Irá criar um segredo para conter o seu SPN para que a ação possa iniciar sessão na sua instância Azure Stack Hub.

Aviso

GitHub recomenda que não utilize corredores auto-hospedados com placas de repositórios públicos do seu repositório público pode executar código perigoso na sua máquina de corredor auto-hospedada, criando um pedido de puxar que executa o código num fluxo de trabalho. Para mais informações, consulte "Sobre corredores auto-hospedados."

  1. Abra ou crie um repositório GitHub. Se precisar de orientação para criar um repositório em GitHub, pode encontrar instruções nos GitHub docs.
  2. Coloque o seu repositório em privado.
    1. Selecione DefiniçõesAlterar a visibilidade do repositório.
    2. Selecione Tornar privado.
    3. Escreva o nome do seu repositório.
    4. Selecione, eu entendo, altere a visibilidade do repositório.
  3. Selecione Definições.
  4. Selecione Segredos.
  5. Selecione novo segredo do repositório. Adicione o segredo das suas Ações GitHub
  6. Diga o seu AZURE_CREDENTIALS segredo.
  7. Cole o objeto JSON que representa o seu SPN.
  8. Selecione Add secret (Adicionar segredo).

Crie o seu VM e instale pré-requisitos

  1. Crie o seu corredor auto-hospedado.

    Estas instruções criam um corredor como um Windows VM em Azure. Se precisar de se ligar ao seu Azure Stack Hub hospedado num datacenter, poderá necessitar de uma ligação VPN. Pode encontrar instruções para ativar a ligação na secção Instale ferramentas do Hub Azure Stack no seu corredor auto-hospedado que possa necessitar de uma ligação VPN.

  2. Utilize uma ligação remota para ligar ao seu servidor Windows 2016 utilizando o endereço IP do servidor, o nome de utilizador e a palavra-passe que definiu ao criar a máquina.

  3. Instale chocolate. A Chocolatey é gestora de pacotes para Windows que podes usar para instalar e gerir dependências da linha de comando. A partir de um pedido powerShell elevado, escreva:

    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. A partir de um pedido powerShell elevado, escreva:

    choco install powershell-core
    
  5. Instale o Azure CLI. A partir de um pedido powerShell elevado, escreva:

    choco install azure-cli
    
  6. Instale o hub Azure Stack PowerShell. A partir de um pedido powerShell elevado, escreva:

    [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 a utilização dos módulos Azure Stack Hub Az, consulte o módulo PowerShell Az para O Azure Stack Hub.

  7. Reinicie a sua máquina. A partir de um pedido powerShell elevado, escreva:

    shutdown /r
    
  8. Adicione a máquina como um corredor auto-hospedado ao seu repositório GitHub. Pode encontrar instruções para adicionar um corredor auto-hospedado nos GitHub docs. Para obter mais informações, consulte adicionar corredores auto-hospedados.

    O corredor está a ouvir

  9. Quando terminar, verifique se o serviço está a funcionar e a ouvir o seu serviço. Verifique duas vezes a /run.cmd partir do diretório do corredor.

Opcional: Instale ferramentas do Hub Azure Stack no seu corredor auto-hospedado

As instruções deste artigo não requerem acesso às Ferramentas hub do Azure Stack,mas à medida que desenvolve o seu próprio fluxo de trabalho poderá ter de utilizar as ferramentas. As seguintes instruções podem ajudá-lo a instalar as ferramentas no seu Windows corredor auto-hospedado. Para obter mais informações sobre as Ferramentas hub da Azure Stack, consulte as Ferramentas hub do Azure Stack de GitHub. Estas instruções pressupõem que instalou o gestor de pacotes Chocolatey.

  1. Instale Git.

    choco install git
    
  2. A partir de um pedido powerShell elevado, escreva:

    # 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 precisar do seu corredor para ligar à sua instância Azure Stack Hub, pode utilizar o PowerShell. Pode encontrar as instruções do artigo Ligação ao Azure Stack Hub com o PowerShell.

Criar um corredor auto-hospedado

Pode configurar um corredor auto-hospedado no GitHub Docs. Um corredor auto-hospedado pode correr em qualquer máquina que possa ligar-se a GitHub. Pode optar por utilizar um corredor auto-hospedado se tiver uma tarefa de automatização no seu fluxo de trabalho que requer dependências extensivas, requisitos específicos de licenciamento, como um dongle USB para uma licença de software, ou outras necessidades específicas de máquina ou software. A sua máquina pode ser uma máquina física, um VM ou um recipiente. Pode colocar o corredor no seu datacenter ou na nuvem.

Neste artigo, você vai usar um Windows VM hospedado em Azure que será configurado com requisitos específicos do PowerShell do Azure Stack.

Para obter instruções sobre a configuração, configuração e ligação do seu corredor auto-hospedado ao seu repositório, consulte o GitHub Docs, "Sobre corredores auto-hospedados".

Corredor auto-hospedado conectado

Tome nota do nome e etiquetas do seu corredor auto-hospedado. O fluxo de trabalho deste artigo chamar-lhe-á usando a etiqueta self-hosted .

Adicione o fluxo de trabalho ao seu repositório

Crie um novo fluxo de trabalho utilizando o yaml nesta secção para criar o seu fluxo de trabalho.

  1. Abra o seu repositório GitHub.

  2. Selecione Ações.

  3. Criar um novo fluxo de trabalho.

    • Se este for o seu primeiro fluxo de trabalho, selecione configurar um fluxo de trabalho em escolha um modelo de fluxo de trabalho.
    • Se tiver fluxos de trabalho existentes, selecione Novo fluxo de trabalhoCrie um fluxo de trabalho por si mesmo.
  4. No caminho, nomeie o workflow.yml ficheiro.

  5. Copiar e colar o fluxo de trabalho yml.

    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 Start commit (Iniciar consolidação).

  7. Adicione o título de compromisso e detalhes opcionais e, em seguida, selecione Comprometa novo ficheiro.

Quando a ação for executada, verifique se foi executada com sucesso.

  1. Abra o seu repositório GitHub. Pode desencadear o fluxo de trabalho empurrando para o repositório.

  2. Selecione Ações.

  3. Selecione o nome do compromisso em Todos os fluxos de trabalho.

    Rever resumo de compromisso

  4. Selecione o nome do trabalho, teste azurestack.

    Rever detalhes de compromisso

  5. Expanda as secções para rever os valores de retorno dos seus comandos PowerShell e CLI.

Notas sobre o ficheiro de fluxo de trabalho e a ação:

  • O fluxo de trabalho contém um único trabalho chamado azurestack-test .
  • Um evento de impulso despoleta o fluxo de trabalho.
  • A ação utiliza um corredor auto-hospedado que foi criado no repositório, e é chamado pelo rótulo do corredor 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 de Login Azure para iniciar sessão com o PowerShell Com GitHub Actions for Azure, pode criar fluxos de trabalho que pode configurar no seu repositório para construir, testar, embalar, lançar e implementar para a Azure. Esta ação utiliza as suas credenciais Azure Stack SPN para ligar e abrir uma sessão ao ambiente do Azure Stack Hub. Pode encontrar mais informações sobre a utilização da ação em GitHub, Azure Login Action.
  • A segunda ação Azure PowerShell. A ação utiliza os módulos Az PowerShell e funciona com nuvens do Governo e do Azure Stack Hub. Depois de executar este fluxo de trabalho, reveja o trabalho para validar que o script recolheu os grupos de recursos no seu ambiente Azure Stack Hub. Para mais informações, consulte Azure PowerShell Ação
  • A terceira ação, utiliza o Azure CLI para iniciar seduca e ligar-se ao seu Azure Stack Hub para recolher grupos de recursos. Para mais informações, consulte a Azure CLI Action.
  • Para obter mais informações sobre o trabalho com GitHub Actions e corredor auto-hospedado, consulte a documentação GitHub Actions.

Passos seguintes