2017-06-23 2 views
1

J'ai fait un petit module qui est capable de créer des pools pour php-fpm dans hiera et les enregistre sur les nœuds /etc/php5/fpm.d/. Chaque noeud (et donc le fichier pool.conf) est généré par une ressource dans Puppet.Supprimer les fichiers non gérés d'un répertoire via Puppet

Mon hiera ressemble à ce

phpfpm::pools: 
    poolname: 
    listen: '127.0.0.1:9000' 
    some: 'other' 
    anotherpoolname: 
    listen: '127.0.0.1:9001' 
    other: 'value' 

Maintenant, j'ai le problème que je ne sais pas comment tous les fichiers, supprimer automatiquement qui ont été créés par les marionnettes. Par exemple. Si un utilisateur crée manuellement un nouveau fichier de configuration dans /etc/php5/fpm.d/, il doit être supprimé par une marionnette.

Je alredy essayé purge dans le module, mais il supprime tous les fichiers, sauf celui qui sera créé dans la ressource actuelle.

Tous les conseils?

Répondre

3

Je ne suis pas certain que je comprends comment fonctionne votre code, mais je pense que vous devez faire quelque chose de semblable à ce que je faisais ici pour purger le répertoire yum.repos.d:

Hiera:

profile::base::yum::repos: 
    'C7.0.1406-base': 
    ensure: 'present' 
    baseurl: 'http://vault.centos.org/7.0.1406/os/$basearch/' 
    descr: 'CentOS-7.0.1406 - Base' 
    enabled: '0' 
    gpgcheck: '1' 
    gpgkey: 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7' 
    'C7.0.1406-centosplus': 
    ensure: 'present' 
    baseurl: 'http://vault.centos.org/7.0.1406/centosplus/$basearch/' 
    descr: 'CentOS-7.0.1406 - CentOSPlus' 
    enabled: '0' 
    gpgcheck: '1' 
    gpgkey: 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7' 

Manifest:

class profile::base::yum (
    Hash [String, Hash[String, String]] $repos, 
) { 
    Yumrepo { 
    stage => 'pre', 
    } 
    create_resources(yumrepo, $repos) 

    # Since we must purge the file resources in 
    # /etc/yum.repos.d/, we must also declare the 
    # associated files to prevent them also 
    # being purged. 

    keys($repos).each |String $yumrepo| { 
    file { "/etc/yum.repos.d/${yumrepo}.repo": } 
    -> 
    Yumrepo[$yumrepo] 
    } 
    file { '/etc/yum.repos.d/': 
    ensure => directory, 
    recurse => true, 
    purge => true, 
    } 
} 
+1

Ceci est juste ce que j'allais suggérer - à savoir gérer le répertoire contenant via une ressource '' File' avec recurse' et 'purge' les deux'on'. Par [ses docs] (https://docs.puppet.com/puppet/latest/type.html#file-attribute-purge), 'purge' entraînera des fichiers non gérés à supprimer, et * seuls * non gérés. En particulier, les fichiers gérés via des ressources 'File' séparées ne sont pas soumis à la purge. –

+0

Je pense que la mise en scène 'yumrepo' et metaparameters dans le code est un peu inutile de répondre à cette question. Cela étant dit, cela devrait absolument fonctionner, mais la question ambiguë dit quelque chose à propos d'essayer quelque chose comme ça et ça ne fonctionne pas. Cela répond définitivement à la question comme indiqué cependant. –

+0

True. L'exemple de code peut prêter à confusion si la commande de Puppet n'est pas bien comprise. Cela dit, les chances sont que quelqu'un trouver cela dans les archives sera ici pour problème yum.repos.d de toute façon, donc je pense qu'il est logique de laisser l'exemple de travail au-dessus. –