Comment mettre à jour un package à l'aide d'une marionnette et d'un fichier .deb

27

J'essaie de trouver la bonne façon de mettre à jour / mettre à niveau un paquet deb en utilisant une marionnette à partir d'un fichier deb source local. Ma configuration actuelle ressemble à ceci ...

class adobe-air-2-0-4 {

  file { "/opt/air-debs":
    ensure => directory
  }

  file { "/opt/air-debs/adobeair-2.0.4.deb":
    owner   => root,
    group   => root,
    mode    => 644,
    ensure  => present,
    source  => "puppet://puppet/adobe-air-2-0-4/adobeair-2.0.4.deb"
  }

  package { "adobeair":
    provider => dpkg,
    ensure => installed,
    source => "/opt/air-debs/adobeair-2.0.4.deb"
  }

}

Je copie d'abord le fichier deb sur la machine cliente, puis j'utilise «package» avec le fournisseur défini sur «dpkg». Cela fonctionne et j'obtiens la bonne version installée.

Ma question est quelle est la bonne façon de mettre à jour ce package à l'avenir. Puis-je simplement changer le fichier source et la marionnette saura qu'il s'agit d'une version différente et mettre à jour ce package? Comment la marionnette détermine-t-elle la version d'un package qu'il a installée par rapport à la version du fichier deb source?

Je suis assez nouveau dans le domaine des marionnettes, donc si vous avez des suggestions d'amélioration de ma configuration existante, elles sont très appréciées.

delux247
la source

Réponses:

36

J'ai également posté cette question sur le groupe d'utilisateurs de marionnettes et c'est une réponse que j'ai reçue.

Si vous ajoutez la dernière version, il vérifiera le fichier source par rapport au package actuellement installé et installera le nouveau s'il est le plus récent. Je ne sais toujours pas comment vous pourriez revenir à une version plus ancienne, mais cela semble résoudre mon problème pour l'instant.

package { "puppet-dashboard":
 provider => dpkg,
 ensure   => latest,
 source   => "/tmp/puppet-dashboard_1.0.4rc2-1_all.deb"
}

Voici un lien vers le message du groupe d'utilisateurs de marionnettes ... http://groups.google.com/group/puppet-users/browse_thread/thread/53f5e7119012fb3e/59e8596701fcaf3f

delux247
la source
Non testé, mais si vous utilisez apt comme fournisseur. vous pouvez changer la dernière en une chaîne avec le numéro de version dans - par exemple: Ensure => '1.0.4rc2-1_all'
benlumley
Après avoir vérifié docs.puppetlabs.com/references/latest/type.html#package - il semble que ma recommandation ci-dessus ne soit pas valide, elle indique que dpkg n'est pas versionnable.
benlumley
Eh bien, @benlumley, apt-get est versionnable et dpkg (sur lequel est basé apt-get) ne l'est pas. Il est donc assez difficile de mélanger les deux lorsque vous souhaitez effectuer une version comme celle-ci. C'est pourquoi dans ces cas, il pourrait être judicieux de configurer un mini-référentiel et de le faire gérer par apt-get (qui est le fournisseur par défaut sur les systèmes Debian)
Aktau