Como publicar artefatos de pacote de configuração de máquina personalizados
Antes de começar, é uma boa ideia ler a página de visão geral da configuração da máquina.
Os pacotes personalizados .zip
de configuração da máquina devem ser armazenados em um local acessível via HTTPS pelas máquinas gerenciadas. Os exemplos incluem repositórios GitHub, um Azure Repo, armazenamento do Azure ou um servidor Web dentro do seu datacenter privado.
Pacotes de configuração que suportam Audit
e AuditandSet
são publicados da mesma maneira. Não há necessidade de fazer nada de especial durante a publicação com base no modo de pacote.
Publicar um pacote de configuração
O local preferencial para armazenar um pacote de configuração é o Armazenamento de Blobs do Azure. Não há requisitos especiais para a conta de armazenamento, mas é uma boa ideia hospedar o arquivo em uma região próxima às suas máquinas. Se preferir não tornar o pacote público, você pode incluir um token SAS na URL ou implementar um ponto de extremidade de serviço para máquinas em uma rede privada.
Para publicar seu pacote de configuração no armazenamento de blobs do Azure, você pode seguir estas etapas, que usam o módulo Az.Storage .
Se você não tiver uma conta de armazenamento, use o exemplo a seguir para criar uma.
# Creates a new resource group, storage account, and container
$ResourceGroup = '<resource-group-name>'
$Location = '<location-id>'
New-AzResourceGroup -Name $ResourceGroup -Location $Location
$newAccountParams = @{
ResourceGroupname = $ResourceGroup
Location = $Location
Name = '<storage-account-name>'
SkuName = 'Standard_LRS'
}
$container = New-AzStorageAccount @newAccountParams |
New-AzStorageContainer -Name machine-configuration -Permission Blob
Em seguida, obtenha o contexto da conta de armazenamento na qual você deseja armazenar o pacote. Se você criou a conta de armazenamento no exemplo anterior, poderá obter o contexto do objeto de contêiner de armazenamento salvo na $container
variável:
$context = $container.Context
Se você estiver usando um contêiner de armazenamento existente, poderá usar a cadeia de conexão do contêiner com o New-AzStorageContext
cmdlet:
$connectionString = @(
'DefaultEndPointsProtocol=https'
'AccountName=<storage-account-name>'
'AccountKey=<storage-key-for-the-account>' # ends with '=='
) -join ';'
$context = New-AzStorageContext -ConnectionString $connectionString
Em seguida, adicione o pacote de configuração à conta de armazenamento. Este exemplo carrega o arquivo ./MyConfig.zip
zip para o contêiner machine-configuration
de blob.
$setParams = @{
Container = 'machine-configuration'
File = './MyConfig.zip'
Context = $context
}
$blob = Set-AzStorageBlobContent @setParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri
Nota
Se você estiver executando esses exemplos no Cloudshell, mas criou seu arquivo zip localmente, poderá fazer upload do arquivo para o Cloudshell.
Embora esta próxima etapa seja opcional, você deve adicionar um token de assinatura de acesso compartilhado (SAS) na URL para garantir o acesso seguro ao pacote. O exemplo abaixo gera um token SAS de blob com acesso de leitura e retorna o URI de blob completo com o token de assinatura de acesso compartilhado. Neste exemplo, o token tem um limite de tempo de três anos.
$startTime = Get-Date
$endTime = $startTime.AddYears(3)
$tokenParams = @{
StartTime = $startTime
ExpiryTime = $endTime
Container = 'machine-configuration'
Blob = 'MyConfig.zip'
Permission = 'r'
Context = $context
FullUri = $true
}
$contentUri = New-AzStorageBlobSASToken @tokenParams
Importante
Depois de criar o token SAS, observe o URI retornado. Não é possível recuperar o token depois de criá-lo. Você só pode criar novos tokens. Para obter mais informações sobre tokens SAS, consulte Conceder acesso limitado aos recursos do Armazenamento do Azure usando assinaturas de acesso compartilhado (SAS).