kubernetes - 如何将 k8s 模块中的变量作为参数传递给另一个 yml
问题描述
我想将变量从 ansible k8s 模块传递给另一个 yml
- name: Create a Secret
hosts: 127.0.0.1
connection: local
become: yes
tasks:
- name: Create minio-pvc
k8s:
state: present
kind: PersistentVolumeClaim
namespace: "{{ item.namespace }}"
src: /tasks/minio-pvc.yml
with_items:
- { namespace: demo1}
- { namespace: demo2}
- { namespace: test}
这是我想在里面发送参数的 yml 文件。所以我可以动态创建 PersistentVolumeClaim。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
creationTimestamp: null
labels:
app: minio-storage-claim
name: minio-pv-claim
selfLink: /api/v1/namespaces/demo/persistentvolumeclaims/minio-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
volumeName: $param(which must be in here)
像这样的东西;
namespace: "{{ item.namespace }}"
src: /tasks/minio-pvc.yml
param: "{{ item.param }}"
with_items:
- { namespace: demo1 , param: pv1}
- { namespace: demo2 , param: pv2}
- { namespace: test , param: pv3}
解决方案
You can use below.
- name: Create a Secret
hosts: 127.0.0.1
connection: local
become: yes
tasks:
- name: Create minio-pvc
k8s:
state: present
kind: PersistentVolumeClaim
namespace: "{{ item.namespace }}"
definition: "{{ lookup('template', '/tasks/minio-pvc.yml') | regex_replace('\\$param', item.param) }}"
with_items:
- { namespace: demo1, param: pv1 }
- { namespace: demo2, param: pv2 }
- { namespace: test, param: pv3 }
推荐阅读
- python - python GUI中的TypeError matplotlib
- android - 如何确保 AsyncTask 只执行一次?
- solr - 在 Hybris 中过滤 Solr 自动建议
- python - 使用 python 创建模型时处理 NAN 值
- excel - VBA 搜索值并从列表中删除(for 循环太慢)
- quill - Quill 自定义印迹:如何使 Quill 接受“传入”自定义代码
- node.js - Terser 丑化了 Node.js 环境中的 process.env,使其无法使用
- rest - 在rest api body中定义“外键”元素时的命名约定
- java - 字符串索引超出范围:0 在 Spring Boot 中使用 RedirectAttributes 时出错
- formatting - 更改 PyCharm 中 Black 插件的 88 个字符限制