我想使用 Ansible playbook 在 docker 容器内设置远程环境。该剧本将从 gitlab-ci 运行,其中包含我在 Gitlab CI/CD 配置中设置的变量。我怎样才能做到这一点?
这是我想使用的模板。我该如何设置user_id
and password
来自 CI/CD 变量?
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
由于 gitlab-ci 变量只是您作业中的环境变量,并且您的 ansible 控制器在该作业中运行,因此您可以使用env lookup从控制器读取它们。
请注意:
- the docker_container模块的env范围需要一个字典,而不是一个新行分隔的 bash 字符串,如示例中的环境变量定义。
- 作为一项安全措施,您应该在使用变量之前检查变量是否已定义(使用assert or fail任务)或使用默认值以防万一。我的示例使用默认值。有关提供默认值的更多信息,您可以查看可靠的文档(以及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) }}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)