Amazon-Ec2

亞馬遜 ec2 實例上的 Foreman 安裝

  • July 14, 2016

您好,感謝您的閱讀,

我目前正在為我們的 ec2 實例設置 puppet 服務,並決定試一試工頭(節點證書管理和自動乘客設置似乎不錯)。

不幸的是,我在安裝時遇到了困難。我正在使用新的“Amazon Linux AMI x86_64 PV”:

[root@hostname ~]# uname -a
Linux hostname 3.10.35-43.137.amzn1.x86_64 #1 SMP Wed Apr 2 09:36:59 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

並嘗試了以下方法:

sudo yum -y update
sudo yum -y install http://yum.theforeman.org/releases/1.1/el6/x86_64/foreman-release.rpm
sudo yum -y install foreman-installer

結果是:

Error: Package: rubygem-foreman_api-0.1.11-1.el6.noarch (foreman)
      Requires: rubygem(rest-client) >= 1.6.1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

這些建議似乎沒用(–skip-broken 安裝除了工頭/木偶之外的所有依賴項)。我最終來到這裡 並嘗試安裝儲存庫(刪除舊儲存庫後)

sudo yum -y remove epel-release
sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

現在再次,我嘗試了什麼:

sudo -y update
sudo -y install foreman-installer

導致相同的錯誤。沒有先前更新的安裝是可能的(儘管 yum 會抱怨公鑰)並導致以下錯誤:

[ec2-user@hostname ~]$ foreman-installer
/usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- highline/import (LoadError)
       from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
       from /usr/sbin/foreman-installer:3:in `<main>'

我在嘗試設置乘客並最終投降時遇到了類似的問題。我認為這是由於 ruby​​ 版本衝突而發生的,所以:

[root@hostname puppet]# ruby --version
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]
[root@hostname puppet]# gem --version
2.0.14
[root@hostname puppet]# ls /usr/bin | grep ruby
ruby
ruby1.8
ruby2.0
[root@hostname puppet]# ls /usr/bin | grep gem
gem
gem2.0

有人遇到過同樣的問題嗎?我該如何解決這個問題?

在此先感謝您閱讀所有這些內容!

Red Hat Enterprise Linux 及其複製的軟體包與 Amazon Linux 不兼容。您將需要找到一種不同的方式來安裝 Foreman,或者最好找到不同的 Linux 發行版(Amazon Linux 存在許多問題,使其通常不適合幾乎任何東西)。

因為我最近在亞馬遜上花了很多時間在 puppet 上,所以我想更新一下。

由於 amazon linux 上的 puppet 版本顯然與預設的 ruby​​2.0 安裝不兼容,因此您必須安裝缺少的 ruby​​1.8 內容並連結到正確的文件。這應該可以解決問題:

準備安裝:

if ! yum repolist | grep -q puppetlabs;
then
   echo "..enabling puppet repository.."
   # https://tickets.puppetlabs.com/browse/PUP-2132
   echo -e "[main]\nenabled = 0" > /etc/yum/pluginconf.d/priorities.conf
   rpm --quiet -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-10.noarch.rpm
fi

echo "..updating.."
yum -y --quiet clean all
yum -y --quiet update

if readlink /etc/alternatives/ruby | grep -q "ruby2\.0"
then
   echo "..making ruby1.8 default.."
   ln -sf /usr/bin/ruby1.8 /etc/alternatives/ruby
fi

if readlink /etc/alternatives/gem | grep -q "gem2\.0"
then
   echo "..making gem1.8 default.."
   ln -sf /usr/bin/gem1.8 /etc/alternatives/gem
fi

並使用 apache 安裝 puppet:

PACKAGE="puppet"
#PACKAGE="puppet-server"

echo "..installing "$PACKAGE" and requirements.."
yum -y --quiet install "$PACKAGE" rubygem18-json

最後是乘客:

echo "..installing passenger and requirements.."
yum -y install httpd httpd-devel mod_ssl ruby18-devel rubygems gcc gcc-c++ curl-devel openssl-devel zlib-devel
gem install rack passenger

passenger-install-apache2-module --auto

不要忘記做通常的事情(config.ru 和 apache 的 vhost 配置),然後一切都應該工作。因為我們選擇不使用它,所以我沒有和工頭一起嘗試這個,但是它是可能的,如果是這樣的話應該工作得非常相似。

引用自:https://serverfault.com/questions/604700