Вы знаете, как правильно запустить r10k на сервере CEntOS 6.7 с Puppet 3.6? Это противоречие в терминах?
Я проверил список требований исходного кода r10k: https://github.com/puppetlabs/r10k#requirements
Похоже, для этого требуется Ruby 1.9. Справедливо.
Но...
$ facter rubysitedir rubyversion
rubysitedir => /usr/lib/ruby/site_ruby/1.8
rubyversion => 1.8
Так начинается позорный поиск легендарного Рубина.
Но большинство сторонних репозиториев не предлагают Ruby 1.9 для CEntOS 6.7.
Мне не удалось правильно установить Один пакет, который я нашел в репо старого доброго Реми, не удалось из-за отсутствия пользователя mockbuild. Я бы подумал, что это было бы необходимо, только если бы он был построен из исходников.
Я установил RVM.
Однако это потребовало glibc = 2.12-1.166.el6_7.7
, и в моей системе нет этой конкретной версии (по уважительным причинам).
Тем не менее, это сработало бы только для определенных пользователей. С пользователями системы, которым необходимо использовать Ruby, может случиться странное, если установлен RVM. rbenv
, который мог бы смягчить эту проблему, дал мне такую же болтовню о glibc:
$ mkdir ~/.tmp && export TMPDIR=~/.tmp && rbenv install 1.9.3-p551 ## How did it come to this...
Downloading yaml-0.1.6.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749
Installing yaml-0.1.6...
BUILD FAILED (CentOS release 6.7 using ruby-build 20160913)
Inspect or clean up the working tree at /export/home/nger/.tmp/ruby-build.20161117064013.21057
Results logged to /home/nger/.tmp/ruby-build.20161117064013.21057.log
Last 10 log lines:
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/nger/.tmp/ruby-build.20161117064013.21057/yaml-0.1.6':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
В любом случае, тогда я подумал, что могу обойтись без использования Ruby 1.8, системы Ruby CEntOS 6:
Тем не мение, Позднее разработчики r10k удалили поддержку Ruby 1.8 :(
Затем, по просьбе комментаторов, я проверил документацию по Коллекциям марионеток.
А. http://yum.puppetlabs.com/el/6/ не имеет ничего для Руби.
Б. Пакет puppet-agent не обновляет системный Ruby, как (я думал?) Рекламируется:
ОДНАКО после установки кажется, что это действительно создает специальный Ruby только для Puppet. Обратитесь к ответу ниже для получения более подробной информации.
CEntOS 6 вообще поддерживается r10k?
CEntOS 6 поддерживает Ruby 1.9?
Я близок к тому, чтобы сдаться здесь, serverfault.com - это моя пьеса «Богородица».
У меня, конечно, больше возможностей помимо работы. Я могу просто попросить сопровождающих RedHat обновить свой Ruby или приставать к определенным людям (вы знаете, кто вы), чтобы они ускорили свои усилия по CEntOS 7 ...
Ноты:
Примечание 1: я не нашел много на serverfault по этому вопросу. https://serverfault.com/search?q=r10k+on+CEntOS+6
Примечание 2: я задал это в рамках своего исследования по следующему предыдущему вопросу:
Как добавить сторонние модули марионеток, не передавая их в систему управления версиями?
r10k 1.5.1 - последняя версия, поддерживающая ruby 1.8.7. Даже если вы установите gem-версию 1.5.1, будут установлены зависимости более новые, чем когда-либо выпущенные, которые также несовместимы с ruby 1.8.7. Очевидно, это приводит к ошибкам, отличным от r10k, и причине, по которой вы можете смотреть на этот ответ.
yum install ruby-devel rubygems rubygem-rspec rubygem-rake
gem install --no-rdoc --no-ri semantic_puppet -v 0.1.3
gem install --no-rdoc --no-ri r10k -v 1.5.1
Ответ, по-видимому, был в Коллекциях Марионеток:
$ curl -O https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm
$ sudo rpm -ivh puppetlabs-release-pc1-el-6.noarch.rpm
$ sudo yum -d 1 install -y puppet-agent
$ /opt/puppetlabs/puppet/bin/ruby --version
ruby 2.1.9p490 (2016-03-30 revision 54437) [x86_64-linux]
r10k
будет отлично работать с этим.
Однако это дает вам более позднюю версию Puppet.
$ /opt/puppetlabs/bin/puppet --version
4.8.0
Это не может быть решено принудительной установкой более ранней версии puppet-agent
пакет, хотя:
$ sudo yum info puppet-agent-1.0.0 | grep 'puppet ('
: puppet (4.0.0)
Настоящий ответ здесь - скомпилировать вашу собственную версию Ruby и сделать ее доступной для вашей системы с FTP или внутреннего репо.
Чтобы ответить на явный вопрос:
Что касается того, сможете ли вы сохранить при этом свою старую умирающую Puppet 3.6, это еще не решено.
(Примечание: некоторые данные были намеренно опущены руководством, чтобы защитить виновных и / или глупцов.)