2017-05-22 2 views
2

J'utilise marionnette 4.5.3 et ini_setting module version 1.4.2. Je dois être capable de supprimer une strophe dans un fichier ini. Par exemple:Puppet - supprimer complètement ini_setting

[header] 
ip = '1.1.1.1' 
hostname = 'myserver' 
port = 80 

Je suis en mesure de supprimer chaque section du fichier .ini en utilisant le paramètre ensure => absent mais je ne peux pas trouver un moyen de supprimer l'en-tête de strophe, ou de préférence tout en une seule commande.

Ce que j'ai laissé est

[header] 

que quelqu'un sait comment cela peut être fait? Malheureusement, il y a d'autres sections dans le même fichier que je dois conserver, donc je ne peux pas simplement supprimer le fichier.

grâce,

+0

Vous pouvez avoir plus de chance avec augeas pour supprimer une grande partie des fichiers, y compris les en-têtes: https://docs.puppet.com/puppet/4.10/resources_augeas.html. Cela vous semble-t-il intéressant? –

+0

c'est ma dernière tentative de succès avant que je succombe à la folie qui est augeas :( – jacksonecac

+0

Je ne tiens pas particulièrement à augeas non plus, mais c'est probablement votre meilleure option ici –

Répondre

2

L'utilisation du type Augias:

augeas { 'remove_ini_header': 
    incl => '/etc/example.ini', 
    lens => 'IniFile.lns_loose', 
    changes => 'rm section[. = "header"]', 
} 

Pour décomposer un peu, d'abord j'ai utilisé la lentille intégrée IniFile.lns_loose (soit un « générique » analyse syntaxique lâche des fichiers INI) et augtool de voir l'état actuel de l'arbre:

$ augtool -t "IniFile.lns_loose incl /etc/example.ini" 
augtool> print /files/etc/example.ini 
/files/etc/example.ini 
/files/etc/example.ini/section = "header" 
/files/etc/example.ini/section/ip = "'1.1.1.1'" 
/files/etc/example.ini/section/hostname = "'myserver'" 
/files/etc/example.ini/section/port = "80" 

la section entière est dans une partie de l'arbre, de sorte que l'appel rm pour tha La section t supprimera tout le sous-arbre.

Pour correspondre à la section d'en-tête, vous devez rechercher les nœuds appelés section dont la valeur (côté droit) est header. La partie [. = "header"] de la commande est un path expression qui filtre les noeuds avec la valeur header.

+0

fonctionne comme un charme. – jacksonecac