具有环境变量的 Ansible 剧本

Ansible playbook with environment variable

我试图设置一个 gitlab 管道来创建一个 rabbitmq 独立机器,我使用 rockandska/ansible-role-rabbitmq 来做到这一点。但是在 defaults/main.yaml 中需要创建一些带密码的用户,但我不想在我的 git 存储库中提交密码。所以我需要从 gitlab ci/cd 环境变量中获取传递值。

但我没有得到这个,我试图在

中创建一个文件

vars/main.yml

---

rabbitmq_admin_pass: ${RABBITMQ_PASSWORD}

在 defaults/main.yml 中我使用

rabbitmq_users_to_create:
  - user: admin
    password: "{{ rabbitmq_admin_pass }}"
    vhost: /
    configure_priv: .*
    read_priv: .*
    write_priv: .*
    tags: administrator

但不起作用,它创建用户但使用“${RABBITMQ_PASSWORD}”传递 :D

ps。 我已经输入了 .gitlab-ci.yml 变量指令,就像这样:

variables:
  ANSIBLE_BECOME_PASSWORD: ${ANSIBLE_BECOME_PASSWORD}
  RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD}

有人知道这样做吗?

谢谢!

当 运行 ansible-playbook.

时,您可以将环境变量作为“extra_vars”传递
ansible-playbook ... --extra-vars "rabbitmq_admin_pass=${RABBITMQ_PASSWORD}"

虽然这会在命令行上打印出秘密。

另一种可能性是使用 lookup plugin

password: "{{ lookup('env','RABBITMQ_PASSWORD') }}