首页 > 解决方案 > Ansible中模板内的模板?

问题描述

我是 Ansible 的新手,我很难弄清楚如何让表达式起作用。我正在尝试运行一个引用字典变量的命令任务,其中我需要引用的键也是动态的。相关代码(格式化多行):

   tasks:
      - name: set volume
        command: az webapp config storage-account add --share-name shareName2 
                --access-key {{ kvsecrets['connectionstring-{{resources_name}}-key2'] }}

所以 kvsecrets 是由先前任务注册的字典,而 resources_name 是在剧本中进一步声明的变量。上面的语法不起作用,因为它输出 kvsecrets['connectionstring-{{resources_name}}-key2'] 而不进行内部转换。获取该字典键值的正确格式是什么?

谢谢!

标签: azureansibleazure-web-app-service

解决方案


Ansible 是 python 模块的包装器,并使用 jinja2 进行模板化。这个问题可以通过字符串连接来解决:

下面是一个例子:

注意:请注意双引号和单引号

tasks:
  - name: set volume
    command: az webapp config storage-account add --share-name shareName2 
             --access-key   {{ kvsecrets["'connectionstring-'+resources_name+'-key2'"]}} }}

推荐阅读