在 ansible playbook 中使用 gitlab-ci vars

Rus*_*kar 3 ansible gitlab-ci infrastructure-as-code cicd

我想使用 Ansible playbook 在 docker 容器内设置远程环境。该剧本将从 gitlab-ci 运行,其中包含我在 Gitlab CI/CD 配置中设置的变量。我怎样才能做到这一点?

这是我想使用的模板。如何设置CI/CD 变量中的user_id和?password

tasks:
  - name: Run XYZ Container
    docker_container:
      name: XYZ
      restart_policy: on-failure
      image: xxxxxxxxxxx
      container_default_behavior: "compatibility"
      env:
        USER_ID= $USER_ID
        PASSWORD= $PASSWORD
Run Code Online (Sandbox Code Playgroud)

Zei*_*tor 7

由于 gitlab-ci 变量只是您作业中的环境变量,并且由于您的 ansible 控制器在该作业内运行,因此您可以使用查找env控制器中读取它们。

请注意:

  1. 模块docker_containerenv参数需要一个字典,而不是一个新行分隔的 bash 字符串,如示例中的环境变量定义。
  2. 作为一项安全措施,您应该在使用变量之前检查变量是否已定义(使用assert orfail任务),或者使用默认值以防未定义。我的示例使用默认值。有关提供默认值的更多信息,您可以查看ansible 文档(以及原始 jinja2 文档以了解它d是 的别名default
tasks:
  - name: Run XYZ Container
    docker_container:
      name: XYZ
      restart_policy: on-failure
      image: xxxxxxxxxxx
      container_default_behavior: "compatibility"
      env:
        USER_ID: "{{ lookup('env', 'USER_ID') | d('defaultuser', true) }}"
        PASSWORD: "{{ lookup('env', 'PASSWORD') | d('defaultpass', true) }}"
Run Code Online (Sandbox Code Playgroud)