J'essaie de créer un module marionnette qui automatise l'installation de zend server CE, ce n'est pas important ici, mais les étapes sont les suivantes
- mettre à jour /etc/apt/source.list
- télécharger la clé de repos via wget
- faites apt-get update
- faites apt-get install zend-server-ce-5.2
J'ai init.pp
archivo
class zendserverce {
# https://github.com/puppetlabs/puppetlabs-stdlib
file_line { 'debian_package':
path => '/etc/apt/sources.list',
line => 'deb http://repos.zend.com/zend-server/deb server non-free'
}
exec { "wget http://repos.zend.com/zend.key -O- |apt-key add -":
path => ["/usr/bin", "/usr/sbin"]
}
exec { "apt-get update":
command => "/usr/bin/apt-get update",
onlyif => "/bin/sh -c '[ ! -f /var/cache/apt/pkgcache.bin ] || /usr/bin/find /etc/apt/* -cnewer /var/cache/apt/pkgcache.bin | /bin/grep . > /dev/null'",
}
package { "zend-server-ce-php-5.2":
ensure => "latest"
}
}
Il semble que puppet exécute les commandes dans un ordre différent de celui dont j'ai besoin. Y a-t-il un moyen de lui dire de les exécuter dans l'ordre que je souhaite ?
La sortie d'un tel extrait est
[0;36mnotice: /Stage[main]/Mc/Package[mc]/ensure: ensure changed 'purged' to 'latest'[0m
[1;35merr: /Stage[main]/Zendserverce/Package[zend-server-ce-php-5.2]/ensure: change from purged to latest failed: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install zend-server-ce-php-5.2' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Couldn't find package zend-server-ce-php-5.2 at /tmp/vagrant-puppet/modules 0/zendserverce/manifests/init.pp:28[0m
[0;36mnotice: /Stage[main]/Zendserverce/Exec[wget http://repos.zend.com/zend.key -O- |apt-key add -]/returns: executed successfully[0m
[0;36mnotice: /Stage[main]/Zendserverce/File_line[debian_package]/ensure: created[0m
[0;36mnotice: Finished catalog run in 6.75 seconds[0m
C'est écrit : Impossible de trouver le paquet zend-server-ce-php-5.2
Quelqu'un peut-il me dire ce qui ne va pas ?
0 votes
Peut-être que ceci peut aider docs.puppetlabs.com/guides/language_guide.html#run-stages
0 votes
Je signale juste un problème secondaire : votre apt-get update ne sera exécuté qu'une seule fois et ne s'exécutera plus jamais tant que les fichiers dans le répertoire
/etc/apt/**
ne sont pas modifiées. Cela peut conduire à des informations de mise à jour périmées lors de l'installation d'autres paquets. Vous pouvez également ajouter cette vérification bash qui renvoie vrai si l'apt-get update a été exécuté il y a plus d'un jour :[[ $(( $(date +%s) - $(stat -c %Z /var/cache/apt/pkgcache.bin) )) -gt $(( 24 * 60 * 60 )) ]]
0 votes
Un petit mot sur votre
apt-key add
invocation. Récupérer quelque chose via HTTP, puis le transmettre àapt-key
vous rend vulnérable à une variété d'attaques de sécurité, y compris MITM. Il semblerait que zend ne propose pas d'accès HTTPS à cette clé, ce qui est dommage. Si vous pouvez vérifier manuellement la clé, il serait plus sûr de l'envoyer via une autre méthode, peut-êtrefile { ... }
0 votes
Avez-vous essayé le module puppetlabs-apt pour gérer la gestion des repo et des clés ? Ceci n'est pas directement lié à votre question :)