使用用户名和密码在Chef中克隆私有git仓库

108次阅读
没有评论

问题描述

想要在Chef中使用git资源克隆一个git仓库,但是不想使用SSH,而是想使用用户名和密码。仓库的安全性对他来说不重要,但是不想公开,因为这不是他工作的一个很好的示例。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Chef中使用git资源克隆私有git仓库时,可以通过在URL中包含用户名和密码来实现。以下是具体步骤:
1. 在Chef的recipe中,使用git资源来克隆私有git仓库。在repository属性中,将URL设置为包含用户名和密码的格式。例如:

git 'My private repo' do
  repository 'https://<username>:<password>@github.com/<username>/<repo name>.git'
  reference 'master'
  action :sync
end

请将<username><password>替换为你的git仓库的用户名和密码,将<repo name>替换为你的git仓库的名称。
2. 运行Chef来执行该recipe,Chef会使用提供的用户名和密码来克隆私有git仓库。

方案2

如果你不想在URL中明文包含用户名和密码,你可以考虑使用Chef Vault来存储用户名和密码,并在recipe中使用Chef Vault来获取它们。以下是具体步骤:
1. 在Chef Vault中创建一个item,用于存储用户名和密码。例如,创建一个名为git_credentials的item,并将用户名和密码存储在其中。
2. 在Chef的recipe中,使用Chef Vault来获取用户名和密码。例如:

git_credentials = chef_vault_item('vault_name', 'git_credentials')
username = git_credentials['username']
password = git_credentials['password']

git 'My private repo' do
  repository "https://#{username}:#{password}@github.com/<username>/<repo name>.git"
  reference 'master'
  action :sync
end

请将vault_name替换为你的Chef Vault的名称,将<username><repo name>替换为你的git仓库的用户名和名称。
3. 运行Chef来执行该recipe,Chef会使用从Chef Vault获取的用户名和密码来克隆私有git仓库。

请注意,使用用户名和密码在URL中明文传输是不安全的,因此建议使用方案2中的方法来存储和获取用户名和密码。

参考链接:
Chef git resource documentation
Chef Vault documentation

正文完