1 votes

Erreur Puppet 'Hash' ; expected ')' on the default at /tmp/modules/apt/manifests/init.pp:6

Je reprends un projet utilisant Puppet pour installer des serveurs. Nous avons notre fichier process.pp qui fonctionne correctement

Quand je cours

puppet parser validate manifests/ikuwprocess.pp

Aucune erreur

Mais dans le processus, nous appelons apt et j'obtiens cette erreur :

Error: Syntax error at 'Hash'; expected ')' at /tmp/modules/apt/manifests/init.pp:6 on node ourserver.40qyqnbkn0mu3edhynn2jlebec.ax.internal.toto.net

init.pp semble être le fichier non modifié de Puppet qui peut être trouvé ici : https://github.com/puppetlabs/puppetlabs-apt/blob/master/manifests/init.pp

Mais quand je lance l'analyseur, j'obtiens l'erreur suivante

puppet parser validate /tmp/modules/apt/manifests/init.pp
Error: Could not parse for environment production: Syntax error at 'Hash'; expected ')' at /tmp/modules/apt/manifests/init.pp:6

Je ne sais pas quoi faire... Voici la version de mon OS :

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

Et la version de Puppet que j'utilise

puppet --version
3.8.7

Ce que je fais mal, ce que je rate ?

Si vous avez besoin de plus d'informations, dites-le moi, je vous les fournirai rapidement.

[EDIT] Après une recommandation, j'ai essayé ceci mais cela ne fonctionne toujours pas :

puppet module install puppetlabs-stdlib --version 4.21.0 
Notice: Preparing to install into /home/myaccount/.puppet/modules ... Notice: Created target directory /home/myaccount/.puppet/modules 
Notice: Downloading from https://forgeapi.puppetlabs.com ... 
Notice: Installing -- do not interrupt ... 
/home/myaccount/.puppet/modules 
 puppetlabs-stdlib (v4.21.0)

[EDIT] J'ai essayé de migrer vers la dernière version de Puppet.

wget -O - https://raw.githubusercontent.com/petems/puppet-install-shell/master/install_puppet_agent.sh | sudo sh

Reading package lists... Done 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  puppet-agent
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 0 B/16.8 MB of archives.
After this operation, 91.3 MB of additional disk space will be used.
Selecting previously unselected package puppet-agent.
(Reading database ... 30718 files and directories currently installed.)
Preparing to unpack .../puppet-agent_5.3.3-1trusty_amd64.deb ...
Unpacking puppet-agent (5.3.3-1trusty) ...
Processing triggers for ureadahead (0.100.0-16) ...
Setting up puppet-agent (5.3.3-1trusty) ...

Mais quand j'essaie d'appeler Puppet :

puppet --version
-bash: /usr/bin/puppet: No such file or directory

Et rien qui s'appelle Puppet dans /usr/bin/

1voto

Peter Souter Points 641

L'erreur est due au fait que vous utilisez une ancienne version de Puppet (3.X) qui est EOL à partir de décembre 2016 et la nouvelle version du module Apt utilise le nouveau module Types de données Puppet qui ne sont que Puppet 4+.

La solution la plus simple est de passer à la dernière version de Puppet. Comme la version amont d'Ubuntu 14.04 est une version plus ancienne, je vous recommande de passer aux dépôts apt de Puppet. Vous pouvez le faire facilement avec un script que j'ai écrit :

wget -O - https://raw.githubusercontent.com/petems/Puppet-install-Shell/master/install_puppet_agent.sh | sudo sh

Ou vous pouvez configurer manuellement les dépôts pour la mise à jour, avec les docs ici : https://Puppet.com/docs/Puppet/5.3/puppet_platform.html#apt-based-systems

0voto

PSM Points 101

Votre module puppetlabs/apt les besoins en tant que dépendance puppetlabs/stdlib (voir aussi https://forge.Puppet.com/puppetlabs/apt/dependencies ).

Ajouter stdlib (c'est-à-dire avec puppet module install puppetlabs-stdlib --version 4.21.0 ) au chemin du module de votre système.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X