У меня есть k8s PV C yaml, в котором есть несколько pv c. Ниже приведен образец с парой PV C. (Мой оригинальный файл pv c содержит 10 PV C)
---
# BEGIN ANSIBLE MANAGED BLOCK
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
csi.myorg.com/description: This is my custom description for CSI
csi.myorg.com/limitIops: '-1'
csi.myorg.com/performancePolicy: default
labels:
ansible: csitest-2020-02-19-22-46-1582181166
pvcRef: csi-pvc-ansibles-1
name: myorg-pvc-2020-02-19-22-46-1582181166
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: myorg-storageclass-2020-02-19-22-46-1582181161
# END ANSIBLE MANAGED BLOCK
---
# BEGIN ANSIBLE MANAGED BLOCK
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
csi.myorg.com/description: This is my custom description for CSI
csi.myorg.com/limitIops: '-1'
csi.myorg.com/performancePolicy: default
labels:
ansible: csitest-2020-02-19-22-46-1582181168
pvcRef: csi-pvc-ansibles-2
name: myorg-pvc-2020-02-19-22-46-1582181168
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: myorg-storageclass-2020-02-19-22-46-1582181161
# END ANSIBLE MANAGED BLOCK
---
Я должен добавить тип файловой системы в соответствии со значением, которое я передаю. Ниже приведен мой код для этого.
- name: Read PVC config file {{ pvc_configfile }}
shell: cat {{ pvc_configfile }}
register: pvcconfig
delegate_to: localhost
- name: Create PVC object from YAML {{ pvc_configfile }}
set_fact:
pvcConfigYaml: "{{ pvcconfig.stdout | from_yaml_all | list }}"
delegate_to: localhost
- name: Printing PVC object
debug: var=pvcConfigYaml
- set_fact:
fstype: "ext3"
- name: Update file system in PVC yaml dictionary
set_fact:
PvcYaml: "{{ PvcYaml|default([]) + [ item | combine({ 'metadata': {'annotations' : { 'csi.myorg.com/fstype' : fstype }}},recursive=True )] }}"
with_items: "{{pvcConfigYaml}}"
Поскольку последний шаг сложен для чтения, я изменил многострочность, как показано ниже:
- name: Update file system in PVC yaml dictionary
set_fact:
PvcYaml: >-
"{{ PvcYaml|default([]) + [ item | combine({ 'metadata': {'annotations' : { 'csi.myorg.com/fstype' : fstype }}},recursive=True )] }}"
with_items: "{{pvcConfigYaml}}"
Но он не работает, как показано ниже.
СБОЙ! => {"msg": "Произошла непредвиденная ошибка шаблонного типа (\" {{PvcYaml | default ([]) + [item | Объединить ({'metadata': {'annotations': {'csi.myorg.com/ fstype ': fstype}}}, recursive = True)]}} \ "): приведение к Unicode: нужна строка или буфер, список найден"}
Как сделать это читаемым? Есть ли другой чистый способ добавить элемент { 'csi.myorg.com/fstype' : fstype }
к более чистому способу yaml?