Como fazer o uso do Chef-Server Ruby 1.9 no Ubuntu?

4

Eu instalei o Chef Server no Ubuntu 12.04 usando as instruções oficiais , que usam o "instalador omnibus" que tem rubi incorporado 1.8.7.

Estou tentando instalar janelas-faca , mas quando executo gem install knife-windows , recebo este erro:

ERROR:  Error installing knife-windows:
        gssapi requires Ruby version >= 1.9.1.

Eu tentei instalar RVM e 1.9.3, mas recebi esse erro e recuei:

/opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:900:in 'report_activate_error': Could not find RubyGem chef (>= 0) (Gem::LoadError)
    from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:248:in 'activate'
    from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:1276:in 'gem'
    from /opt/vagrant_ruby/bin/knife:18

Qual é a maneira correta de instalar o servidor & faca com Ruby 1.9.x?

    
por Eric Lathrop 28.05.2013 / 21:05

2 respostas

3

Parece que o Chef Server está instalado em uma máquina virtual criada pelo Vagrant ( /opt/vagrant_ruby ). No entanto, o Chef Server 11+ é construído em Erlang, não em Ruby. Ele vem com Ruby, mas você não deve usá-lo diretamente. Está lá para gerenciar o Chef Server com chef-server-ctl .

A instalação na caixa Vagrant acima provavelmente coloca os vários binários Ruby no $ PATH padrão, o que significa que usar gem install tentará instalar o knife-windows gem no Ruby colocado lá pelo Vagrant.

Para mais explicações, os pacotes que o Opscode oferece para o Chef e o Chef Server incluem sua própria instalação separada do Ruby. Opscode faz isso porque as plataformas suportadas pelo Chef e pelo Chef Server têm versões diferentes (desatualizadas) do Ruby fornecidas por padrão.

Dia a dia, a maior parte da interação com o Chef Server será através da API usando knife (ou o webui). knife e seus plugins devem ser usados de um sistema "workstation" como um laptop local. Se o Chef for o único motivo para ter o Ruby instalado, use o Ruby incorporado no pacote Chef , que deve ser instalado em o sistema local. Os instaladores estão disponíveis para a maioria das principais plataformas, incluindo Ubuntu, Windows, OS X e outros. Vários cabeçalhos de desenvolvimento e ferramentas de construção (gcc, make, etc) podem ser necessários dependendo dos plugins.

Por que vale a pena, a versão do Ruby no pacote "omnibus" atual para o Chef Server não é 1.8.7. Pode ser encontrado em:

ubuntu@os-9348884648703137:~$ /opt/chef-server/embedded/bin/ruby --version
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]

(versão atual na redação deste artigo)

A versão do Ruby usada no pacote do cliente Chef geralmente é atualizada com mais frequência, pois as necessidades de uso do cliente / estação de trabalho são mais rápidas do que o Chef Server. A versão incorporada do Ruby no pacote do cliente Chef é:

% /opt/chef/embedded/bin/ruby --version
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin11.2.0]

Opscode planeja atualizar esta versão na próxima versão, por isso pode ser diferente do que é mostrado para os futuros visitantes deste site. Observe também que isso veio de uma instalação de "estação de trabalho local" em vez do servidor Chef.

    
por 29.05.2013 / 18:18
0

Eu ficaria desconfortável usando o RVM para uma instalação do 1.9.3 para um servidor chefe.

Gostaria de instalar o 1.9.3 do, digamos, PPA do Brightbox (aqui estão as instruções detalhadas , mas é basicamente adicionar esse PPA e substituir 1.8 por 1.9, ou seja, sudo apt-get install ruby1.9.3 .

Uma vez que o 1.9.3 e o RubyGem associado estejam no lugar, ele deve ser suficiente para executar gem install chef , para que o chef-server seja instalado como uma gem, ao invés de um pacote deb.

    
por 28.05.2013 / 21:17