在可分析的行动手册中使用GitLab-ci变量 [英] Using gitlab-ci vars inside an ansible playbook
本文介绍了在可分析的行动手册中使用GitLab-ci变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用Ansible剧本在码头容器内设置一个远程环境。本攻略将使用我在GitLab CI/CD配置中设置的变量从GitLab-ci运行。我如何才能获得它?
这是我要使用的模板。如何从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
推荐答案
因为GitLab-ci变量只是您的作业中的环境变量,并且您的Ansible控制器在该作业中运行,所以您可以使用env
lookup从控制器中读取它们。
请注意:
docker_container
module'senv
parameter需要一个字典,而不是像您的示例中那样由bash组成的以新行分隔的字符串环境变量定义。- 作为一种安全措施,您应该在使用变量之前检查是否定义了它们(使用
assert
或fail
任务),或者在没有定义的情况下使用缺省值。我的示例使用一个缺省值。有关提供默认值的详细信息,请参阅ansible documentation(和original jinja2 documentation以了解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) }}"
这篇关于在可分析的行动手册中使用GitLab-ci变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文