Referência de esquema de propriedade whatIf do manifesto do recurso DSC
Sinopse
Define como indicar se e como o comando set modificará uma instância.
Metadados
SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/resource/manifest.whatIf.json
Type: object
Descrição
Ao impor um documento de configuração com o comando dsc config set, os usuários podem especificar o --what-if opção para ver se e como os recursos alterarão o estado do sistema sem realmente fazê-lo. Essa propriedade define como o DSC pode invocar o recurso para retornar essas informações diretamente.
Quando essa propriedade não é definida, o DSC sintetiza esse comportamento convertendo o resultado de uma operação de teste em relação ao recurso em um resultado definido. O resultado sintético só pode indicar como a operação alterará as propriedades do recurso. Ele não pode indicar se a operação de set
falhará devido a parâmetros inválidos ou quais propriedades somente leitura o recurso retornará da operação. A lista a seguir descreve alguns casos em que um resultado de hipóteses sintético não retornará informações suficientes ao usuário:
- Um recurso que exige um parâmetro de credencial pode testar com êxito a instância, mas não ter permissões para modificá-la. Nesse caso, o usuário pode executar
dsc config set --what-if
e ver uma previsão aparentemente bem-sucedida para o recurso. Em seguida, quando eles executam o comando sem a opção--what-if
, o recurso gera um erro que o usuário precisa investigar. Se outros recursos forem aplicados com êxito antes da instância que falhou, o sistema poderá ser deixado em um estado parcialmente configurado. - Um recurso com um serviço de dependência não poderá relatar se esse serviço precisa ser reiniciado de um resultado sintético. Depois de examinar o impacto da configuração com base no resultado de hipóteses, um usuário poderá reiniciar inadvertidamente um serviço ou deixar a configuração em um estado parcialmente configurado até que esse serviço seja reinicializado.
Se o recurso usar parâmetros ou retornar propriedades somente leitura de uma operação de set
, defina esse método para garantir que os usuários obtenham as melhores informações sobre se e como o recurso modificará o estado do sistema no modo de hipóteses.
O DSC envia dados para o comando de três maneiras:
- Quando
input
éstdin
, o DSC envia os dados como uma cadeia de caracteres que representa os dados como um objeto JSON compactado sem espaços ou linhas novas entre as propriedades do objeto. - Quando
input
éenv
, o DSC envia os dados como variáveis de ambiente. Ele cria uma variável de ambiente para cada propriedade no objeto de dados de entrada, usando o nome e o valor da propriedade. - Quando a matriz de
args
inclui uma definição de argumento de entrada JSON, o DSC envia os dados como uma cadeia de caracteres que representa os dados como um objeto JSON compactado para o argumento especificado.
Se você não definir a propriedade input
e não definir um argumento de entrada JSON, o DSC não poderá passar o JSON de entrada para o recurso. Você só pode definir um argumento de entrada JSON para um comando.
Você deve definir a propriedade input
, um argumento de entrada JSON na matriz de propriedades args
ou ambos.
Exemplos
Exemplo 1 – Definição completa
"set": {
"executable": "my_app",
"args": [
"config",
"set",
"--what-if"
],
"input": "stdin",
"return": "state"
}
Ele define executable
como my_app
, em vez de my_app.exe
. A extensão não é necessária quando o sistema operacional reconhece o comando como executável.
O manifesto define três argumentos, config
, set
e --what-if
. O valor da propriedade input
indica que o comando whatIf
espera sua entrada como um blob JSON de stdin
.
Combinado com o valor de executable
, o DSC chama o método what-if para esse recurso executando:
{ ... } | my_app config set --what-if
O manifesto define return
como state
, indicando que ele retorna apenas o estado final esperado do recurso após a execução do método set
. O DSC compara o estado desejado com os dados de retorno desse recurso para identificar quais das propriedades do recurso o método set
aplicará, se houver.
Propriedades necessárias
A definição de whatIf
deve incluir estas propriedades:
Propriedades
executável
A propriedade executable
define o nome do comando a ser executado. O valor deve ser o nome de um comando detectável na variável de ambiente PATH
do sistema ou no caminho completo para o comando. Uma extensão de arquivo só é necessária quando o comando não é reconhecível pelo sistema operacional como executável.
Type: string
Required: true
args
A propriedade args
define a lista de argumentos a serem passados para o comando. Os argumentos podem ser qualquer número de cadeias de caracteres. Se você quiser passar o objeto JSON que representa o recipiente de propriedades do recurso para um argumento, poderá definir um único item na matriz como um objeto JSON, indicando o nome do argumento com a propriedade de cadeia de caracteres jsonInputArg
e se o argumento é obrigatório para o comando com a propriedade booliana mandatory
.
Type: array
Required: false
Default: []
Type: [string, object(JSON Input Argument)]
Argumentos de cadeia de caracteres
Qualquer item na matriz de argumentos pode ser uma cadeia de caracteres que representa um argumento estático para passar para o comando, como config
ou --format
.
Type: string
Argumento de entrada JSON
Define um argumento para o comando que aceita o objeto de entrada JSON como uma cadeia de caracteres. O DSC passa a entrada JSON para o argumento nomeado quando disponível. Um argumento de entrada JSON é definido como um objeto JSON com as seguintes propriedades:
jsonInputArg
(obrigatório) – o argumento para passar os dados JSON para o comando, como--input
.mandatory
(opcional) – indique se o DSC deve sempre passar o argumento para o comando, mesmo quando não houver nenhuma entrada JSON para o comando. Nesse caso, o DSC passa uma cadeia de caracteres vazia para o argumento de entrada JSON.
Você só pode definir um argumento de entrada JSON por matriz de argumentos.
Se você definir um argumento de entrada JSON e um tipo de input
para um comando, o DSC enviará os dados JSON de ambas as maneiras:
- Se você definir
input
comoenv
e um argumento de entrada JSON, o DSC definirá uma variável de ambiente para cada propriedade na entrada JSON e passará o objeto de entrada JSON como uma cadeia de caracteres para o argumento definido. - Se você definir
input
comostdin
e um argumento de entrada JSON, o DSC passará a entrada JSON sobre stdin e como uma cadeia de caracteres para o argumento definido. - Se você definir um argumento de entrada JSON sem definir a propriedade
input
, o DSC passará apenas a entrada JSON como uma cadeia de caracteres para o argumento definido.
Se você não definir a propriedade input
e não definir um argumento de entrada JSON, o DSC não poderá passar o JSON de entrada para o recurso. Isso torna o manifesto inválido. Você deve definir a propriedade input
, um argumento de entrada JSON na matriz de propriedades args
ou ambos.
Type: object
RequiredProperties: [jsonInputArg]
entrada
A propriedade input
define como passar a entrada para o recurso. Se essa propriedade não estiver definida e a definição não definir um argumento de entrada JSON , o DSC não enviará nenhuma entrada para o recurso ao invocar a operação de whatIf
.
O valor dessa propriedade deve ser uma das seguintes cadeias de caracteres:
env
- Indica que o recurso espera que as propriedades de uma instância sejam especificadas como variáveis de ambiente com os mesmos nomes e maiúsculas.Essa opção só dá suporte aos seguintes tipos de dados para propriedades de instância:
boolean
integer
number
string
array
de valoresinteger
array
de valoresnumber
array
de valoresstring
Para valores que não são de matriz, o DSC define a variável de ambiente como o valor especificado as-is. Quando o tipo de dados é uma matriz de valores, o DSC define a variável de ambiente como uma cadeia de caracteres delimitada por vírgulas. Por exemplo, a propriedade
foo
com um valor de[1, 2, 3]
é salva na variável de ambientefoo
como"1,2,3"
.Se o recurso precisar dar suporte a propriedades complexas com um valor
object
ou matrizes de vários tipos, defina-o comostdin
em vez disso.stdin
- Indica que o recurso espera um blob JSON que representa uma instância destdin
. O JSON deve aderir ao esquema de instância do recurso.
Type: string
Required: false
ValidValues: [env, stdin]
implementsPretest
A propriedade implementsPretest
define se o recurso testa se a instância está no estado desejado internamente antes de impor o estado desejado. Defina essa propriedade para true
quando o recurso testar a instância como parte da operação de set
. Defina essa propriedade como false
quando não o fizer. Na maioria dos casos, esse valor deve ser definido da mesma forma que a propriedade implementsPretest
na definição do método set no manifesto do recurso.
Quando esse valor é false
, ele indica que os usuários sempre devem chamar dsc resource test
na instância antes de invocar o comando dsc resource set
no recurso.
O valor padrão é false
.
Type: boolean
Required: false
Default: false
handlesExist
A propriedade handlesExist
define se o recurso tem tratamento interno para a propriedade _exist na operação set
. O valor padrão é false
. Na maioria dos casos, esse valor deve ser definido da mesma forma que a propriedade implementsPretest
na definição do método set no manifesto do recurso.
Defina essa propriedade para true
quando o recurso atender aos seguintes requisitos de implementação:
- O esquema de instância de do recurso define a propriedade
_exist
como uma propriedade de instância válida. - O comando
set
do recurso manipula a criação, atualização e exclusão de uma instância com base no estado atual da instância e no valor da propriedade_exist
no estado desejado.
Quando essa propriedade é definida como SetHandlesExist
em uma configuração, o DSC chama a operação set
para o recurso quando uma instância define _exist
como false
. Sem essa funcionalidade, um recurso deve definir o excluir operação para dar suporte à remoção de instâncias do recurso.
Se um manifesto de recurso não definir essa propriedade como true
e não definir a operação de delete
, o DSC gerará um erro quando encontrar uma instância do recurso com _exist
definido como false
.
retornar
A propriedade return
define como o DSC deve processar a saída para esse método. O valor dessa propriedade deve ser uma das seguintes cadeias de caracteres:
state
- Indica que o recurso retorna apenas o estado final esperado da instância após a operação definida como um blob JSON.stateAndDiff
- Indica que o recurso retorna o estado final esperado da instância e uma matriz de nomes de propriedade que o recurso modificou.
O valor padrão é state
.
Type: string
Required: false
Default: state
ValidValues: [state, stateAndDiff]
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de