来自 github 操作秘密的 Ansible 变量

我正在尝试在我的 ansible 剧本中使用 Githubactions 机密,然后将其传递给模板,但是没有用于 GHA 的查找插件。这不起作用:

- hosts: the-host
  vars:
    influxdb_pass: "{{ lookup('env', 'secret.INFLUXDB_PASS' }}"

我的解决方法是通过 GHA 环境变量公开秘密并使用 ansible env 查找插件:

name: Pull Request - Ansible
on:
  pull_request:
    branches:
      - master
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Config updates
        env:
          INFLUXDB_PASS: ${{ secrets.INFLUXDB_PASS }}
- hosts: the-host
  vars:
    influxdb_pass: "{{ lookup('env', 'INFLUXDB_PASS' }}"

问题是我管理了大量的秘密,而且不得不这样做很烦人:

1.在repo设置中添加secret
2.在ansible-playbook中定义变量

  1. 在 GHA 工作流中通过环境变量显式暴露秘密。

当在其他 CI 工具(例如 Gitlab)中您不需要显式公开秘密时,您可以直接将秘密作为 env vars 使用。

有人对 GHA 的更好方法有建议吗?

stack overflow Ansible variable from github actions secret
原文答案

答案:

作者头像

you can pass them as extra-vars,

ansible-playbook /path_to/ansible-playbook/sample.yml -i /path_to/ansible-playbook/inventory.txt --extra-vars "host=$secrets.INFLUXDB_PASS"

I might not be correct in syntax but I think you have got the gist. please try it.