ansible - ansible-galaxy 无法在 gitlab-ci 管道中提取角色
问题描述
ansible-lint
由于运行时身份验证错误,gitlab-ci 管道中的步骤失败,该错误会ansible-galaxy install -r requirements.yml
提取 中定义的角色依赖项requirements.yml
并从 git 克隆角色。
我尝试通过 CICD 变量传递身份验证令牌,但它不喜欢那样。
需求.yml
- src: git+https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/../ansible/roles/ansible-role-s3-yumrepo.git
version: master
scm: git
但它失败并出现以下错误
Starting galaxy role install process
[WARNING]: - ansible-role-s3-yumrepo was NOT installed successfully: -
command /usr/bin/git clone https://gitlab-ci-
token:${CI_JOB_TOKEN}@gitlab.com/../ansible/roles/ansible-role-s3-yumrepo.git
ansible-role-s3-yumrepo failed in directory /root/.ansible/tmp/ansible-local-526mx2pctt4/tmp2n3_tp7_
(rc=128) - Cloning into 'ansible-role-s3-yumrepo'... remote: HTTP Basic:
Access denied fatal: Authentication failed for 'https://gitlab-ci-
token:${CI_JOB_TOKEN}@gitlab.com/../ansible/roles/ansible-role-s3-yumrepo.git/'
任何人之前都遇到过这个问题或知道更好的方法来处理这个问题(已编辑)
解决方案
问题是 ansible-galaxy 不支持环境变量替换。您可以硬编码 deploy-token-user 和 deploy-token
src: 'https://<GITLAB_DEPLOY_USER>:<GITLAB_DEPLOY_TOKEN>@mycompany.com/gitlab/prj/my-ansible-role.git'
或者如果你想/必须使用环境变量,你可以做一些这样的黑客:
cat requirements.yml|envsubst > requirements.yml_new
推荐阅读
- javascript - findByIdAndUpdate 不更新
- java - Freemarker 循环似乎没有按顺序打印
- html - 必要时如何使“inline-block”换行?
- visual-studio - 如何阻止 webpack 使用 .js 和 .js.map 文件污染我的文件夹?
- javascript - 如何将具有构造函数和道具的组件转换为使用钩子和道具的功能组件
- reactjs - 单击时如何在此侧边栏中进行下拉菜单?
- vue.js - 带有获取和设置的 VueJS 存储模式
- javascript - 用Javascript中的另一个句子数组计算单词数组中匹配单词的数量
- vhdl - 如何在 VHDL 中实现用于更改背景颜色的 VGA 控制器
- php - 如何检查表单是否已在本地主机上提交