如何让Ansible多行使用>忽略行中的空格?

mon*_*mon 2 yaml ansible

要在行线命令中进行缩进,希望将命令的后续行中的空格分成多行.

- name: "Update kubeconfig to set cluster"
  shell: >
    kubectl config set-cluster {{ item.cluster }}
      --kubeconfig=~{{ item.account }}/.kube/config
      --server={{ K8S_MASTER_HOSTNAME }}:{{ K8S_API_SERCURE_PORT }}
      --embed-certs=true
      --certificate-authority={{ K8S_CA_HOME }}/ca.crt
  with_items: "{{ k8s_users }}"
Run Code Online (Sandbox Code Playgroud)

有没有办法允许这个?它会导致错误,并将每一行视为一个单独的命令.

"stderr": "/bin/sh: line 1: --kubeconfig=~centos/.kube/config: No such file or directory\n/bin/sh: line 2: --server=ip-172-31-4-117.us-west-1.compute.internal:6443: command not found\n/bin/sh: line 3: --embed-certs=true: command not found\n/bin/sh: line 4: --certificate-authority=/etc/kubernetes/pki/ca.crt: No such file or directory",
"stderr_lines": [
    "/bin/sh: line 1: --kubeconfig=~centos/.kube/config: No such file or directory",
    "/bin/sh: line 2: --server=ip-172-31-4-117.us-west-1.compute.internal:6443: command not found",
    "/bin/sh: line 3: --embed-certs=true: command not found",
    "/bin/sh: line 4: --certificate-authority=/etc/kubernetes/pki/ca.crt: No such file or directory"
],
Run Code Online (Sandbox Code Playgroud)

tec*_*raf 5

这是YAML语法,YAML中的缩进很重要.对于标记为>您的块标量,应使用单个缩进级别(否则YAML解析器将缩进行视为单独的缩进行):

- name: "Update kubeconfig to set cluster"
  shell: >
    kubectl config set-cluster {{ item.cluster }}
    --kubeconfig=~{{ item.account }}/.kube/config
    --server={{ K8S_MASTER_HOSTNAME }}:{{ K8S_API_SERCURE_PORT }}
    --embed-certs=true
    --certificate-authority={{ K8S_CA_HOME }}/ca.crt
  with_items: "{{ k8s_users }}"
Run Code Online (Sandbox Code Playgroud)

或者您可以使用普通样式流标量:

- name: "Update kubeconfig to set cluster"
  shell: kubectl config set-cluster {{ item.cluster }}
           --kubeconfig=~{{ item.account }}/.kube/config
           --server={{ K8S_MASTER_HOSTNAME }}:{{ K8S_API_SERCURE_PORT }}
           --embed-certs=true
           --certificate-authority={{ K8S_CA_HOME }}/ca.crt
  with_items: "{{ k8s_users }}"
Run Code Online (Sandbox Code Playgroud)