Назад | Перейти на главную страницу

Ошибка марионетки "Хеш"; ожидается ')' по умолчанию в /tmp/modules/apt/manifests/init.pp:6

Я забираю проект, использующий марионетку для установки серверов. У нас есть наш файл process.pp, который работает правильно

Когда я бегу

puppet parser validate manifests/ikuwprocess.pp

Никакой ошибки, что бы то ни было

Но в процессе мы вызываем apt, и я получаю эту ошибку:

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

init.pp кажется нетронутым файлом из марионетки, который можно найти здесь: https://github.com/puppetlabs/puppetlabs-apt/blob/master/manifests/init.pp

Но когда я запустил парсер, я получил ошибку

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

Не знаю, что делать ... Вот моя версия ОС:

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/"

И версия марионетки, которую я использую

puppet --version
3.8.7

Что я делаю не так, чего мне не хватает?

Если вам нужна дополнительная информация, скажите, я быстро ее предоставлю

[РЕДАКТИРОВАТЬ] После рекомендации я попробовал это, но все еще не работал:

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] Пытался перейти на последнюю версию марионетки

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) ...

Но когда я пытаюсь вызвать марионетку:

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

И ничто не называется марионеткой в /usr/bin/

Ошибка вызвана тем, что вы используете старую версию Puppet (3.X), которая EOL по состоянию на декабрь 2016 г., а в более новой версии модуля Apt используется новый Типы данных марионетки которые предназначены только для Puppet 4+.

Самым простым решением будет обновление Puppet до последней версии. Поскольку исходная версия Ubuntu 14.04 является более старой версией, я бы рекомендовал перейти на репозитории Puppet apt. Вы можете легко сделать это с помощью сценарий, который я написал:

wget -O - https://raw.githubusercontent.com/petems/puppet-install-shell/master/install_puppet_agent.sh | судо ш

Или вы можете вручную настроить репозитории для обновления с документацией здесь: https://puppet.com/docs/puppet/5.3/puppet_platform.html#apt-based-systems

Ваш модуль puppetlabs / apt потребности как зависимость puppetlabs / stdlib (смотрите также https://forge.puppet.com/puppetlabs/apt/dependencies).

Добавить stdlib (т.е. с puppet module install puppetlabs-stdlib --version 4.21.0) в путь к вашему системному модулю.