Como aplicar o xIPAddress Desired State Configuration (DSC)?

1

Usando o Windows Server 2012 R2.

O objetivo é definir o endereço IPv4 de um servidor. Como DSC afirma corretamente na mensagem detalhada abaixo, o esperado [ip é] 192.168.0.203, [enquanto o] real [ip é] 192.168.0.205

A seguinte mensagem de erro:

Start-DscConfiguration -Path .\BasicServer -Verbose -Wait -Force

VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,'className' =
MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer ComputerName with user sid S-1-5-21-139086020-2308268882-217435134-1104.
VERBOSE: [ComputerName]: LCM:  [ Start  Set      ]
VERBOSE: [ComputerName]: LCM:  [ Start  Resource ]  [[xIPAddress]IPAddress]
VERBOSE: [ComputerName]: LCM:  [ Start  Test     ]  [[xIPAddress]IPAddress]
VERBOSE: [ComputerName]:                            [[xIPAddress]IPAddress] Checking the IPAddress ...
VERBOSE: [ComputerName]:                            [[xIPAddress]IPAddress] IPAddress not correct. Expected 192.168.0.203, actual 192.168.0.205
VERBOSE: [ComputerName]: LCM:  [ End    Test     ]  [[xIPAddress]IPAddress]  in 0.0310 seconds.
VERBOSE: [ComputerName]: LCM:  [ Start  Set      ]  [[xIPAddress]IPAddress]
VERBOSE: [ComputerName]:                            [[xIPAddress]IPAddress] Checking the IPAddress ...
VERBOSE: [ComputerName]:                            [[xIPAddress]IPAddress] IPAddress not correct. Expected 192.168.0.203, actual 192.168.0.205
VERBOSE: [ComputerName]:                            [[xIPAddress]IPAddress] Setting IPAddress ...
VERBOSE: [ComputerName]:                            [[xIPAddress]IPAddress] Instance DefaultGateway already exists
VERBOSE: [ComputerName]: LCM:  [ End    Set      ]  [[xIPAddress]IPAddress]  in 0.0620 seconds.
PowerShell DSC resource MSFT_xIPAddress  failed to execute Set-TargetResource functionality with error message: Can not set or find valid IPAddress using
InterfaceAlias Ethernet and AddressFamily IPv4
+ CategoryInfo          : InvalidOperation: (:) [], CimException
+ FullyQualifiedErrorId : ProviderOperationExecutionFailure
+ PSComputerName        : ComputerName.domain.com

The SendConfigurationApply function did not succeed.
+ CategoryInfo          : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 1
+ PSComputerName        : ComputerName.domain.com

VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 0.268 seconds

... é lançado ao aplicar a seguinte configuração do DSC xNetworking:

Import-DscResource -Module xNetworking

Node $NodeFQDN {
xIPAddress IPAddress {
    InterfaceAlias = "Ethernet"
    IPAddress = $IPv4
    AddressFamily = "IPV4"
    DefaultGateway = '192.168.0.1'
    SubnetMask = 24
}}

em que $ IPv4 = '192.168.0.203'.

Tenho notado que o Gerenciador de Configuração Local é capaz de realizar a configuração do Teste-DSCC, apenas incapaz de aplicar quaisquer alterações relacionadas ao IP. Eu testei isso executando a configuração acima no sistema enquanto o IP já está configurado corretamente.

A mensagem "Não é possível definir ou encontrar o endereço IP válido usando Ethernet de InterfaceAlias e AddressFamily IPv4" é confusa, pois o LCM obviamente conseguiu localizar o adaptador durante a operação Test-DSCConfiguration.

Alguma pista de por que o Gerenciador de Configuração Local não consegue aplicar a configuração? O que eu não estou vendo?

    
por user2704504 27.03.2015 / 15:50

1 resposta

0

A solução foi remover o gateway padrão da configuração: DefaultGateway = '192.168.0.1'

Parece que, se houver configurações além das básicas (IPAddress, InterfaceAlias, SubnetMask, AddressFamily), o DSC se concentrará nos itens adicionais e considerará os básicos como referências. Considere o seguinte:

xIPAddress IPAddress {
    InterfaceAlias = 'Ethernet'
    IPAddress = '192.168.0.203'
    AddressFamily = 'IPV4'
    SubnetMask = 24
}

A configuração acima irá definir o endereço IP para 192.168.0.203.

 xIPAddress IPAddress {
    InterfaceAlias = 'Ethernet'
    IPAddress = '192.168.0.203'
    AddressFamily = 'IPV4'
    SubnetMask = 24
    DefaultGateway = '192.168.0.1'
}

A configuração acima irá encontrar um adaptador chamado 'Ethernet' com um endereço IP de 192.168.0.203 e configurar seu DefaultGateway como 192.168.0.1. Na minha pergunta, o Gerenciador de configuração local não conseguiu localizar esse adaptador. Eu estava tentando definir o IP e o Gateway simultaneamente.

Essa descoberta me leva a entender que configurar o IP e configurar outras propriedades do adaptador não pode ser feito em uma única configuração. Isso elimina a ideia de usar um único script (sim, apenas 1) para configurar um servidor de ponta a ponta.

Estou entendendo isso direito?

p.s. Também experimentei configurações anexando o novo IP em vez de substituí-lo. Não vai entrar nisso agora, mas um comportamento muito interessante ...

    
por 27.03.2015 / 17:45