Amazon-Ec2
亞馬遜 ec2 實例上的 Foreman 安裝
您好,感謝您的閱讀,
我目前正在為我們的 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 版本顯然與預設的 ruby2.0 安裝不兼容,因此您必須安裝缺少的 ruby1.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 配置),然後一切都應該工作。因為我們選擇不使用它,所以我沒有和工頭一起嘗試這個,但是它是可能的,如果是這樣的話應該工作得非常相似。