Estou tentando descobrir uma coisa e gostaria da opinião de outra pessoa sobre isso. Instalei o chef no meu servidor Ubuntu (11.10) através do incrívelinstalação omnibus. Funcionou perfeitamente bem. Consegui rodar chef-client e ele funcionou sem problemas.
Então instalei o RVM e dois rubis - e foi aí que meus problemas começaram. Logo depois de instalar todo o sistema RVM, ou seja, executando:
curl -L https://get.rvm.io | sudo bash -s stable
E instalei 2 rubis (definindo um dos rubis como rubi padrão no sistema). Não consegui mais executar o chef-client - estava recebendo "comando não encontrado" quando executado como usuário normal normal - estava pensando que o RVM bagunça alguns PATHS então esse foi o motivo. Eu pensei em executá-lo como root, ou seja:
sudo su -
chef-client
mesmo resultado. Então tentei o rvmsudo conforme sugerido por algumas pessoas, mas também não ajudou. Então eu dei uma última chance - executei como
sudo chef-client
E isso funcionou bem! Estou realmente confuso sobre por que o procedimento acima está funcionando e por que executar chef -client como root (ou seja, sudo su -; chef-client) NÃO está funcionando. Estou esquecendo de algo ? Eu realmente aprecio todas as dicas ou explicações, pois estou um pouco perdido. Eu gostaria de executar o chef-client como um daemon como root e não posso fazer isso com o comando sudo acima - eu sei que poderia definir um usuário com nopasswd e provavelmente funcionaria, mas eu realmente gostaria de entender o que é acontecendo aqui ;)
Responder1
Parece que você está tendo um problema de carregamento de caminho.
O instalador omnibus instala o Chef /opt/chef/bin/chef-client
e depois cria um link simbólico para/usr/bin/chef-client
referência1para que esteja disponível para todos os usuários no $PATH
.
No momento em que você instalar o rvm ele vai mexer com $PATH, especificamente, qual Ruby será usado pelo Chef, já que écarregando o Ruby do ambiente em execução no momentoao executar.
Ao executar com sudo su -
, você está mudando para root
o ambiente de e executando todos os carregadores profile/bashrc/bash_profile associados que configuram o ambiente de um usuário.
Ao executar com sudo
, você não carrega o ambiente inteiro, portanto o RVM não altera os caminhos.
Outro teste que você pode fazer para ver o impacto das diferenças de shell é executar:
sudo which ruby
sudo su - which ruby
E compare as diferenças.
Você pode querer dar uma olhada nochef-clientecookbook, que uma vez executado, irá ajudá-lo a configurar um daemon de serviço para controlar/configurar seu serviço chef-cliente (usamos isso em todos os nossos servidores).
Como o rvm é instalado como padrão em todo o sistema, talvez seja necessário desativá-lo para o root (ou para o usuário com o qual deseja executar o Chef, mas eu sugiro o root).