2015-06-19 38 views
0

我想创建使用saltstack和capistrano在ec2上运行我的rails应用程序。如何使minion连接到使用saltstack和capistrano的git存储库

这是我迄今已成功完成的工作。 使用盐云和盐主我能够创建一个新的奴才实例,并设置应用程序运行所需的一切,即红宝石,铁轨,独角兽,MySQL等

我已经为capistrano做了适当的配置。当我尝试部署时,我看到以下错误。

DEBUG [ed84c6ab] Command: (GIT_ASKPASS=/bin/echo GIT_SSH=/pathto/git-ssh.sh /usr/bin/env git ls-remote -h [email protected]: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的ssh公钥没有添加到github中。

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

我想太自动化的github授权过程。我的意思是一旦创建了minion,那么minion应该能够克隆git repo而无需任何人工干预。

我很困惑,因为这可以通过capistrano或saltstack来完成。

+1

使ssh forwarding为github上

在Capistrano的deploy.rb文件配置SSH转发

那么如何推动一个已知SSH密钥的奴才?这可以通过saltstack完成。或者,您可以创建一个“新的个人访问令牌”,并将其用于基于http(s)的基本身份验证:https://developer.github.com/v3/auth/#basic-authentication – ahus1

+0

所以,您的意思是我的本地私钥或者其公钥在github上可用的主人可以复制到其他机器上? – bitkot

+0

复制SSH密钥是一种可能的选择。带有个人访问令牌和HTTP基本身份验证的另一个选项将为您提供对您的小伙伴或主人可以执行的操作(即只读访问github回购)的细粒度访问控制。所有这些信息都应该安全地存储在支柱中,如果你不想让其他奴才来访问它。 – ahus1

回答

0

我用github ssh转发来实现这个功能。 以下是我所做的更改。

步骤加入forward_agent: true

set :ssh_options, { 
user: 'user', 
auth_methods: %w(publickey), 
port: <some port>, 
forward_agent: true 
} 
相关问题