Источник: https://medium.com/@Joachim8675309/installing-puppet-5-427ca7a68f02
Можно подумать, что это довольно простая задача, но нет, нет и ещё раз нет. И я постараюсь показать вам как это сложно.
Репозитории puppet для Ubuntu
В официальных репозиториях Ubuntu доступны пакеты Puppet 3, но под любым предлогом разработчики будут откладывать выпуск 4 и 5 версий puppet. Таким образом на Ubuntu 14 и 16 всегда будет доступен только третий puppet, так что ни в коем разе не вводите «apt-get install puppet», иначе последствия будут печальными. 1
Документация puppet
Одной из возможных причин переименования пакета puppet на puppet-agent в Ubuntu мог быть отказ от управления пакетом puppet, доступным в репозиториях. В любом случае, читая документацию на их сайте, сразу до этого не додумаешься.
В документации написано как скачать установщик, который подключит новый репозиторий и скачает публичный ключ от него, что и даст возможность установки нужных пакетов на вашу машину
По идее, это верно, установщик НЕ УСТАНОВИТ сам puppet. И продолжая читать многотомные мануалы, вы так и не приблизитесь к разгадке и решению как же установить puppet.
В любом случае, здесь вы и узнаете как установить Puppet 5 (puppet-agent), Puppet Development Kit (pdk) и новую утилиту bolt на вашу систему, чтобы поиграться с ними.
Установка Puppet
Данная процедура проводилась на Ubuntu 14.04 Trusty и Ubuntu 16.04 Xenial.
Установка ключа GPG
Когда подключаете сторонние репозитории, то вам необходимо установить публичный ключ подписи, который подтверждает, что пакеты из этого источника действительно выпущены этими разработчиками, а не кем либо другим.
sudo apt-key adv \ --keyserver "keyserver.ubuntu.com" \ --recv-keys "EF8D349F"
Добавление записи о репозитории
Теперь нужно сказать Ubuntu о новом репозитории, который будет ссылаться на новый puppet.
echo "deb http://apt.puppetlabs.com $(lsb_release -c -s) puppet5" \
| sudo tee -a /etc/apt/sources.list.d/puppet5.list
sudo apt-get update
Можете проверить, что пакеты теперь доступны из стороннего репозитория
apt-cache policy puppet-agent bolt pdk
(Прим. перевод.: В принципе, можно просто скачать тот же установщик с http://apt.puppetlabs.com и он всё установит сам, без всяких там приписываний руками ключей и репозиториев.
Установка пакетов
Теперь мы можем успешно установить пакеты из репозитория Puppetlab
sudo apt-get install -y puppet-agent bolt pdk
Новые инструменты от Puppet — bolt (простой инструмент удалённого выполнения) и pdk (Пакет Разработчика Puppet, нужен для создания модулей puppet) можно и не ставить.
Но это только начало
Ну что ж, мы установили нужные нам пакеты и теперь наконец-то можем ввести команду «puppet». И получим дивный отлуп от пуппета.
-bash: puppet: command not found
Но нас так просто не возьмёшь, мы не будем ставить этот злосчастный пакет, который всё нафиг перетрёт. Так что добавим «пипетку» сами.
make_puppet_great_again() {
# Make Binaries Accessible
for ITEM in /opt/puppetlabs/bin/; do
# Не ставим Bolt если Ubuntu 14.04
if [[ "$(lsb_release -c -s)" == "trusty" ]]; then
[[ ${ITEM##/} == bolt ]] && continue
fi
# Link to Source
sudo ln -sf \
/opt/puppetlabs/puppet/bin/wrapper.sh \
/usr/local/bin/${ITEM##*/}
done
}
make_puppet_great_again # 2
После выполнения этого супер-пуперского скрипта, мы можем проверить версию puppet.
puppet_versions() {
printf "puppet: %5s\n" $(puppet --version)
printf "facter: %5s\n" "$(facter --version | cut -f1 -d' ')"
printf "hiera: %6s\n" "$(hiera --version)"
printf "mco: %9s\n" "$(mco --version | cut -f2 -d' ')"
command bolt > /dev/null 2>&1 \
&& printf "bolt: %8s\n" "$(bolt --version)"
command pdk > /dev/null 2>&1 \
&& printf "pdk: %8s\n" "$(pdk --version)"
}
puppet_versions
На 13 апреля 2018 если не вылетело никаких ошибок, то скрипт покажет примерно следующее.
puppet: 5.5.0
facter: 3.11.0
hiera: 3.4.2
mco: 2.12.0
bolt: 0.19.0
pdk: 1.4.1
Если возникли ошибки
Если полезла такая фигня…
/opt/puppetlabs/puppet/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:inrequire': cannot load such file -- stomp (LoadError)
from /opt/puppetlabs/puppet/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/mcollective.rb:3:in<top (required)>'
from /opt/puppetlabs/puppet/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /opt/puppetlabs/puppet/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from /opt/puppetlabs/puppet/bin/mco:7:in
'
То всё, финита ля комедиа.
Ну, на самом деле, это произошло с «mco» на Ubuntu 16.04. К счастью, у меня установлена версия ruby 2.4, поэтому я могу исправить это с помощью gem install stomp. Если у вас нет ruby 2.4, тогда установите его!
Вы можете легко установить ruby 2.4 с помощью RVM или rbenv. Я даже написал несколько статей об этом:
https://medium.com/@Joachim8675309/a-tale-of-two-rubies-part-i-34e5658c5bfc
https://medium.com/@Joachim8675309/a-tale-of-two-rubies-part-ii-5c3904dc4b3b
Эпилог
Дайте мне знать, если это поможет или вы просто хотите что-то сказать. Раньше я работал исключительно в Puppet еще в 2013 году и поэтому хотел бы проверить последние версии. Я знал, что если у меня есть проблемы, возможно, у других тоже были проблемы. Оставьте комментарий, если это помогло вам…