Augeas - cria nova seção ini

1

Eu tenho um arquivo de configuração no augeas usando uma lente personalizada que gera os dados da seguinte forma.

/files/opt/../server.conf/target[1] = "general"
/files/opt/../server.conf/target[1]/serverName = "XXX"
/files/opt/../server.conf/target[1]/guid = "XXX0XXX"
/files/opt/../server.conf/target[2] = "sslConfig"
/files/opt/../server.conf/target[2]/sslKeysfilePassword  = "$1$XXXXX" 

Isso funciona bem - alguns dos nomes de destino contêm dois pontos, etc, então eu preciso usar o formato [x] de destino.

Qual é a sintaxe correta ins para criar uma nova seção no meu INI usando esta sintaxe?

    
por Tim Brigham 20.06.2012 / 16:11

1 resposta

3

Você pode usar:

set /files/opt/.../server.conf/target[. = 'newsection'] 'newsection'

Se a seção ainda não existir, ela será criada. Você pode usá-lo para adicionar chaves nesta seção. Este código é idempotente, portanto, é seguro usá-lo para cada seção para a qual você precisa de chaves, pois ele só criará a seção se ela ainda não existir.

Para o registro, você poderia usar ins se realmente quisesse que sua nova seção aparecesse antes de uma existente, por exemplo:

# Add a new target node before the sslConfig target
ins target before /files/opt/.../server.conf/target[. = 'sslConfig']
# Set the target name to "newsection" by matching the node right before the "sslConfig" target
set /files/opt/.../server.conf/target[following-sibling::*[1][label() = 'target'][. = 'sslConfig']] 'newsection'

Observe que o código acima não é idempotente, diferente do primeiro código que colei. Se você usar o Augeas with Puppet, provavelmente desejaria adicionar uma instrução onlyif para aplicar essas mudanças de maneira idempotente.

    
por 20.06.2012 / 16:46

Tags