如何使用ansible的gitlab部署令牌?

如何使用ansible的gitlab部署令牌?,git,ansible,gitlab,Git,Ansible,Gitlab,我的公司有一个自我托管的GitLab服务器。 我正在编写一个Ansible剧本,它使用GitLab服务器上的几个项目来配置服务器 为了让目标服务器自动(非交互)克隆项目,我使用了部署令牌 首先,在我们的GitLab服务器的web界面上,我进入了我的第一个项目,并为它生成了一个部署密钥。我可以使用ansible将目标服务器配置为使用部署密钥,如下所示: - name: Have git store credentials on disk community.general.git_config

我的公司有一个自我托管的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/
我在ansible vault中设置了
gitlab\u项目\u部署\u用户名
gitlab\u项目\u部署\u密码
。这非常有效,除了在
/root/.git凭据中,凭据不是特定于git repo的,而是特定于服务器的

当我获得项目B的部署密钥时,它有一个完全不同的用户名和密码,但服务器是相同的。即使我将这两组凭据添加到
/root/.git credentials
git
ansible模块,甚至只是常规的
git
二进制文件,也不知道在克隆项目时要使用哪些凭据


有没有办法为一个项目指定一个部署密钥,为另一个项目指定一个不同的部署密钥?

为什么不直接将凭据设置到repo路径中

-名称:克隆项目A git回购
吉特:
repo:'https://{gitlab_project_A_deploy_username}:{{gitlab_project_A_deploy_password}}@company_gitlab_server.com/USER/project_A.git'
目的地:/some/dir/

为什么不直接将凭证设置到回购路径中

-名称:克隆项目A git回购
吉特:
repo:'https://{gitlab_project_A_deploy_username}:{{gitlab_project_A_deploy_password}}@company_gitlab_server.com/USER/project_A.git'
目的地:/some/dir/

如果要使用凭证的帮助器(无论是
存储
还是
缓存
),也可以使用该选项使其在路径上匹配

然后,对于store helper,保存

https://{{ gitlab_project_A_deploy_username }}:{{ gitlab_project_A_deploy_password }}@company_gitlab_server.com/USER/Project_A.git
https://{{ gitlab_project_B_deploy_username }}:{{ gitlab_project_B_deploy_password }}@company_gitlab_server.com/USER/Project_B.git

在凭据存储中。

如果要使用凭据的帮助程序(无论是
存储
还是
缓存
),也可以使用该选项使其在路径上匹配

然后,对于store helper,保存

https://{{ gitlab_project_A_deploy_username }}:{{ gitlab_project_A_deploy_password }}@company_gitlab_server.com/USER/Project_A.git
https://{{ gitlab_project_B_deploy_username }}:{{ gitlab_project_B_deploy_password }}@company_gitlab_server.com/USER/Project_B.git
在凭据存储中