Установка агента Puppet 5 на Ubuntu 16

Источник: 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 "pgp.mit.edu" \
--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:in require': cannot load such file -- stomp (LoadError)
from /opt/puppetlabs/puppet/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
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:inrequire'
from /opt/puppetlabs/puppet/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in require'
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 году и поэтому хотел бы проверить последние версии. Я знал, что если у меня есть проблемы, возможно, у других тоже были проблемы. Оставьте комментарий, если это помогло вам…

  1. на самом деле, не совсем, но попыхтеть придётся (прим. перевод.)
  2. в названии функции аллюзия на фразу "Make America Great Again"

Добавить комментарий

Ваш e-mail не будет опубликован.