Joh*_*ohn 1 git gitlab ansible
我的公司有一个自托管的 GitLab 服务器。我正在编写一个 Ansible 剧本,它使用 GitLab 服务器中的多个项目来配置服务器。
为了让目标服务器自动(非交互式)克隆项目,我使用了部署令牌。
首先,在我们的 GitLab 服务器的 Web 界面上,我进入我的第一个项目并为其生成了一个部署密钥。我可以将目标服务器配置为使用 ansible 的部署密钥,如下所示:
- name: Have git store credentials on disk
community.general.git_config:
name: credential.helper
scope: global
value: store
- name: Add credentials for project A
copy:
dest: /root/.git-credentials
content: "https://{{ gitlab_project_A_deploy_username }}:{{ gitlab_project_A_deploy_password }}@company_gitlab_server.com"
- name: Clone Project A git repo
git:
repo: 'https://company_gitlab_server.com/USER/Project_A.git'
dest: /some/dir/
Run Code Online (Sandbox Code Playgroud)
我设置gitlab_project_A_deploy_username并gitlab_project_A_deploy_password在 ansible 保险库中。这很有效,除了在 中/root/.git-credentials,凭据不是特定于 git-repo 的 - 它们是特定于服务器的。
当我获得项目 B 的部署密钥时,它具有完全不同的用户名和密码,但服务器是相同的。即使我将两组凭据添加到ansible/root/.git-credentials模块git,甚至只是常规git二进制文件,也不知道在克隆项目时要使用哪些凭据。
有没有一种方法可以以某种方式为一个项目指定一个部署密钥,并为不同的项目指定不同的部署密钥?
为什么不直接将凭据设置到存储库路径中?
- name: Clone Project A git repo
git:
repo: 'https://{{ gitlab_project_A_deploy_username }}:{{ gitlab_project_A_deploy_password }}@company_gitlab_server.com/USER/Project_A.git'
dest: /some/dir/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4654 次 |
| 最近记录: |