2014-12-04 3 views
0

Я следую этому руководству: http://www.gotealeaf.com/blog/chef-basics-for-rails-developers, где у нас есть собственный рецепт. Код ниже - рецепт. Проблема заключается в блоке кода, который начинается с cookbook_file «id_rsa» и заканчивается прямо перед, # Добавить Github как известный хост, комментарий. Мне удалось пройти через блок cookbook_file «id_rsa» и блок «id_rsa.pub» cookbook_file, перемещая мои файлы id_rsa и id_rsa.pub в каталог rails-stack/files/default /, но теперь он прерывается, когда он пытается блок sudo_without_password. Удивительно, но если я создаю бродягу после каждой ошибки, вызванной действием: blocks_if_missing блокирует конфигурацию до тех пор, пока куки-ключи cookbooks_file блокируются, но она застряла там; даже после инициализации, когда я впервые получаю ошибку. Любые идеи о том, что происходит? Пожалуйста, будьте как можно более наглядными, я относительно новичок в детопсах и знаю только некоторые из бэкграундов и шеф-поваров. Заранее спасибо!Рецепт не работает на crete_if_missing

execute "apt-get update" do 
    command "apt-get update" 
end 

# OS Dendencies 
%w(git ruby-dev build-essential libsqlite3-dev libssl-dev).each do |pkg| 
    package pkg 
end 

# Deployer user, sudoer and with known RSA keys 
user_account 'deployer' do 
    create_group true 
end 
group "sudo" do 
    action :modify 
    members "deployer" 
    append true 
end 
cookbook_file "id_rsa" do 
    source "id_rsa" 
    path "/home/deployer/.ssh/id_rsa" 
    group "deployer" 
    owner "deployer" 
    mode 0600 
    action :create_if_missing 
end 
cookbook_file "id_rsa.pub" do 
    source "id_rsa.pub" 
    path "/home/deployer/.ssh/id_rsa.pub" 
    group "deployer" 
    owner "deployer" 
    mode 0644 
    action :create_if_missing 
end 

# Allow sudo command without password for sudoers 
cookbook_file "sudo_without_password" do 
    source "sudo_without_password" 
    path "/etc/sudoers.d/sudo_without_password" 
    group "root" 
    owner "root" 
    mode 0440 
    action :create_if_missing 
end 

# Authorize yourself to connect to server 
cookbook_file "authorized_keys" do 
    source "authorized_keys" 
    path "/home/deployer/.ssh/authorized_keys" 
    group "deployer" 
    owner "deployer" 
    mode 0600 
    action :create 
end 

# Add Github as known host 
ssh_known_hosts_entry 'github.com' 

# Install Ruby Version 
include_recipe 'ruby_build' 

ruby_build_ruby '2.1.2' 

link "/usr/bin/ruby" do 
    to "/usr/local/ruby/2.1.2/bin/ruby" 
end 

gem_package 'bundler' do 
    options '--no-ri --no-rdoc' 
end 

# Install Rails Application 
include_recipe "runit" 
application 'capistrano-first-steps' do 
    owner 'deployer' 
    group 'deployer' 
    path '/var/www/capistrano-first-steps' 
    repository '[email protected]:gotealeaf/capistrano-first-steps.git' 
    rails do 
    bundler true 
    database do 
     adapter "sqlite3" 
     database "db/production.sqlite3" 
    end 
    end 
    unicorn do 
    worker_processes 2 
    end 
end 

**** ******* EDIT

С момента написания постановка вопроса в первый раз, я закомментировать блок sudo_without_password и был в состоянии найти работу вокруг, добавив

ssh_keygen true 

к блоку «deployer» пользователя_account.

Я также поместил пустой файл authorized_keys в rails-stack/files/default /, и это помогает блокировку cookbook_file 'authorized_keys' запускать без ошибок.

Теперь я получаю эту ошибку, когда бродяга/повар пытается тянуть на примере Repo

==> default: [2014-12-04T22:44:18+00:00] ERROR: deploy_revision[capistrano-first-steps] (/tmp/vagrant-chef-3/chef-solo-2/cookbooks/application/providers/default.rb line 123) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '128' 
==> default: ---- Begin output of git ls-remote "[email protected]:gotealeaf/capistrano-first-steps.git" "HEAD" ---- 
==> default: STDOUT: 
==> default: STDERR: Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts. 
==> default: Permission denied (publickey). 
==> default: fatal: Could not read from remote repository. 
==> default: 
==> default: Please make sure you have the correct access rights 
==> default: and the repository exists. 
==> default: ---- End output of git ls-remote "[email protected]:gotealeaf/capistrano-first-steps.git" "HEAD" ---- 
==> default: Ran git ls-remote "[email protected]:gotealeaf/capistrano-first-steps.git" "HEAD" returned 128 
==> default: [2014-12-04T22:44:18+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 
+0

Можете ли вы дать нам сообщение об ошибке для работы? –

+0

Редактирование @TejayCardon up! : D – engineerKev

ответ

0

Вы, вероятно, придется указать application ресурс закрытого ключа, который будет использоваться использоваться для клонирования репо.

application 'capistrano-first-steps' do 
    ... 
    deploy_key lazy { File.read("/home/deployer/.ssh/id_rsa") } 
    ... 
end 

Подробнее - https://supermarket.chef.io/cookbooks/application

+0

Добавление deploy_key, как вы показали выше, не исправило проблему git. : /. Есть ли что-нибудь еще, что я могу попробовать? – engineerKev

+0

Является ли открытый ключ авторизированным на GitHub? Для управления жизненным циклом ваших ключей вы можете использовать кучную книгу ['' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. – cassianoleal

+0

Я на самом деле просто понял это. Я столкнулся с проблемой, подобной этому при использовании марионетки, и решение этой проблемы также решило мою текущую проблему шеф-повара. – engineerKev

1

Ответ прост, после того, как я вспомнил, у меня была подобная проблема с куклой. По какой-то причине, не знает, почему с помощью

[email protected]:gotealeaf/capistrano-first-steps.git 

Не хорошо сидеть с бродячей/поваром/марионеткой. Так, что я сделал изменить эту строку в

https://github.com/gotealeaf/capistrano-first-steps 

и что сделал это, мой конфиг из коробки работал и не было никаких проблем!