线路太长:Ansible lint
Line too long: Ansible lint
这是我的ansible代码
- name: no need to import it.
ansible.builtin.uri:
url: >
https://{{ vertex_region }}-aiplatform.googleapis.com/v1/projects/{{ project }}/locations/{{ vertex_region }}/datasets/{{ dataset_id }}/dataItems
method: GET
headers:
Content-Type: "application/json"
Authorization: Bearer "{{ gcloud_auth }}"
register: images
在检查 Ansible lint 时,它溢出 行太长(151 > 120 个字符)(行长度)
错误是针对代码的 uri 部分。我已经使用 > 来分解 uri,不知道如何进一步减少它以适应 ansible lint 给出的行约束?
如果您想遵守 lint 行长度规则,您需要将 url 分成几行。
>
是 yaml 折叠标量块指示符:新行将被空格替换。这不是你想要的。
此处最好的解决方案是使用双引号流标量,您可以在其中转义新行,这样它们就不会转换为空格,例如:
url: "https://{{ vertex_region }}-aiplatform.googleapis.com/v1/projects/\
{{ project }}/locations/{{ vertex_region }}/datasets/{{ dataset_id }}/dataItems"
如果仍然太长,您可以添加任意数量的转义新行。
https://yaml-multiline.info/ 是学习 yaml 中多行字符串的所有可能性的好资源。
因为它是一个 URL 并且空格应该已经被 URL 编码,你可以使用 YAML folded style — >
— with a clip block chomping indicator — -
— along with Jinja whitespace control 的组合 - {{- ... -}}
.
所有这些都可以分成多行,如:
- ansible.builtin.uri:
url: >-
https://
{{- vertex_region -}}
-aiplatform.googleapis.com/v1/projects/
{{- project -}}
/locations/
{{- vertex_region -}}
/datasets/
{{- dataset_id -}}
/dataItems
对于不包含任何 Jinja 语句或表达式的长行,请参阅 ,或者使用 Jinja 注释块和空格控制:
- ansible.builtin.uri:
url: >-
https://this_is_a_super_long_url_
{#- -#}
that_looks_like_it_cannot_be_split_
{#- -#}
into_multiples_lines_is_it_
{#- -#}
question_mark.co.uk
鉴于任务:
- name: Demo debug with variable
ansible.builtin.debug:
msg: >-
https://
{{- vertex_region -}}
-aiplatform.googleapis.com/v1/projects/
{{- project -}}
/locations/
{{- vertex_region -}}
/datasets/
{{- dataset_id -}}
/dataItems
vars:
vertex_region: foo_region
dataset_id: bar_id
project: bar_project
- name: Demo debug without variable
ansible.builtin.debug:
msg: >-
https://this_is_a_super_long_url_
{#- -#}
that_looks_like_it_cannot_be_split_
{#- -#}
into_multiples_lines_is_it_
{#- -#}
question_mark.co.uk
这给出:
TASK [Demo debug with variable] ******************************************************************
ok: [localhost] =>
msg: https://foo_region-aiplatform.googleapis.com/v1/projects/bar_project/locations/foo_region/datasets/bar_id/dataItems
TASK [Demo debug without variable] ***************************************************************
ok: [localhost] =>
msg: https://this_is_a_super_long_url_that_looks_like_it_cannot_be_split_into_multiples_lines_is_it_question_mark.co.uk
这是我的ansible代码
- name: no need to import it.
ansible.builtin.uri:
url: >
https://{{ vertex_region }}-aiplatform.googleapis.com/v1/projects/{{ project }}/locations/{{ vertex_region }}/datasets/{{ dataset_id }}/dataItems
method: GET
headers:
Content-Type: "application/json"
Authorization: Bearer "{{ gcloud_auth }}"
register: images
在检查 Ansible lint 时,它溢出 行太长(151 > 120 个字符)(行长度)
错误是针对代码的 uri 部分。我已经使用 > 来分解 uri,不知道如何进一步减少它以适应 ansible lint 给出的行约束?
如果您想遵守 lint 行长度规则,您需要将 url 分成几行。
>
是 yaml 折叠标量块指示符:新行将被空格替换。这不是你想要的。
此处最好的解决方案是使用双引号流标量,您可以在其中转义新行,这样它们就不会转换为空格,例如:
url: "https://{{ vertex_region }}-aiplatform.googleapis.com/v1/projects/\
{{ project }}/locations/{{ vertex_region }}/datasets/{{ dataset_id }}/dataItems"
如果仍然太长,您可以添加任意数量的转义新行。
https://yaml-multiline.info/ 是学习 yaml 中多行字符串的所有可能性的好资源。
因为它是一个 URL 并且空格应该已经被 URL 编码,你可以使用 YAML folded style — >
— with a clip block chomping indicator — -
— along with Jinja whitespace control 的组合 - {{- ... -}}
.
所有这些都可以分成多行,如:
- ansible.builtin.uri:
url: >-
https://
{{- vertex_region -}}
-aiplatform.googleapis.com/v1/projects/
{{- project -}}
/locations/
{{- vertex_region -}}
/datasets/
{{- dataset_id -}}
/dataItems
对于不包含任何 Jinja 语句或表达式的长行,请参阅
- ansible.builtin.uri:
url: >-
https://this_is_a_super_long_url_
{#- -#}
that_looks_like_it_cannot_be_split_
{#- -#}
into_multiples_lines_is_it_
{#- -#}
question_mark.co.uk
鉴于任务:
- name: Demo debug with variable
ansible.builtin.debug:
msg: >-
https://
{{- vertex_region -}}
-aiplatform.googleapis.com/v1/projects/
{{- project -}}
/locations/
{{- vertex_region -}}
/datasets/
{{- dataset_id -}}
/dataItems
vars:
vertex_region: foo_region
dataset_id: bar_id
project: bar_project
- name: Demo debug without variable
ansible.builtin.debug:
msg: >-
https://this_is_a_super_long_url_
{#- -#}
that_looks_like_it_cannot_be_split_
{#- -#}
into_multiples_lines_is_it_
{#- -#}
question_mark.co.uk
这给出:
TASK [Demo debug with variable] ******************************************************************
ok: [localhost] =>
msg: https://foo_region-aiplatform.googleapis.com/v1/projects/bar_project/locations/foo_region/datasets/bar_id/dataItems
TASK [Demo debug without variable] ***************************************************************
ok: [localhost] =>
msg: https://this_is_a_super_long_url_that_looks_like_it_cannot_be_split_into_multiples_lines_is_it_question_mark.co.uk