es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Array 2D en YAML

Tengo un helm chart con el atributo 2darrayIPs. Este atributo toma valor del archivo values.yaml, que a su vez se da a través del comando de instalación de Helm.

helm-chart/templates/main.yaml

2darrayIPs: {{ .Values.2darrayIPs }}

helm-chart/values.yaml

2darrayIPs: [[]] – matriz vacía, este valor se da a través del comando de instalación

Paso una matriz 2d a través del comando de helm al instalar el chart.

helm install ….. -f val.yaml

val.yaml

2darrayIPs:
– – 1.1.1.1
– 2.2.2.2
– – 3.3.3.3
– 4.4.4.4

Recibo este error al instalar el helm chart:

Error: Error de análisis YAML en templates/main.yaml: error convirtiendo YAML a JSON: yaml: no se encontró “,” o “]” esperado.

Si doy una matriz como se muestra a continuación, la instalación tiene éxito pero en mis registros obtengo una sola matriz con solo un valor en lugar de dos:

[[1.1.1.1 2.2.2.2]]

val.yaml

2darrayIPs:
– – 1.1.1.1
– 2.2.2.2

¿Dónde estoy fallando?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en el mensaje de error “error converting YAML to JSON: yaml: did not find expected ‘,’ or ‘]'”, parece que la sintaxis YAML es incorrecta en el archivo main.yaml.

    La sintaxis para un arreglo 2D en YAML es:

    2darray:
      - - elemento1
        - elemento2
      - - elemento3
        - elemento4
    

    Entonces, en el archivo main.yaml, el atributo 2darrayIPs debería ser definido de la siguiente manera:

    2darrayIPs: {{ .Values.2darrayIPs | toYaml | nindent 2 }}
    

    Esto envía el valor de .Values.2darrayIPs a la función toYaml para convertirlo en sintaxis YAML, y luego aplica una indentación de 2 espacios para mayor legibilidad.

    En el archivo values.yaml, el atributo 2darrayIPs debería ser definido con un arreglo de arreglos vacío:

    2darrayIPs: [[]]
    

    Al pasar el arreglo 2D a través del comando de instalación de Helm, la sintaxis en val.yaml es correcta:

    2darrayIPs:
      - - 1.1.1.1
        - 2.2.2.2
      - - 3.3.3.3
        - 4.4.4.4
    

    Esto debería establecer correctamente el atributo 2darrayIPs como un arreglo 2D con dos elementos, cada uno de ellos contiene dos direcciones IP.

Comments are closed.