0

嗨,我有一个看起来像这样的 YAML 文件 -

- name: Name 1
  url: http://localhost:8080/page1
- name: Name 2
  url: http://localhost:8080/page2
- name: Name 3
  url: http://localhost:8080/page3

如您所见,这http://localhost:8080/是该url属性的一个公共部分。有没有办法声明一个变量hostname并在文件中重用它?

我浏览了这个文档并尝试了以下方法,但它不起作用 -

- hostname: "{{http://localhost:8080}}"
- name: Name 1
  url: {{hostname}}/page1
- name: Name 2
  url: {{hostname}}/page2
- name: Name 3
  url: {{hostname}}/page3

但这不起作用。帮助!

4

2 回答 2

1

例如,剧本

- hosts: localhost
  vars:
    hostname: "http://localhost:8080"
    l1:
      - name: Name 1
        url: "{{ hostname }}/page1"
      - name: Name 2
        url: "{{ hostname }}/page2"
      - name: Name 3
        url: "{{ hostname }}/page3"
  tasks:
    - debug:
        var: l1

ok: [localhost] => 
  l1:
  - name: Name 1
    url: http://localhost:8080/page1
  - name: Name 2
    url: http://localhost:8080/page2
  - name: Name 3
    url: http://localhost:8080/page3

当您将列表中的项目放入文件时,例如

shell> cat name-url.yml
- name: Name 1
  url: "{{ hostname }}/page1"
- name: Name 2
  url: "{{ hostname }}/page2"
- name: Name 3
  url: "{{ hostname }}/page3"

使用查找插件 模板并将 YAML 字符串转换为列表,例如下面的剧本给出了相同的结果

- hosts: localhost
  vars:
    hostname: "http://localhost:8080"
  tasks:
    - set_fact:
        l1: "{{ lookup('template', 'name-url.yml')|from_yaml }}"
    - debug:
        var: l1
于 2021-07-14T12:28:27.807 回答
0

我想把这个建议扔进去,看起来你正在为你正在拍摄快照的网站的基本 URL 做这个。您可以将--base-url标志传递给snapshot命令:

$ npx percy snapshot --base-url http://localhost:8080 snapshots.yml

snapshots.yml可能:

- name: Name 1
  url: /page1
- name: Name 2
  url: /page2
- name: Name 3
  url: /page3

## or

- url: /page1
- url: /page2
- url: /page3

相关 Percy CLI PR

于 2021-07-27T15:09:17.247 回答