首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Gitlab CI变量注入Ansible

将Gitlab CI变量注入Ansible
EN

Stack Overflow用户
提问于 2019-11-15 21:43:40
回答 3查看 3.1K关注 0票数 1

我正在使用Gitlab CI runners来执行Ansible攻略,但在将Gitlab中定义的变量推送到Ansible时遇到了问题。我知道我可以使用lookup('env','var')来获取变量,但这在yml清单文件中似乎不起作用。例如:

代码语言:javascript
运行
复制
# List everything in vCenter
- ansible-inventory --list -i vSphere/vxrail.vmware.yml

vxrail.vmware.yml

代码语言:javascript
运行
复制
plugin: vmware_vm_inventory
strict: False
hostname: XXX.XXX.XXX.XXX
username: administrator@vsphere.local
# This isn't working
password: lookup('env','vCenterAdminPass')
validate_certs: False
with_tags: True

如何获得传入的变量?

EN

回答 3

Stack Overflow用户

发布于 2019-11-18 17:14:35

让我们使用--extra-vars (或-e)来传递变量,请参见https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#passing-variables-on-the-command-line

下面的代码片段展示了如何将额外的变量传递到我的Gitlab CI脚本部分。

代码语言:javascript
运行
复制
deploy_ec2:
  stage: deploy_ec2
  script:
    - ansible-playbook cuong-conf/main.yml --limit="${CI_COMMIT_REF_NAME}" -e "env=${CI_COMMIT_REF_NAME} app=${CI_PROJECT_NAME} method=${CI_JOB_STAGE} app_path=${APPLICATION_PATH}"
  only:
    - staging
    - demo
    - production
  tags:
    - gitlab_runner
票数 5
EN

Stack Overflow用户

发布于 2019-11-15 22:13:49

虽然我不太确定在清单插件配置文件中查找是否有效(我会让您尝试一下),但您编写的代码根本不能工作。您实际上是在说密码是字符串"lookup('env','vCenterAdminPass')“。

密码的内容应该是查找的结果,jinja2将对其进行处理。因此,您需要将表达式包含在jinja2模板块中:

代码语言:javascript
运行
复制
password: "{{ lookup('env','vCenterAdminPass') }}"
票数 4
EN

Stack Overflow用户

发布于 2019-12-31 07:28:27

我最终创建了一个构建作业,将密码注入清单文件:

代码语言:javascript
运行
复制
- 'echo "password: $vCenterAdminPass" >> vSphere/vxrail.vmware.yml'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58878311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档