如何使用 saltstack 和 capistrano 使 minion 连接到 git 存储库

How to enable minion to connect to git repository using saltstack and capistrano

我正在尝试使用 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 回购时它失败了。

我知道这是因为 minion 的 ssh public 密钥没有添加到 github。

所以目标是。 运行盐云创建实例 运行 salt highstate 安装应用所需的一切 运行 capistrano 部署以启动应用程序

我也想自动化 git集线器授权过程。我的意思是一旦创建了 minion,minion 应该能够克隆 git repo 而无需任何手动干预。

我很困惑这可以通过 capistrano 或 saltstack 完成。

我使用 github ssh 转发来实现这一点。 这是我所做的更改。

为 github

启用 ssh forwarding 的步骤

然后在 capistrano deploy.rb 文件中通过添加 forward_agent: true

配置 ssh 转发
set :ssh_options, {
 user: 'user',
 auth_methods: %w(publickey),
 port: <some port>,
 forward_agent: true
}