首页 > 解决方案 > 如何将 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}

标签: kubernetesparametersansibleyamlpersistent-volumes

解决方案


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 }

推荐阅读