Como criar artefatos personalizados para o pacote de configuração de computador
Antes de começar, é uma boa ideia fazer a leitura da página de visão geral da configuração de computador.
A configuração de máquina usa Desired State Configuration (DSC) ao auditar e configurar o Windows e o Linux. A configuração DSC define a condição em que o computador deve estar.
Importante
Os pacotes personalizados que auditam o estado de um ambiente e aplicam configurações estão no status de suporte Disponibilidade Geral (GA). No entanto, as seguintes limitações se aplicam:
Para usar pacotes de configuração de máquina que aplicam configurações, é necessária a extensão de configuração de convidado da VM do Azure versão 1.26.24 ou posterior, ou Arc agent 1.10.0 ou posterior.
O módulo GuestConfiguration está disponível apenas no Ubuntu 18 e posterior. No entanto, o pacote e as políticas produzidas pelo módulo podem ser usadas em qualquer distribuição e versão do Linux com suporte no Azure ou no Arc.
Os pacotes de teste no macOS não estão disponíveis.
Não use informações confidenciais ou segredos em pacotes de conteúdo personalizados.
Use as etapas a seguir para criar sua configuração para gerenciar o estado de um computador que tem ou não o Azure.
Instale o PowerShell 7 e os módulos necessários do PowerShell
Primeiro, siga as etapas em Como configurar um ambiente de criação de configuração de máquina. Essas etapas ajudam você a instalar a versão necessária do PowerShell para o sistema operacional, o módulo GuestConfiguration e o módulo PSDesiredStateConfiguration.
Criar uma configuração
Antes de criar um pacote de configurações, crie e compile uma configuração DSC. Exemplos de configurações estão disponíveis para Windows e Linux.
Importante
Ao compilar as configurações para Windows, use PSDesiredStateConfiguration versão 2.0.7 (a versão estável). Ao compilar configurações para Linux, instale a versão de pré-lançamento 3.0.0.
Esta configuração de exemplo é para computadores Windows. Ela configura o computador para criar a variável de ambiente MC_ENV_EXAMPLE
nos escopos Process
e Machine
. O valor da variável é definido como 'This was set by machine configuration'
.
Configuration MyConfig {
Import-DscResource -Name 'Environment' -ModuleName 'PSDscResources'
Environment MachineConfigurationExample {
Name = 'MC_ENV_EXAMPLE'
Value = 'This was set by machine configuration'
Ensure = 'Present'
Target = @('Process', 'Machine')
}
}
MyConfig
Com essa definição salva no arquivo de script MyConfig.ps1
, você pode executar o script para compilar a configuração.
. .\MyConfig.ps1
Directory: C:\dsc\MyConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/16/2023 10:39 AM 1080 localhost.mof
A configuração é compilada no arquivo localhost.mof
na pasta MyConfig
no diretório de trabalho atual. Renomeie localhost.mof
para o nome que você quer usar como o nome do pacote, como MyConfig.mof
.
Rename-Item -Path .\MyConfig\localhost.mof -NewName MyConfig.mof -PassThru
Directory: C:\dsc\MyConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/16/2023 10:40 AM 1080 MyConfig.mof
Observação
Este exemplo mostra como criar e compilar uma configuração para um computador Windows. Para Linux, você precisa criar um módulo de recurso DSC personalizado usando as classes do PowerShell. O artigo Gravando um recurso com DSC personalizada com classes do PowerShell inclui um exemplo completo de recurso e configuração personalizados, testados com a configuração da máquina.
O restante deste artigo se aplica às configurações definidas para computadores Linux e Windows, exceto quando menciona considerações específicas da plataforma.
Criar um artefato de pacote de configuração
Depois que o MOF é compilado, os arquivos de suporte devem ser empacotados juntos. O pacote fechado é usado pela configuração de computador para criar as definições do Azure Policy.
O cmdlet New-GuestConfigurationPackage
cria um pacote. Os módulos exigidos pela configuração devem estar disponíveis em $Env:PSModulePath
para o ambiente de desenvolvimento, para que os comandos no módulo possam adicioná-los ao pacote.
Parâmetros do cmdlet New-GuestConfigurationPackage
ao criar um conteúdo do Windows:
- Nome: o nome do pacote da configuração de computador.
- Configuração: caminho completo do documento com a configuração DSC compilada.
- Caminho: caminho da pasta de saída. Esse parâmetro é opcional. Caso não seja especificado, o pacote será criado no diretório atual.
- Tipo: (
Audit
,AuditandSet
) determina se a configuração deve apenas auditar ou se a configuração deve alterar o estado do computador se ele não estiver com o estado desejado. O padrão éAudit
.
Esta etapa não requer elevação. O parâmetro Force é usado para substituir pacotes existentes se você executar o comando mais de uma vez.
Os comandos a seguir criam um artefato de pacote:
# Create a package that will only audit compliance
$params = @{
Name = 'MyConfig'
Configuration = './MyConfig/MyConfig.mof'
Type = 'Audit'
Force = $true
}
New-GuestConfigurationPackage @params
# Create a package that will audit and apply the configuration (Set)
$params = @{
Name = 'MyConfig'
Configuration = './MyConfig/MyConfig.mof'
Type = 'AuditAndSet'
Force = $true
}
New-GuestConfigurationPackage @params
Um objeto é retornado com o Nome e o Caminho do pacote criado.
Name Path
---- ----
MyConfig C:\dsc\MyConfig.zip
Conteúdo esperado de um artefato de configuração de computador
O pacote fechado é usado pela configuração de computador para criar as definições do Azure Policy. O pacote consiste em:
- A configuração de DSC compilada como um MOF
- Pasta dos módulos
- Módulo GuestConfiguration
- Módulo DscNativeResources
- Módulos de recursos DSC exigidos pelo MOF
- Um arquivo de meta configuração que armazena o pacote
type
eversion
O cmdlet PowerShell cria o arquivo do pacote .zip
. Nenhuma pasta de nível de raiz ou de versão é necessária. O formato do pacote deve ser um arquivo .zip
e não pode exceder o tamanho total de 100 MB quando descompactado.
Você pode expandir o arquivo para inspecioná-lo usando o cmdlet Expand-Archive
.
Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip
Você pode obter o tamanho total do pacote descompactado com o PowerShell.
Get-ChildItem -Recurse -Path .\MyConfigZip |
Measure-Object -Sum Length |
ForEach-Object -Process {
$Size = [math]::Round(($_.Sum / 1MB), 2)
"$Size MB"
}
Estender a configuração de computador com ferramentas de terceiros
Os pacotes de artefato para a configuração de computador podem ser estendidos para incluir ferramentas de terceiros. A extensão da configuração de computador exige o desenvolvimento de dois componentes.
- Um recurso Desired State Configuration que trata todas as atividades relacionadas ao gerenciamento da ferramenta de terceiros
- Instalar
- Invoke
- Converter saída
- Conteúdo no formato correto para a ferramenta consumir nativamente
O recurso DSC requer desenvolvimento personalizado se uma solução da comunidade ainda não existir. As soluções da comunidade podem ser descobertas pesquisando na Galeria do PowerShell a marca GuestConfiguration.
Observação
A extensibilidade da configuração de computador é um cenário "traga sua própria licença". Verifique se você atende aos termos e condições de quaisquer ferramentas de terceiros antes do uso.
Após a instalação do recurso DSC no ambiente de desenvolvimento, use o parâmetro FilesToInclude para New-GuestConfigurationPackage
a fim de incluir o conteúdo da plataforma de terceiros no artefato de conteúdo.