Administrateurs systèmes mettant en place un environnement Python au péril de leur vie

Dans le cadre de mon travail chez Botify, nous utilisons énormément PIP et Puppet. Si la majorité des packages Python peuvent être nativement transformés en package natifs Debian d’un coup de baguette magique, leur utilisation n’est pas toujours possible, parce que le chemin du virtualenv change en fonction d’un certain nombre de paramètres comme les phases de la lune ou l’âge du capitaine Kirk.

Manque de pot (et non pénurie de récipients), si Puppet dispose d’un provider PIP, celui-ci est incapable de gérer les virtualenv. J’entends déjà certains espris chagrins me dire

PR or GTFO.

Un [PR existe chez Puppetlabs depuis deux ans], mais personne n’en a visiblement rien à foutre.

Je vous propose donc de contourner le problème avec un trick über sale, mais qui fait tout de même l’affaire.

Dans un monde idéal, on ferait :

# Ouais je sais, j'ai parfois un humour plus que douteux, mais comme disait Desproges, on doit rire de tout, même de la maladie et de la mort.
package { "boobs":
  ensure => present,
  provider => "pip",
}

file { "/etc/boobs/size.conf":
  ensure => present,
  require => Package["boobs"],
}

Sauf que ce n’est pas possible. On va donc contourner le problème :

exec { "/chemin/vers/le/virtualenv/bin/pip install -U boobs":
  alias => "boobs",
}

file { "/etc/boobs/size.conf":
  ensure => present,
  require => Exec["boobs"],
}

Et voilà le travail. Quant à moi, je vous laisse et je retourne pester contre Puppet et ses petites incohérences.

Perry the Platypus wants you to subscribe now! Even if you don't visit my site on a regular basis, you can get the latest posts delivered to you for free via Email: