Chef レシピでプライベート リポジトリを複製するのに苦労しています。さて、昨日は動作していましたが、Vagrant ボックスを 6 回「シェフ」した後、壊れてしまいました。ご想像のとおり、私はシェフの初心者です。
こちらの deploy_resource ガイドに従って、 deploy.rb レシピ (短縮) を作成しました。
deploy_branch "/var/www/html/ps" do
repo git@github.com:simonmorley/private-v2.git
ssh_wrapper "/tmp/.ssh/chef_ssh_deploy_wrapper.sh"
branch "rails4"
migrate false
environment "RAILS_ENV" => node[:ps][:rails_env]
purge_before_symlink %w{conf data log tmp public/system public/assets}
create_dirs_before_symlink []
symlinks( # the arrow is sort of reversed:
"conf" => "conf", # current/conf -> shared/conf
"data" => "data", # current/data -> shared/data
"log" => "log", # current/log -> shared/log
"tmp" => "tmp", # current/tmp -> shared/tmp
"system" => "public/system", # current/public/system -> shared/system
"assets" => "public/assets" # current/public/assets -> shared/assets
)
scm_provider Chef::Provider::Git # is the default, for svn: Chef::Provider::Subversion
notifies :restart, "service[ps]"
notifies :restart, "service[nginx]"
end
デフォルトでは、ディレクトリなどを作成するために次のものがあります。
directory "/tmp/.ssh" do
action :create
owner node[:base][:username]
group node[:base][:username]
recursive true
end
template "/tmp/.ssh/chef_ssh_deploy_wrapper.sh" do
source "chef_ssh_deploy_wrapper.sh.erb"
owner node[:base][:username]
mode 0770
end
# Put SSH private key to be used with SSH wrapper
template "/tmp/.ssh/id_deploy" do
source "id_rsa.pub.erb"
owner node[:base][:username]
mode 0600
end
そしてラッパーで:
#!/bin/sh
exec ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i "/tmp/.ssh/id_deploy" "$@"
公開鍵を作成し、これを github にアップロードしました。
レシピをデプロイすると、次のエラーが表示されます。
deploy_branch[/var/www/html/ps] action deployEnter passphrase for key '/tmp/.ssh/id_deploy':
明らかに、パスワードが設定されていません...したがって、秘密鍵が欠落している必要があります..
たまたま、レシピから id_deploy キーを削除し、フォルダーを削除して、もう一度実行しました。なんと、動作し始めました... id_rsa.pub && id_rsa ファイルは、テストのために手動で生成したときから /root/.ssh にあったためです。
ここで何が間違っているのかわかりません。したがって、私の質問は次のとおりです。
- 展開先の各ノードに秘密鍵と公開鍵が必要ですか? ドキュメントはこれについて言及していません。
- これは非 root ユーザーとしてデプロイすべきではありませんか? 自分のロール ファイルにユーザーを設定しました。
- ssh_wrapper が本来の動作をしないのはなぜですか