我正在使用Gitlab CI runners来执行Ansible攻略,但在将Gitlab中定义的变量推送到Ansible时遇到了问题。我知道我可以使用lookup('env','var')来获取变量,但这在yml清单文件中似乎不起作用。例如:
# List everything in vCenter
- ansible-inventory --list -i vSphere/vxrail.vmware.ymlvxrail.vmware.yml
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如何获得传入的变量?
发布于 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脚本部分。
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发布于 2019-11-15 22:13:49
虽然我不太确定在清单插件配置文件中查找是否有效(我会让您尝试一下),但您编写的代码根本不能工作。您实际上是在说密码是字符串"lookup('env','vCenterAdminPass')“。
密码的内容应该是查找的结果,jinja2将对其进行处理。因此,您需要将表达式包含在jinja2模板块中:
password: "{{ lookup('env','vCenterAdminPass') }}"发布于 2019-12-31 07:28:27
我最终创建了一个构建作业,将密码注入清单文件:
- 'echo "password: $vCenterAdminPass" >> vSphere/vxrail.vmware.yml'https://stackoverflow.com/questions/58878311
复制相似问题