我正在使用 Ansible 来自动化
oc process -f allresources.yaml | oc apply -f -
命令。在 allresources.yaml
模板内部,我有我的路线、服务等...我想向模板添加额外但可选的路线。该模板将在 oc apply
阶段部署 HTTPS 和(可选)HTTP 路由。开发人员并不总是需要 HTTP 路由,因此我希望可以在存储库 Jenkinsfile 中对其进行配置。
问题归结为:有没有办法向
oc process
添加选择器/条件,从而仅评估与选择器/条件匹配的资源。最终,Ansible 将评估 Jenkins 配置并确定如何处理 oc process
命令。
大致如下:
oc process -f allresources.yaml APP=someapp ENV=dev --ignore="HTTPRoute" | oc apply -f -"
openshift 模板中不支持条件。但是,由于您使用的是 Ansible,因此您有很多选择:
您可以拥有多个模板并有条件地应用它们。
- name: apply main templates
shell: oc process -f allresources.yaml | oc apply -f-
- name: apply route templates
when: route_required
shell: oc process -f route.yaml | oc apply -f-
您可以通过 Ansible
template
模块使用 Jinja 模板,而不是 openshift 模板。
- name: render templates
template:
src: allresources.yaml.j2
dest: allresources.yaml
- name: apply generated manifests
command: oc apply -f allresources.yaml