将 Gitlab CI 变量注入 Ansible

Bis*_*hop 1 ansible gitlab-ci

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

# List everything in vCenter
- ansible-inventory --list -i vSphere/vxrail.vmware.yml
Run Code Online (Sandbox Code Playgroud)

vxrail.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
Run Code Online (Sandbox Code Playgroud)

如何获取传入的变量?

小智 6

让使用--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
Run Code Online (Sandbox Code Playgroud)