Ansible 如何将变量添加到前缀路径?

Ansible 如何将变量添加到前缀路径?,ansible,Ansible,表2.3 代码如下: - name: List keys simple s3: bucket: mybucket mode: list prefix: "/{{a}}/{{b}}/tmp/" register: foo - name: when you need the result debug: msg: 'print this' when: "{{foo.s3_keys |length}} > 0" 其中使用变量a和b 当:时,前

表2.3

代码如下:

- name: List keys simple
  s3:
    bucket: mybucket
    mode: list
    prefix: "/{{a}}/{{b}}/tmp/"
  register: foo

- name: when you need the result
  debug:
    msg: 'print this'
  when: "{{foo.s3_keys |length}} > 0" 

其中使用变量
a
b


当:时,前缀:和
是否可以避免双引号(
)呢?

如果字符串始终使用双引号,则可以避免许多常见错误。例如,这:

somestring: yes
实际上不会将
somestring
设置为字符串值
yes
(您实际上得到的是布尔值
true
)。这是:

somestring: 12:34
不会将
somestring
设置为字符串值
12:34
(您实际上会得到
754
)。换句话说,在许多情况下,您可能不希望使用双引号,因此当您有字符串值时,最好使用双引号


关于你的具体问题:

前缀:
的值不需要双引号。这很好:

- name: List keys simple
  s3:
    bucket: mybucket
    mode: list
    prefix: /{{a}}/{{b}}/tmp/
  register: foo
这是因为该值不以与YAML有任何特殊会议的字符开头


另一方面,您需要在
when:
语句中使用双引号,因为该值以
{
开头,这在YAML中表示字典的开头。

为什么您关心双引号?@larsks因为我不想使用双引号,当我不需要它时,花括号之间的空格呢?
{{a}
{{a}
这两个表达式是相同的。