我正在尝试使用saltstack和capistrano在ec2上创建运行我的rails应用程序。
这是我迄今为止成功完成的工作。 使用salt cloud和salt master我可以创建一个新的minion实例并设置应用程序运行所需的一切,即ruby,rails,unicorn,mysql等。
我为capistrano做了正确的配置。当我尝试部署时,我看到以下错误。
DEBUG [ed84c6ab] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/pathto/git-ssh.sh /usr/bin/env git ls-remote -h git@github.com:somehost/somerepo.git )
DEBUG [ed84c6ab] Warning: Permanently added 'github.com,ip' (RSA) to the list of known hosts.
DEBUG [ed84c6ab] Permission denied (publickey).
DEBUG [ed84c6ab] fatal: Could not read from remote repository.
DEBUG [ed84c6ab]
DEBUG [ed84c6ab] Please make sure you have the correct access rights
DEBUG [ed84c6ab] and the repository exists.
DEBUG [ed84c6ab] Finished in 12.600 seconds with exit status 128 (failed).
所以这意味着从我当地的capistrano能够连接到minion但是当它试图检查git repo时它会失败。
我知道这种情况正在发生,因为minion的ssh公钥没有添加到github。
所以目标是。 运行salt cloud来创建实例 运行salt highstate来安装app所需的一切 运行capistrano deploy以启动应用程序
我也希望自动化github授权流程。我的意思是一旦创建了minion,minion应该能够克隆git repo而无需任何人工干预。
我很困惑,可以通过capistrano或saltstack来完成。
答案 0 :(得分:0)
我使用github ssh转发来实现这一目标。 这是我所做的改变。
为github启用ssh forwarding的步骤
然后在capistrano deploy.rb文件中添加forward_agent: true
set :ssh_options, {
user: 'user',
auth_methods: %w(publickey),
port: <some port>,
forward_agent: true
}